Главная страница
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.062 c
3-1106630033
Lucifer
2005-01-25 08:13
2005.02.27
Отображение поля Time в DBEdit при использовании базы данных MS A


14-1104052102
www.Vlad.uk
2004-12-26 12:08
2005.02.27
Глючит EXPLORER.EXE


3-1106850647
sergeymist
2005-01-27 21:30
2005.02.27
добавление записи в таблицу


6-1102686698
Atomic2004
2004-12-10 16:51
2005.02.27
NET SEND


14-1107891150
bopmy
2005-02-08 22:32
2005.02.27
Работа со сканерами штрихкода