Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.04.2016, 08:34   #1
prog_130
 
Регистрация: 20.04.2016
Сообщений: 3
По умолчанию Insert в detail таблицу параметра из master

Добрый вечер! Возникла необходимость в небольшой программе, в которой будет редко работать более 2-3 человек, поэтому с реализацией не стал заморачиваться и использовал IBDataSetы и небольшую БД на FB1.5. Помогите разобраться с механизмом master-detail:
Используются два IBDataSet, в параметрах запросов прописано следующее
Код:
   //выборка master
    MDS_Lawsuits->SelectSQL->Clear();
    MDS_Lawsuits->SelectSQL->Add("select ID_LAWSUIT, OWNER_NAME ...");
    MDS_Lawsuits->SelectSQL->Add("from LAWSUITS");  
    //выборка detail
    DDS_Defendants->SelectSQL->Clear();
    DDS_Defendants->SelectSQL->Add("select ID_DEFENDANT, NAME_DEFENDANT");
    DDS_Defendants->SelectSQL->Add("from DEFENDANTS");
    DDS_Defendants->SelectSQL->Add("where ID_LAWSUITS=:ID_LAWSUIT");
    //добавление detail
    DDS_Defendants->InsertSQL->Clear();
    DDS_Defendants->InsertSQL->Add("insert into DEFENDANTS (NAME_DEFENDANT, ID_LAWSUITS)");
    DDS_Defendants->InsertSQL->Add("values (:NAME_DEFENDANT, :ID_LAWSUIT)");
Прописаны все связи между объектами dstasource, dbgrid, ibdataset и т.д.
Т.е. все вроде бы отображается корректно, апдейтится в обоих таблицах, проблема возникает лишь при вставке в detail-таблицу, именно параметра :ID_LAWSUIT (который, насколько я понимаю, должен быть инициализирован при select-запросе значением ID_LAWSUIT master-таблицы и далее при перемещении по master-dataset). При INSERTe всегда вставляется значение 0. Вставка производится при помощи DDS_Defendants->ApplyUpdates(); И если перед этим вывести значение DDS_Defendants->ParamByName(:ID_LAWSUIT) то оно отображается корректно. Подскажите, что я делаю не так?
prog_130 вне форума Ответить с цитированием
Старый 20.04.2016, 09:11   #2
prog_130
 
Регистрация: 20.04.2016
Сообщений: 3
По умолчанию

Пока писал решил проблему просто добавив столбец ID_LAWSUITS в detail - таблицу. А его инициализацию повесил на событие AfterInsert значением столбца master- таблицы, сам столбец скрыл. Думаю, что проблема скорее всего в методе ApplyUpdates(), который пишет кэшированные изменения.
prog_130 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
fibplus master-detail условие в detail tarakan1983 БД в Delphi 15 02.11.2014 16:10
Combobox и Master-Detail Максим1818 БД в Delphi 4 13.02.2014 10:10
Master Detail. добавление редактирование t.baychorov БД в Delphi 1 10.12.2011 14:23
Master-detail DELPHI+FIREBIRD Liones БД в Delphi 1 30.11.2010 13:27
Сценарий Master-Detail в WPF Antonio_M Общие вопросы .NET 0 28.08.2009 10:33