Показать сообщение отдельно
  #10  
Старый 03.09.2013, 15:28
Аватар для Freeman
Freeman Freeman вне форума
Местный
 
Регистрация: 05.10.2012
Адрес: Санкт-Петербург
Сообщения: 576
Версия Delphi: 6
Репутация: выкл
По умолчанию

Я не работал с ADO, поэтому конкретно по его режимам подсказать не могу. Возможно, для корректной работы master-detail нужно временно присваивать добавленной мастер-записи код -1, который копировать в AfterInsert в подчиненные, а после получения актуального кода обновлять все отрицательные записи.

Вообще же, если делать ввод накладных по учебнику, должно быть так:
  • В главной форме выводится грид, соответствующий списку накладных.
  • Создается диалог ввода/редактирования накладной, работающей с текущей записью из списка главной формы. Простым полям накладной соответствуют DBEdit-ы и DBComboBox-ы, а подчиненные данные вводятся в гриде или нескольких гридах на вкладках.
  • По нажатию "OK" все скопом сохраняется, по нажатию "Отмена" все скопом отменяется.
Тогда получается, что при входе в диалог набор данных главной формы находится в режиме вставки или редактирования, а при выходе из диалога делается Post или Cancel. Подчиненные наборы данных отрабатываются событиями.

Вспомнил, что уже отвечал на похожую тему на другом форуме.
Ответить с цитированием