|
#1
|
|||
|
|||
Добавить запись
Здравствуйте. Кто нибудь подскажите мне пожалуйста, как можно добавить запись к двум связанным таблицам. Я использовал такой код:
f Код:
rmdolzhniki.ADOTable1.Append; frmdolzhniki.ADOTable1.Edit; frmdolzhniki.ADOTable2.Append; frmdolzhniki.ADOTable2.Edit; FrmDolzhniki.ADOTable2.FieldByName('Naimenovanie').AsString:=Frmprodatdolg.DBEdit1.Text; FrmDolzhniki.ADOTable2.FieldByName('Kolichestvo').AsString:=Frmprodatdolg.Edit1.Text; FrmDolzhniki.ADOTable2.FieldByName('Cena').AsString:=Frmprodatdolg.DbEdit2.Text; FrmDolzhniki.ADOTable1.FieldByName('Fio').AsString:=Frmprodatdolg.Edit2.Text; FrmDolzhniki.ADOTable1.FieldByName('Adres').AsString:=Frmprodatdolg.Edit3.Text; FrmDolzhniki.ADOTable1.FieldByName('Domtel').AsString:=Frmprodatdolg.Edit4.Text; FrmDolzhniki.ADOTable1.FieldByName('Mobtel').AsString:=Frmprodatdolg.Edit5.Text; if frmdolzhniki.ADOTable1.Modified then frmdolzhniki.ADOTable1.post; if frmdolzhniki.ADOTable1.Modified then frmdolzhniki.ADOTable2.post; Поля DBEdit1.Text, DbEdit2.Text-берет данные из другой таблицы. Подскажите мне пожалуйста, в чем ошибка. А то уже третий день мучаюсь. |
#2
|
||||
|
||||
По какому полю таблицы связаны? Какая таблица главная, какая подчиненная?
Зачем вы Append и Edit ставите вместе? Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#3
|
|||
|
|||
Цитата:
Поля: Fio, Adres, Domtel, Mobtel-главная таблица Naimenovanie, Kolichestvo, Cena-подчиненная таблица Последний раз редактировалось Abikon, 29.09.2010 в 23:48. |
#4
|
||||
|
||||
append - открыть только для чтения
edit - для редактирования insert - для вставки Хоть и новенький, но что-то я знаю. В вашем коде append - надо убрать. Вы два раза открываете в разных режимах. Насколько я понял вам надо таблицы "заполнить" из некоторых Edit/DBEdit компонентов. Блок для вставки такой: Код:
ADOTable1.Insert; // открыть для вставки ADOTable21.FieldByName('название поля 1').asstring:=edit1.text; // вставляемое поле 1 ADOTable21.FieldByName('название поля 2').asstring:=edit2.text; // вставляемое поле 2 ADOTable21.Post; // закрепить изменения ADOTable1.Edit; // открыть для редактирования ADOTable21.FieldByName('название поля 1').asstring:=edit1.text; // редактируемое поле 1 ADOTable21.FieldByName('название поля 2').asstring:=edit2.text; // редактируемое поле 2 ADOTable21.Post; // закрепить изменения В первом случае, если вы не укажете 3 4 и т.д. поля, то они заполняться "типизированной пустотой". Т.е. если поле 3 типа string туда попадёт '' а поле 4 типа integer туда попадёт nil Во втром случае, в ВЫБРАННОЙ записи будут измененны поля 1 и 2 на соответствующую инфу из edit1 и edit2/ Итог: на выходе из первой процедуру получаем новую запись. на выходе из второй процедуры получаем модифицированную запись. условие перечитайте Код:
if frmdolzhniki.ADOTable1.Modified then frmdolzhniki.ADOTable1.post; if frmdolzhniki.ADOTable1.Modified then frmdolzhniki.ADOTable2.post; Если модернизируется 1ая таблица ... то закрепляем изменения в первой Если модернизируется 1ая таблица ... то закрепляем изменения во второй Последний раз редактировалось Uniq!, 30.09.2010 в 00:35. |