Форум: "Базы";
Текущий архив: 2005.02.27;
Скачать: [xml.tar.bz2];
ВнизОшибка при записи Найти похожие ветки
← →
paule (2005-01-25 12:57) [0]Есть 3 ADOTAble1,2 и 4. Связаны связью Master -Detail по ключевому полю
ADOTAble - master и остальные 2 подчинены!procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
begin
ADOTable1.First;
ADOTable4.Open;
for i:=1 to ADOTable1.RecordCount do
begin
ADOTable1.Edit;
ADOTable1.FieldByName("Kodrab").AsString :="ÍÐ";
ADOTable1.FieldByName("ter_usl").AsString :="ÌÊÑ";
ADOTable1.FieldByName("FCData_RB").AsDateTime := StrToDate("01.04.2004");
ADOTable1.FieldByName("FCData_UV").AsDateTime :=StrToDate("31.12.2004");
if ADOTable2.FieldByName("cexs").AsInteger < 20 then
ADOTable1.FieldByName("koeff").AsFloat := 1.4
else
ADOTable1.FieldByName("koeff").AsFloat := 1.6;
ADOTable1.Post;
ADOTable4.Edit;
ADOTable4.First;
ADOTable4.FieldByName("L_adres").AsBoolean :=true;
ADOTable4.Post;
ADOTable1.Next;
end;
end;
Все вроде просто, но при работе дельфи выпадает с ошибкой и говорит. что ADOTable4: DataDet not in edit or insert mode.
Подскажите в чем проблема
← →
Johnmen © (2005-01-25 13:23) [1]1. Где ADOTable2.Open ?
2. >for i:=1 to ADOTable1.RecordCount do
обходят не так.
3. >ADOTable4.Edit;...
а если нет записей в нем ?
И, наконец, ошибка.ADOTable4.Edit;
ADOTable4.First;
Вызов фёрста приведет к выходу из режима редактирования. Ку?
Т.е. местами поменять...
← →
paule (2005-01-25 13:30) [2]если так сделать,
ADOTable4.First;
ADOTable4.Edit;
ADOTable4.FieldByName("L_adres").AsBoolean :=true;
ADOTable4.post;
ADOTable1.Next;
то
при втором выполнении (ну тоесть один раз срабатывает нормально) ADOTable1.Next;
вылетает ошибка
Не удается найти строку для обновления. Некоторые значения могли быть изменены со времени её последнего чтения
← →
Johnmen © (2005-01-25 13:42) [3]Видимо изменяешь значение ключевого поля ADOTable1, то, по которому связка...
← →
paule (2005-01-26 03:14) [4]нет..
ну программно точно не изменяю.
← →
Paule (2005-01-26 10:26) [5]Сейчас сделал по другому:
В один запрос ADOQuery свел две таблицы:
select * from spisok inner join svd on spisok.kl_pens = svd.kl_pens
и к ADOQuery цепляю таблицу ADOTable.
Вот код:
if ADOQuery1.Active = true then ADOQuery1.Close;
ADOQuery1.Open;
if ADOTable2.Active = true then ADOTable2.Close;
ADOTable2.Open;
for i:=1 to ADOQuery1.RecordCount do
begin
ADOQuery1.Edit;
ADOQuery1.FieldByName("Kodrab").AsString :="ÍÐ";
ADOQuery1.FieldByName("ter_usl").AsString :="ÌÊÑ";
ADOQuery1.FieldByName("FCData_RB").AsDateTime := ADOTable2.FieldByName("one_date").AsDateTime;
ADOQuery1.FieldByName("FCData_UV").AsDateTime :=StrToDate("31.12.2004");
if ADOTable2.FieldByName("cexs").AsInteger < 20 then
ADOQuery1.FieldByName("koeff").AsFloat := 1.4
else
ADOQuery1.FieldByName("koeff").AsFloat := 1.6;
ADOQuery1.FieldByName("L_adres").AsBoolean :=true;
ADOQuery1.Post;
end;
поле L_adres из таблицы svd остальные из spisok.
В итоге на команде Post - выпадает с ошибкой:
"Недостаточно сведений ключевого поля для обновления"
Посоветуйте чтонибудь пожалуйста!
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2005.02.27;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.037 c