Я у себя на MySQL завёл твой код.
Код:
Transaction.StartTransaction;
ExecSQL; для мастер-таблицы.
ExecSQL; для детейл-таблицы.
Transaction.Commit;
Добавляется на ура. (у меня MySQL)
Может быть у тебя курсор стоит Серверный? Поэтому в Detail-таблицу добавляется первый (в общем не тот номер)?