Сетка БД: Как использовать столбец текущей строки одного в качестве индекса в другой?

Я не уверен, что название вопроса достаточно ясное, пожалуйста, не стесняйтесь редактировать его.

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

Когда пользователь выбирает строку в первой таблице (давайте назовем ее oders), Я хочу обновить вторую информацию о любых строках, соответствующих столбцу выбранной строки первой таблицы.

Скажем, например, эта таблица orders имеет колонку customer_id и я хочу заполнить вторую таблицу (давайте назовем это order_details) с подробностями всех заказов от этого клиента, один заказ на строку.

Я могу подключить 2 @ источник данных, запрос и подключение к двум TDbGridс, но я застрял в том, как кодировать order_details SQL.

SQL для orders просто SELECT * from ordersа другой?

Я хочу что-то вроде SELECT * from order_details WHERE cutomer_id=<orderQuery>.currentRow.FieldByName("customer_id").AsInteger - но я не знаю, как это сделать...

Может ли кто-нибудь помочь мне с кодом Delphi?

Кроме того, как только я установлю эти отношения, выберу новую строку в orders Сетка БД автоматически обновляет order_details Сетка БД? Или мне нужно добавить код для этого.

Ps я знаю что нет books теги (больше жаль), но может ли кто-нибудь порекомендовать хорошую книгу, которая объясняет основы программирования элементов управления с учетом БД? Я явно нуждаюсь в этом. Спасибо

1 ответ

Решение

Используйте параметризованный запрос для подробной (дочерней) базы данных:

SELECT * FROM Order_Details od WHERE od.CustomerID = :CustomerID

Затем установите дочерний запрос MasterSource к родителю (Order) источник данных, а MasterFields в CustomerID, (Если есть несколько столбцов, которые связывают два, разделите их ;, как в CustomerID;OrderNumber.)

Каждый раз, когда вы прокручиваете родительский элемент (изменяете выбранную запись в родительском DBGrid), дочерний запрос будет выполняться с идентификатором родительской строки, автоматически передаваемым в качестве параметра.

Другие вопросы по тегам