Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
jester
1 / 1 / 1
Регистрация: 18.03.2016
Сообщений: 88
Завершенные тесты: 2
1

Обновление данных в связанной таблице

18.12.2017, 20:48. Просмотров 842. Ответов 5
Метки нет (Все метки)

Есть 3 таблицы: товары, поставщики, контракты.
Контракты содержат ключи для связи с товарами и поставщиками.
Нужно вывести контракты так, чтобы пользователь видел названия товаров и поставщиков а сохранялись их первичные ключи.
Обновление данных в связанной таблице

Как это можно сделать?
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.12.2017, 20:48
Ответы с готовыми решениями:

Обновление DataGridView при изменении информации в связанной таблице
Здравствуйте. У меня есть Form1 и на ней главная таблица.В ней есть поле подстановочное поле...

Вставку в базу даннных. Для обеспечения целостности данных необходимо наличие связанной записи в таблице
private void btnInsert_Click(object sender, EventArgs e) { ...

Эффективное обновление данных в таблице
есть таблица на SQL Server есть прога для ее редактирования суть в том что редактировать ее могут...

DataGridView обновление данных в таблице
Доброго времени суток. Я хотел в программе сделать чтобы все изменения сделанные в dgv сохранялись...

OleDB Обновление данных в таблице DateGridView
Здравствуйте, помогите пожалуйста. Есть в БД oracle таблица prt_8. Как реализовать обновление...

5
Козадоев
112 / 108 / 26
Регистрация: 05.03.2013
Сообщений: 613
19.12.2017, 08:04 2
Лучший ответ Сообщение было отмечено jester как решение

Решение

Простой вариант - иметь еще скрытый столбец с ID товара. Пользователю вы отображаете название товара. А в таблицу сохраняете измененный ID.
1
jester
1 / 1 / 1
Регистрация: 18.03.2016
Сообщений: 88
Завершенные тесты: 2
19.12.2017, 08:44  [ТС] 3
Козадоев, а по другому нельзя никак?
0
Козадоев
112 / 108 / 26
Регистрация: 05.03.2013
Сообщений: 613
19.12.2017, 08:48 4
Цитата Сообщение от jester Посмотреть сообщение
Козадоев, а по другому нельзя никак?
Можно посредством связей в таблицах, специальных запросах. Но это сложнее.
1
hoolygan
356 / 283 / 76
Регистрация: 21.06.2016
Сообщений: 1,115
19.12.2017, 10:18 5
jester, А чем так не понравился вариант скрытых столбиков?
Просто update команду/delete/insert команды нужно немного по-другому построить, используя внешние ключи вместо значений. И это будет работать на порядок быстрее, чем если будете строить внутренние запросы, сравнивая значения на связанных таблицах и узнавая их ключи во время insert/update.
1
jester
1 / 1 / 1
Регистрация: 18.03.2016
Сообщений: 88
Завершенные тесты: 2
19.12.2017, 19:56  [ТС] 6
Козадоев, hoolygan,
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
if (con.State == ConnectionState.Closed)
                con.Open();
            string query = "SELECT C.IdImplementer, I.CompanyName, C.IdProduct, P.Name, C.QuantityOfGoods, C.TransactionDate "
                + "FROM  Contracts C Inner Join Implementers I on C.IdImplementer=I.Id Inner Join Products P on C.IdProduct=P.Id";
            SqlDataAdapter sqlDa = new SqlDataAdapter(query, con);
            sqlDa.SelectCommand.CommandType = CommandType.Text; //по умолчанию
            DataTable dtbl = new DataTable();
            sqlDa.Fill(dtbl);
            con.Close();
            bindingSource1.DataSource = dtbl;
            dataGridView1.DataSource = bindingSource1;
 
//Подключаю отдельные элементы к таблице
            dateTimePicker1.DataBindings.Add(new Binding("Text", bindingSource1, "TransactionDate"));//[Дата заключения сделки]
            numericUpDown1.DataBindings.Add(new Binding("Text", bindingSource1, "QuantityOfGoods"));//[Дата заключения сделки]
            comboBox1.DataBindings.Add(new Binding("Text", bindingSource1, "CompanyName"));//Имя поставщика
            comboBox2.DataBindings.Add(new Binding("Text", bindingSource1, "Name"));//Наименование товара
            comboBox1.DataBindings.Add(new Binding("SelectedValue", bindingSource1, "IdImplementer"));//Имя поставщика
            comboBox2.DataBindings.Add(new Binding("SelectedValue", bindingSource1, "IdProduct"));//Наименование товара
Всё вроде нормально, но должна быть кнопка сохранения похожая на ту что создаётся в навигаторе если делать это всё перетаскиванием таблицы из источника данных.

И для неё нужно поменять добавление, удаление, сохранения что бы оно работало для таблицы контракты.

Помогите пожалуйста)
0
19.12.2017, 19:56
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.12.2017, 19:56

Удаление записи в связанной таблице
Есть две таблицы, которые связаны связью один к многим. С помощью команды вытягиваю и показываю в...

Выпадающий список в ячейке DataGrid для данных из связанной таблицы
Здравствуйте! Имеется БД MSSQLServer 2012. Там связанные таблицы: Сотрудники, Должности. Соединил...

Невозможно добавление или изменение записи. Для обеспечения целостности данных необходимо наличие связанной записи
Здравствуйте, дорогие форумчане. Пытаюсь создать приложение для работы с БД Access. Исходник...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru