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