Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Изменяемые сложные запросы [D7, XP]


Страницы:   1 2

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 тянуть не следует


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо