Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.03.09;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.071 c
4-25960
aser
2004-01-04 10:36
2004.03.09
как отловить завершение потока?


14-25904
iudjen
2004-02-14 21:42
2004.03.09
как сделать кто хочет стать милионером


14-25911
Yegor
2004-02-15 18:51
2004.03.09
Глюк с видеофайлом...


3-25709
TATIANA
2004-02-10 15:26
2004.03.09
Как сделать из формы шаблон для дальнейшего использования


14-25916
SergP
2004-02-13 04:23
2004.03.09
Как лучше сделать запрос?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский