Главная страница
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.027 c
14-1107504610
Тульский
2005-02-04 11:10
2005.02.27
Хасавьюрт-2


4-1105952573
tradakad
2005-01-17 12:02
2005.02.27
рисование на окне иконки


6-1103521635
Lex_!
2004-12-20 08:47
2005.02.27
Web-чат.


6-1103116889
Василий Васильевич Пупкин
2004-12-15 16:21
2005.02.27
Передача данных на сервер методом POST


1-1108535945
plotn
2005-02-16 09:39
2005.02.27
Вопрос по TeeChart Pro