Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 29.09.2010, 18:56
Abikon Abikon вне форума
Прохожий
 
Регистрация: 29.09.2010
Сообщения: 2
Репутация: 10
По умолчанию Добавить запись

Здравствуйте. Кто нибудь подскажите мне пожалуйста, как можно добавить запись к двум связанным таблицам. Я использовал такой код:
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  
Старый 29.09.2010, 20:21
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

По какому полю таблицы связаны? Какая таблица главная, какая подчиненная?
Зачем вы Append и Edit ставите вместе?
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #3  
Старый 29.09.2010, 23:44
Abikon Abikon вне форума
Прохожий
 
Регистрация: 29.09.2010
Сообщения: 2
Репутация: 10
По умолчанию

Цитата:
Сообщение от Страдалецъ
По какому полю таблицы связаны? Какая таблица главная, какая подчиненная?
Зачем вы Append и Edit ставите вместе?
Здравствуйте. Таблица связана по полям FIO. Если не ставить Edit, выходить ошибка типа что таблица только для чтения. А если вставить Edit работает без ошибки, но вторая таблица не заполняется.
Поля:
Fio, Adres, Domtel, Mobtel-главная таблица
Naimenovanie, Kolichestvo, Cena-подчиненная таблица

Последний раз редактировалось Abikon, 29.09.2010 в 23:48.
Ответить с цитированием
  #4  
Старый 30.09.2010, 00:21
Аватар для Uniq!
Uniq! Uniq! вне форума
Местный
 
Регистрация: 29.09.2010
Сообщения: 539
Версия Delphi: Delphi XE3
Репутация: 374
По умолчанию

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.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 19:41.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter