|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
Master Detail ltBatchOptimistic AutoInc
Здесь начало решения проблемы.
Я предлагаю решить задачу общими силами, т.к. на многих форумах сталкивался с подобными. Дано. Две связанных таблицы, связаны по ID(Autoincrement int) <- MasterID(int) (Документ и привязанные к документу товары) Задача: добавлять документ, с привязанными к нему товарами с возможностью отмены. Справка: ltBatchOptimistic - режим для редактирования таблиц, который позволяет использовать UpdateBatch/CancelButch (Сохранить/Отменить изменения) Проблема вот из-за этой связи: Код:
tDetail.MasterSource := dsMaster; tDetail.MasterFields := ID; tDetail.IndexFieldNames := MasterID; Код:
tMaster.Insert; tMaster.FieldByName('Поле №1').AsInteger := 100; tMaster.FieldByName('Поле №2').AsString := 'В работе'; // ещё куча стандартных значений (возможно автозаполнение средствами самого сервера tMaster.Post; Дальше необходимо привязать к Документу товар ещё не созданный, ибо его только привезли. Позволяем пользователю добавить новый товар: Код:
tDetail.Insert; // tDetail.FieldByName('MasterID').AsString := ??????? tDetail.FieldByName('Item').AsString := Edit2.Text; // либо через привязанные DBEdit%.Text; tDetail.Post; Собственно проблема: что присваивать полю MasterID ?? Ведь сервер ещё даже не подозревает о новом документе, и в АвтоИнкрементируемом поле сейчас висит 0 (проверено в DebugMode). Если не присваивать ничего, то в DBGrid2 (в котором отражаются tDetail данные) ничего не отображается, т.к. присутствует Связь (описывалась вначале) Решением под вопросом является такая конструкция: Код:
Select Ident_Current('tMaster') Последний раз редактировалось Uniq!, 20.09.2013 в 02:15. |