Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.03.09;
Скачать: CL | DM;

Вниз

FibDataSet   Найти похожие ветки 

 
User_OKA   (2004-02-09 10:30) [0]

Имеем: D1 as TpFIBdataSet, D2 as TpFIBDataSet,
при этом D1 - master, D2 - detail
Возмоно ли для датасета D2 написать запрос InsertSQL, чтобы мастер - поле заполнялось автоматически?


 
Johnmen ©   (2004-02-09 10:42) [1]

Возможно.


 
User_OKA   (2004-02-09 10:43) [2]

а как?


 
Johnmen ©   (2004-02-09 10:51) [3]

... (...,REF_FIELD_D2_TO_D1,...) VALUES(...,:ID_FIELD_D1,...)
где ID_FIELD_D1 - имя поля из D1


 
User_OKA   (2004-02-09 12:48) [4]

Указанный вариант не работает. Может быть из-за того, что ограничание FOREIGN KEY для detail-таблицы не определено. Каскадные удаления/обновления реализованы на триггерах.
Как быть?


 
Deniz ©   (2004-02-09 14:00) [5]

Предлог MAS_


 
User_OKA   (2004-02-09 14:20) [6]

to Deniz> Предлог MAS_

Что это?

Вот мой запрос:
INSERT INTO DOGOVOR_OBJECT (ID_, DATA_ADD, DATA_EDIT, FLAG_READ, ID_MASTER501, NAME, ADRES, NUMARH, PRIM)
VALUES (GEN_ID(DOGOVOR_OBJECT_GEN, 1), "NOW", "NOW", 1, :ID_, ?NAME, ?ADRES, ?NUMARH, ?PRIM)


 
Johnmen ©   (2004-02-09 14:30) [7]

>User_OKA (09.02.04 12:48) [4]

Не понял. Что именно не работает ? Как не работает ? Как это видно ? И как должно быть ?


 
User_OKA   (2004-02-10 08:25) [8]

На форме D1 и D2 as TpFIBDataSet, DS1 и DS2 as TDataSource, Grid1 и Grid2 as TDBGridEh.
при этом D2.DataSource:=DS1 - делаем мастер-деталь, ну и соответственно D2.SelectSQL.Text:="SELECT * FROM D2 WHERE ID_MASTER = :ID_",
где ID_ - первичный ключ D1, ID_MASTER - поле связи D2.
Отображается все идеально.
Теперь хочу добавить запись в деталь. Редактирую непосредственно в гриде.
Для этого пишу D2.InsertSQL.Text:="INSERT INTO D2 (field1, field2, ID_MASTER) values (value1, value2, :ID_)".
Запись вставляется, но вот поле ID_MASTER заполняется значением default и код мастера не вставляется. В итоге получаем запись, которую никто не видит.
Что делаю не так? Может какие свойства TpFIBDataset надо "подрегулировать"?.


 
Johnmen ©   (2004-02-10 09:29) [9]

>Запись вставляется, но вот поле ID_MASTER заполняется значением
>default и код мастера не вставляется.

Враки...:)

>В итоге получаем запись, которую никто не видит.

Если никто не видит, то откуда сведения, что получаем ?

>Что делаю не так?

Все так...


 
User_OKA   (2004-02-10 09:46) [10]

Запись вставляется, но вот поле ID_MASTER заполняется значением
default и код мастера не вставляется.

При вставки записи ID_MASTER = 0

В результате пользователь эту запись в программе не видит.


 
Johnmen ©   (2004-02-10 09:59) [11]

Значит значение поля ID_ мастера есть 0 на момент вставки.


 
User_OKA   (2004-02-10 10:04) [12]

В мастер датасете - код текущей записи, не 0.


 
Johnmen ©   (2004-02-10 10:47) [13]

Возможно некорректно прописаны select, insert, refresh...
Всё должно работать !


 
Deniz ©   (2004-02-10 12:52) [14]

INSERT INTO D2 (field1, field2, ID_MASTER) values (value1, value2, :MAS_ID_)
Связь D2.ID_MASTER = D1.ID_


 
Johnmen ©   (2004-02-10 14:36) [15]

>Deniz © (10.02.04 12:52) [14]

Один хрен. Если в детальном нет поля с именем ID_
:)


 
Deniz ©   (2004-02-10 15:18) [16]

> Johnmen © (10.02.04 14:36) [15]
> Один хрен. Если в детальном нет поля с именем ID_
> :)


Ты не поверишь, но ведь и не должно быть :)
D1 - select id_ from d1
D2 - select id2, id_master from D2 where id_master = :id_
- insert into D2(id2, id_master) values (gen_id(...), :MAS_id_)
... и ведь работает :)


 
Johnmen ©   (2004-02-10 17:23) [17]

>Deniz © (10.02.04 15:18) [16]

Вполне может быть, что имена полей в мастере и детале могут совпадать. Чтобы их различать и нужен этот префикс.
В данном случае, "масло масляное". Естественно оно работает. Как и без префикса...



Страницы: 1 вся ветка

Текущий архив: 2004.03.09;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.022 c
7-25947
LordBTR
2003-12-17 11:51
2004.03.09
Группы пользователей домена


1-25819
Макс Реалов
2004-02-25 15:22
2004.03.09
Конструкторы и статические методы.


14-25897
Oyster
2004-02-16 12:18
2004.03.09
TblEdit


3-25717
b0bi
2004-02-11 12:37
2004.03.09
Что лучше использовать, DBAWARE компоненты или обычные CONTROLы


1-25786
Леприкон
2004-02-25 07:25
2004.03.09
Переход от многодокументного интрефейса к однодокументному