Форум программистов, компьютерный форум, киберфорум
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.83/30: Рейтинг темы: голосов - 30, средняя оценка - 4.83
1 / 1 / 0
Регистрация: 25.09.2021
Сообщений: 21
1

Проблема вставки/удаления/редактирования данных в подчиненную таблицу

26.09.2021, 00:34. Показов 5559. Ответов 40
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Пишу тестовую программу на C# (VisualStudio 2019 Enterprise) для работы с базой Access. Связи с двумя таблицами сделаны на уровне МАСТЕРА при работе с компонентами, то есть без личного написания кода. А вот вставку, редактирование, удаление пишу самостоятельно. Прошу обратить внимание на комментарий в исходнике - "// Работает НЕПРАВИЛЬНО!!!!!!!!!!!!!! Надо исправить. " Если можно и несложно, помогите мне исправить ошибки, не переделывая глобально весь проект. Я по шагам потом себе усложняю все задачи и переделаю код в лучший вариант для серьезных проектов. Что сейчас это для самостоятельного разбора и изучения в программирования баз данных на C#. Другие недостатки такие как повторение строк подключения в разных местах - это можно позже исправить и сократить код. Буду благодарен, если реализуете удаление и обновление(редактирование). Я понял, что в случае в связанных с несколькими таблицами мне не реализовать. Нашел в инете гору примеров, но там имена таблиц, полей, и прочее очень схожие, например, имя таблицы и имя поля совпадают или похожи... В результате я не смог воспользоваться их примерами. Очень неудачные примеры. В моем примере все имена отличаются.... Хотя бы даст толчок, чтобы прояснить что и с чем соединять....

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
using System;
using System.Data;
using System.Data.OleDb;
using System.Windows.Forms;
 
namespace ExampleDB4
{
    public partial class Form1 : Form
    {
        private OleDbConnection con;
        private OleDbCommand cmd;
        private OleDbDataAdapter da;
        private DataSet ds;
 
        public Form1()
        {
            InitializeComponent();
        }
        //---------------------------------------------------------------------
        private void UpdateDataObject() // Работает ПРАВИЛЬНО.
        {
            con = new OleDbConnection(@"Provider = Microsoft.ACE.OLEDB.12.0; Data Source =C:\Users\LEGION\source\repos\ExampleDB4\ExampleDB4\Example100.accdb");
            da = new OleDbDataAdapter("SELECT * FROM MyTable1", con);
            ds = new DataSet();
            con.Open();
            da.Fill(ds, "MyTable1");
            dataGridView1.DataSource = ds.Tables["MyTable1"];
            con.Close();
 
        }
        //---------------------------------------------------------------------
        private void UpdateDataClass() // Работает НЕПРАВИЛЬНО!!!!!!!!!!!!!! Надо исправить.
        {                               // Это обновление данных подчиненной таблицы 2
            con = new OleDbConnection(@"Provider = Microsoft.ACE.OLEDB.12.0; Data Source =C:\Users\LEGION\source\repos\ExampleDB4\ExampleDB4\Example100.accdb");
            //da = new OleDbDataAdapter("SELECT * FROM MyTable2", con); // Не работает
            da = new OleDbDataAdapter("SELECT * FROM MyTable2 where MyObject=(Select MyObject From MyTable1)", con); // тоже не работает, из за нее ниже ошибка появляется
            ds = new DataSet();
            con.Open();
            da.Fill(ds, "MyTable2");
            dataGridView1.DataSource = ds.Tables["MyTable2"];
            con.Close();
        }
        //---------------------------------------------------------------------
        private void Form1_Load(object sender, EventArgs e) // Работает ПРАВИЛЬНО. Сформировано автоматически, кроме 2 последних строк.
        {
            // TODO: данная строка кода позволяет загрузить данные в таблицу "example100DataSet.MyTable2". При необходимости она может быть перемещена или удалена.
            this.myTable2TableAdapter.Fill(this.example100DataSet.MyTable2);
            // TODO: данная строка кода позволяет загрузить данные в таблицу "example100DataSet.MyTable1". При необходимости она может быть перемещена или удалена.
            this.myTable1TableAdapter.Fill(this.example100DataSet.MyTable1);
 
            dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
            dataGridView2.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
        }
        //---------------------------------------------------------------------
        private void Button1_Click(object sender, EventArgs e)  // Работает ПРАВИЛЬНО.
        {
            string query = "Insert into MyTable1(MyObject) values (@mObj)";
            try
            {
                con = new OleDbConnection(@"Provider = Microsoft.ACE.OLEDB.12.0; Data Source =C:\Users\LEGION\source\repos\ExampleDB4\ExampleDB4\Example100.accdb");
                cmd = new OleDbCommand(query, con);
                cmd.Parameters.AddWithValue("@mObj", textBox1.Text);
                con.Open();
                cmd.ExecuteNonQuery();
                con.Close();
            }
            catch (Exception Err)
            {
                MessageBox.Show(Err.Message);
            }
 
            UpdateDataObject();
        }
        //---------------------------------------------------------------------
        private void Button2_Click(object sender, EventArgs e)  // Работает НЕПРАВИЛЬНО!!!!!!!!!!!!!! Надо исправить.
        {
            string query = "Insert into MyTable2(MyClass) SELECT @mObj FROM MyTable1(MyObject) values (@mObj, mClass)"; // Основная ОШИБКА!!!!!!!!!!!
            try
            {
                con = new OleDbConnection(@"Provider = Microsoft.ACE.OLEDB.12.0; Data Source =C:\Users\LEGION\source\repos\ExampleDB4\ExampleDB4\Example100.accdb");
                cmd = new OleDbCommand(query, con);
                cmd.Parameters.AddWithValue("@mObj", dataGridView1.CurrentCell.Value.ToString()); //???????
                cmd.Parameters.AddWithValue("@mClass", textBox2.Text);                            //???????
 
                con.Open();
                cmd.ExecuteNonQuery();
                con.Close();
            }
            catch (Exception Err)
            {
                MessageBox.Show(Err.Message);
            }
 
            //UpdateDataClass();    // Эту функцию надо тоже исправить!!!!!!
        }
 
        private void DataGridView1_Click(object sender, EventArgs e)  // Работает ПРАВИЛЬНО.
        {
            //---------------
            try
            {
                textBox1.Text = dataGridView1.CurrentRow.Cells[0].Value.ToString();
            }
            catch (Exception Err)
            {
                textBox1.Text = "Error READY!!!!";
                MessageBox.Show(Err.Message);
            }
            //---------------
            try
            {
                textBox2.Text = dataGridView2.CurrentRow.Cells[0].Value.ToString();
            }
            catch (Exception Err)
            {
                textBox2.Text = "Error READY!!!!";
                MessageBox.Show(Err.Message);
            }
            //---------------
            try
            {
                textBox3.Text = dataGridView2.CurrentRow.Cells[1].Value.ToString();
            }
            catch (Exception Err)
            {
                textBox3.Text = dataGridView1.CurrentRow.Cells[0].Value.ToString(); //"Error READY!!!!" - было, изменил на автовставку из 1 таблицы;
                MessageBox.Show(Err.Message);
            }
            //---------------
        }
        //---------------------------------------------------------------------
 
    }
}
Миниатюры
Проблема вставки/удаления/редактирования данных в подчиненную таблицу   Проблема вставки/удаления/редактирования данных в подчиненную таблицу   Проблема вставки/удаления/редактирования данных в подчиненную таблицу  

Вложения
Тип файла: rar ExampleDB4.rar (82.3 Кб, 8 просмотров)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.09.2021, 00:34
Ответы с готовыми решениями:

Программа с типизированным файлом с режимами создания, сортировки, поиска по ключу, редактирования, вставки, удаления
нужна программа с типизированным файлом с режимами создание,сортировка,поиск по ключу,...

Добавление данных в подчиненную таблицу
Есть БД в Acces там созданно 3 таблицы. 1 главная. и 2 подчиненные к ней. связанные по полю Id и...

Сортировка данных в подчиненную таблицу
Уважаемые пользователи форума Прошу вашей помощи в разрешении проблемы возникшей при создании...

Автоматическое добавление данных в подчиненную таблицу
Приветствую Есть такая проблема Есть две формы, главная и подчиненная В главной форме в поле...

40
2304 / 1667 / 326
Регистрация: 14.08.2018
Сообщений: 5,485
Записей в блоге: 4
11.10.2021, 11:13 41
Author24 — интернет-сервис помощи студентам
Цитата Сообщение от ipsorokin Посмотреть сообщение
смысл проверки?
Если не сделать проверку, то при DbNull вылетит исключение.

Добавлено через 55 секунд
Цитата Сообщение от Usaga Посмотреть сообщение
Странная проверка)
Для string достаточно, для чисел идет с DbNull
0
11.10.2021, 11:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.10.2021, 11:13
Помогаю со студенческими работами здесь

Внесение данных из списка в подчиненную таблицу
Доброго дня профессионалам ! Подскажите как внести данные с формы на которой находится список, в...

Ошибка при сохранении данных в подчиненную таблицу
День добрый, помогите разобраться с ошибкой. В подчиненную таблицу ввожу данные, ключ автоматически...

Создание базы данных с функциями ввода, вывода, редактирования, удаления или добавления данных
Задание заключается в создании базы данных с функциями ввода, вывода, редактирования, удаления или...

Пример добавления, удаления и редактирования данных в БД *.mbd
нужен пример добавления, удаления и редактирования данных в БД *.mbd через классы...

Форма для добавления, редактирования, удаления данных
Уважаемые форумчане, подскажите, как лучше сделать и правильнее! В форме "Органы исполнительной...

Подскажите простую среду разработки интерфейса, редактирования и удаления данных
Привет! подскажите, пожалуйста , простую среду разработки интерфейсна, редактирования и удаления...

Выбор структуры данных для вставки, удаления и поиска минимума за log(n)
Добрый день!Подскажите какую нибудь структуру, чтобы были операции: вставка,удаление,и поиск...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
41
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru