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

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

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

Студворк — интернет-сервис помощи студентам
Пишу тестовую программу на 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
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.09.2021, 00:34
Ответы с готовыми решениями:

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

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

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

40
 Аватар для Andrey-MSK
3397 / 2283 / 388
Регистрация: 14.08.2018
Сообщений: 7,758
Записей в блоге: 4
11.10.2021, 11:13
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от ipsorokin Посмотреть сообщение
смысл проверки?
Если не сделать проверку, то при DbNull вылетит исключение.

Добавлено через 55 секунд
Цитата Сообщение от Usaga Посмотреть сообщение
Странная проверка)
Для string достаточно, для чисел идет с DbNull
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.10.2021, 11:13

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
41
Ответ Создать тему
Новые блоги и статьи
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru