![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Изменяемые сложные запросы [D7, XP]
Megabyte © (2006-09-28 11:39:00)СУБД FireBird 2.0
Компоненты IBX
Суть: У ИБ_Датасета есть свойства: ModifySQL, InsertSQL, DeleteSQL,
RefreshSQL.
Датасет связан с DBGrid. В него пользователь вносит изменения. Если DBGrid отображает данные с одной таблицы, то как заполнять эти свойства, мне понятно.
Не могу понять, как оформить SQL-запросы, если у меня DBGrid отображает данные, например, с 2-х таблиц.
Дано:
Таблица "Оборудование": Парт-номер, ID_Категории, Описание(eng), Описание(рус), Примечание.
Таблица "Категории": ID_Категории, Название_категории.
DBGrid отображает: Парт-номер, Название_категории, Описание(eng), Описание(рус), Примечание.
Пример:
update OBORUDOVANIE set PART_NUM = :PART_NUM,
NAME_TYPE = :NAME_TYPE, Eng_Description = :Eng_Description,
Rus_Description = :Rus_Description, Primechanie = :Primechanie
where PART_NUM = :OLD_PART_NUM and NAME_TYPE = :OLD_NAME_TYPE and
Eng_Description = :OLD_Eng_Description and Rus_Description = :OLD_Rus_Description and Primechanie = :OLD_Primechanie
Это код, сгенерированный IB_UpdateObject, естественно неправильный. Как я это примерно понимаю:
update OBORUDOVANIE set PART_NUM = :PART_NUM,
Type_Oborud = (select T.Id_Type from Type_Oborudovania T
where T.NAME_TYPE = :NAME_TYPE), Eng_Description = :Eng_Description,
Rus_Description = :Rus_Description, Primechanie = :Primechanie
where PART_NUM = :OLD_PART_NUM and
Eng_Description = :OLD_Eng_Description and Rus_Description = :OLD_Rus_Description
and Primechanie = :OLD_Primechanie and Type_Oborud = (select T.Id_Type from
Type_Oborudovania T where T.NAME_TYPE = :OLD_NAME_TYPE)
Это тоже не правильно, но это примерно то, что мне надо наверное(ругается, что поле NAME_TYPE неизвестно :( )...
Подскажите, как правильно оформить?
Desdechado (2006-09-28 13:36:00) [21]если запрос на сохранение данных сложный или из нескольких этапов, заверни вызов в хранимку и подставляй ее
ЮЮ (2006-09-28 12:00:00) [22]Cktletn Название_категории сделать Lookup полем. Добавлять в запрос вторую таблицу следует, только если требуется сортировка по этому полю, да и то поля из неё в DataSet тянуть не следует