Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.02.27;
Скачать: CL | DM;

Вниз

Ошибка при записи   Найти похожие ветки 

 
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 :="&#205;&#208;";
    ADOQuery1.FieldByName("ter_usl").AsString :="&#204;&#202;&#209;";
    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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.029 c
14-1107706812
aga
2005-02-06 19:20
2005.02.27
что за шифровка..


1-1108338095
neXOR
2005-02-14 02:41
2005.02.27
Вызов процедуры для динамического объекта


1-1108462160
FaceToFace
2005-02-15 13:09
2005.02.27
TTreeNode


14-1107854809
Beginner_
2005-02-08 12:26
2005.02.27
А где в XP находится File Manager ?


3-1107173227
Tornado
2005-01-31 15:07
2005.02.27
SQL запрос к разным базам