FIB Plus - mster-detail (помогите pls)

IBX, FIBPlus, UIB, ADO, .Net и прочее-прочее-прочее, в общем все, что относится к созданию приложений, работающих с InterBase, Firebird и Yaffil - клиент-серверных, трехзвенных, консольных и т.п.

Модератор: kdv

Ответить
SV
Сообщения: 13
Зарегистрирован: 21 июн 2006, 16:37

FIB Plus - mster-detail (помогите pls)

Сообщение SV » 01 авг 2006, 20:23

Проблема в следующем:

Есть DataSet - master и DataSet - detail.
В Dataset-detail заполняю свойство DataSource (указываю мастера) и в запросе на Insert пишу INSERT INTO Dataset-detail (...) VALUES (...,:"MAS_ID",...) ,т.е. хочу чтобы при добавлении записи в Dataset-detail зависимое поле автоматически заполнялось значением ID DataSet - master.

НЕ РАБОТАЕТ!!! выдает ошибку, что данное поле null.

Помогите пожалуйста! Не пойму в чем проблема.

Merlin
Динозавр IB/FB
Сообщения: 1502
Зарегистрирован: 27 окт 2004, 11:44

Сообщение Merlin » 01 авг 2006, 20:44

И работать не будет. Патамушта хотеть-то можно чего угодно, но нет такого закона природы, что в детальный датасет вставлять можно запись только с MAS_ID равным текущему ID в другом датасете, будь он хоть трижды мастером, а есть такой закон природы, что вставлять можно чего угодно. Заполни его перед Post ручками.

Klyk
Сообщения: 100
Зарегистрирован: 26 окт 2004, 23:28

Сообщение Klyk » 01 авг 2006, 23:21

А ID в мастере в какой момент заполняется? ты уверен что он не null?
и это.. попробуй перед Post у detail выполинть Post мастеру...

SV
Сообщения: 13
Зарегистрирован: 21 июн 2006, 16:37

Сообщение SV » 01 авг 2006, 23:46

мастеру post делается вначале - не помогает.
А когда я заполняю зависимое поле вручную происходит ошибка на FOREIGN KEY ( DataSet-detail - имеет FOREIGN KEY в котором описано каскадное удаление). Если FOREIGN KEY удаляю, то зависмое поле можно заполнить вручную.
В общем непонятно все это.

CyberMax
Заслуженный разработчик
Сообщения: 638
Зарегистрирован: 31 янв 2006, 09:05

Сообщение CyberMax » 02 авг 2006, 12:28

Что тут непонятного. Запись мастера должна быть закоммичена до вставки детали. Например, вставляешь запись мастера. Подтверждаешь транзакцию. Только после этого можешь ссылаться на эту запись.

SV
Сообщения: 13
Зарегистрирован: 21 июн 2006, 16:37

Сообщение SV » 02 авг 2006, 18:40

Спасибо! все заработало.

Klyk
Сообщения: 100
Зарегистрирован: 26 окт 2004, 23:28

Сообщение Klyk » 02 авг 2006, 23:13

SV писал(а):Спасибо! все заработало.
А зачем ты мастера и деталь повесил на разные транзакции?

Ответить