Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
Dbogdan27
10 / 10 / 1
Регистрация: 10.02.2013
Сообщений: 87
1

Проблемы с реализацией итерфейса для родительской и дочерней таблиц

15.08.2013, 20:09. Просмотров 550. Ответов 7
Метки нет (Все метки)

Здравствуйте уважаемы форумчане, прошу вашей помощи...
У меня есть список отделений, которые делают заказы (отображены в dataGridView, подгружаются из базы). При двойном нажатии на строку этого грида открывается другая форма с таблицей со списком заказов этого отделения.
Упрощённый вариант:
Таблица Order:
orderID | branchTitle | date |
----------------------------
Таблица Order_details:
orderDetails ID | orderID | note |
-------------------------------
связь один ко многим.... Причём помимо того что данные торой таблице должны соответствовать только одной записи первой, эта родительская запись, в константном виде должна ещё отображаться на этой форме.
Что то типа

branchTitle: .... date ....
А затем грид с нужными мне записями, которые соответствуют единственной записи родительской таблицы.

Вопрос в том правильный ли метод работы я выбрал :
1) Обрабатываю событие DoubleClickCell компонента dataGridView1 : получаю значение ячейки orderID, создаю экземпляр второй формы и в качестве конструктора передаю значение этой ячейки.
2) Во втором форме в DataAdapter добавляю параметризованный запрос для родительской таблицы : SELECT .... WHERE orderID = @orderID, выберется всего ода запись, она и будет заголовком формы.
3) Ну и делаю опять же параметризованный запрос дочерних данных.
Мне просто сказали сделать наподобие интерфейса 1C там есть список документов, и при нажатии на запись, открывается вторая форма где есть много записей соответствующих этому документу, может кто видел...
И вот вообще это так делается или может как то иначе?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.08.2013, 20:09
Ответы с готовыми решениями:

Отображение родительской и дочерней таблиц в Datagrid'ах
Уважаемые программисты, расчитываю на вашу помощь!:) Существует БД с двумя...

Заполнение TextBox на дочерней форме из DataGridView на родительской
динамически создается БД(SQLite), динамически создается dataGridView. во время...

Как сделать так, чтобы границы дочерней формы не "уходили" за границы родительской
Всем доброго времени суток! Возник следующий вопрос. Создаю MDI-приложение....

Перемещение родительской и дочерней формы
Есть две формы. Как сделать так, чтобы при перемещении одной формы, вторая...

Закрепление дочерней формы к родительской
Как сделать так, чтобы при открытии дочерней формы она: 1. Открывалась на...

7
Cupko
447 / 437 / 124
Регистрация: 17.07.2012
Сообщений: 1,309
Записей в блоге: 1
Завершенные тесты: 2
16.08.2013, 09:44 2
Цитата Сообщение от Dbogdan27 Посмотреть сообщение
2) Во втором форме в DataAdapter добавляю параметризованный запрос для родительской таблицы : SELECT .... WHERE orderID = @orderID, выберется всего ода запись, она и будет заголовком формы.
Если вам для заголовка достаточно данных из первого грида, то передавайте DataRow, тогда можно избавиться от лишнего запроса, если же нет - то всё, вцелом, правильно.
1
Dbogdan27
10 / 10 / 1
Регистрация: 10.02.2013
Сообщений: 87
16.08.2013, 12:01  [ТС] 3
Цитата Сообщение от Cupko Посмотреть сообщение
Если вам для заголовка достаточно данных из первого грида, то передавайте DataRow, тогда можно избавиться от лишнего запроса, если же нет - то всё, вцелом, правильно.
Простите, а вы случайно не знаете как можно сделать выборку из связных таблиц в текущий DataAdapter, а то мне DataColumnType приходится устанавливать ComboBox чтобы вместо ID подставлять справочную информацию...
0
Learx
1045 / 852 / 194
Регистрация: 31.03.2010
Сообщений: 2,487
16.08.2013, 12:08 4
1.
1) храним обе полные таблицы в DataSet статическом(если только там не 100 тыщ строк, конечно)
2) во вторую форму передаем DataRow как говорилось ранее
3) по полученным данным для DataTable заказов ставим RowFilter
2. Использование comboboxColumn удобно(можно DisaplayStyle указать Nothing) , но если не устраивает, то чно мешает выполнить запрос с join и выборку значений вместо ключей?
T-SQL
1
Select branchTitle, [date], note from Order as O inner join Order_details as OD on O.orderID =OD.orderID
1
Dbogdan27
10 / 10 / 1
Регистрация: 10.02.2013
Сообщений: 87
16.08.2013, 12:40  [ТС] 5
Цитата Сообщение от Learx Посмотреть сообщение
1.
1) храним обе полные таблицы в DataSet статическом(если только там не 100 тыщ строк, конечно)
2) во вторую форму передаем DataRow как говорилось ранее
3) по полученным данным для DataTable заказов ставим RowFilter
2. Использование comboboxColumn удобно(можно DisaplayStyle указать Nothing) , но если не устраивает, то чно мешает выполнить запрос с join и выборку значений вместо ключей?
Спасибо большое за Display Style. Это решило мою проблему
Позволю себе задать Вам ещё 1 вопрос...
предположим у меня есть справочная таблица с медикаментами,
и есть таблица orderDetails, где хранится только medID, они связаны один ко многим, получается если вместо medID я хочу отобразить половину справочной таблицы, то нужно в orderDetailsTableAdapter делать запрос с INNER JOIN ?

Добавлено через 24 минуты
MySQL
1
2
3
SELECT `medications_order_details`.`Order_details_id`, `medications_order_details`.`Order_id`, `medications_order_details`.`Med_id`, `medications_order_details`.`Count` FROM `medications_order_details`
INNER JOIN `medications` ON `medications_order_details`.`Med_id` = `medications`.`Med_id`
WHERE   `medications_order_details`.`Order_id` = @orderID
Вот такой запрос я написал в DataAdapter прошло всё хорошо, но как отображал Med_id так и отображает...
0
Learx
1045 / 852 / 194
Регистрация: 31.03.2010
Сообщений: 2,487
16.08.2013, 12:43 6
попробуйте выполнить запрос - увидите результат. данный подход не подходит один ко многим так как создает на каждое значение дочерней таблицы новую строку с повторяющимися данными главной таблицы.

Добавлено через 2 минуты
просто не указывайте med_id или укажите для столбца DataGridView значение Visible = false(после привязки данных если используется автоматическая генерация столбцов, или в правке столбцов если используете DataPropertyName для привязки уже существующих столбцов)
1
Dbogdan27
10 / 10 / 1
Регистрация: 10.02.2013
Сообщений: 87
16.08.2013, 12:56  [ТС] 7
Цитата Сообщение от Learx Посмотреть сообщение
попробуйте выполнить запрос - увидите результат. данный подход не подходит один ко многим так как создает на каждое значение дочерней таблицы новую строку с повторяющимися данными главной таблицы.

Добавлено через 2 минуты
просто не указывайте med_id или укажите для столбца DataGridView значение Visible = false(после привязки данных если используется автоматическая генерация столбцов, или в правке столбцов если используете DataPropertyName для привязки уже существующих столбцов)
Я запрос как то не так составил, он вообще не соединяет таблицы, т.е как была структура раньше так и осталась и из таблицы medications не выбрался ни один столбец...

Добавлено через 10 минут
Хотя если я бы сделал так, то как себя поведут INSERT и UPDATE, мне ведь нужно чтобы записывалась в базу только Med_id но при этом отображалось всё подробно...
0
Learx
1045 / 852 / 194
Регистрация: 31.03.2010
Сообщений: 2,487
16.08.2013, 13:13 8
так вы просто не указали ни одного столбца из medications в Select
Цитата Сообщение от Dbogdan27 Посмотреть сообщение
как себя поведут INSERT и UPDATE
я этого не знаю. я пишу sql-команды ручками и сам указываю что обновлять.
0
16.08.2013, 13:13
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.08.2013, 13:13

Отображение дочерней и родительской форм
Привет всем, подскажите как реализовать: по щелчку кнопки на главной...

Вызов события в дочерней форме из родительской
Добрый день. Есть две формы: Form1 - родительская и Form2 - дочерняя. Мне...

Правильное отображение дочерней формы в родительской
Доброго времени суток! Проблема в следующем: Существует родительская форма с...


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

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

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