これは古いです。しかし、私の状況は他の誰かに起こるかもしれません。だから私はこの答えを投稿します。
このエラーは私にも起こりました。私はAccessデータベースを使用していて、フォームでTADOTableを使用していました。関係は主従関係であり、すべてのテーブルを IDE デザイナーと一緒に接続しました。私のテーブルはtbl_Floor、tbl_FloorParts、tbl_Seatで、tbl_Floorはtbl_FloorPartsのマスターであり、tbl_FloorPartsはtbl_Seatのマスターでした。したがって、このエラーを解決するために、このトリックを実行しました。
procedure Tfrm_Main.UpdateTblFloor(...);
var
FID:Integer;
q:TADOQuery
begin
FID:=tbl_Floor.FieldByName('FID').AsInteger;
tbl_Floor.Close;
q:=TADOQuery.Create(nil);
try
q.Connection:=tbl_Floor.Connection;
q.SQL.Add('Update [Floor]');
q.SQL.Add(...);//Set Fields that needed to be updated
q.SQL.Add('where [FID]='+IntToStr(FID));
q.ExecSQL;
finally
q.free;
end;
tbl_Floor.Open;
tbl_Floor.Locate('FID',FId,[loPartialKey]);
end;
tbl_Floor、tbl_FloorPartsにこれらのイベントを追加しました
procedure Tfrm_Main.tbl_FloorAfterOpen(DataSet: TDataSet);
begin
tbl_FloorParts.Open;
end;
procedure Tfrm_Main.tbl_FloorBeforeClose(DataSet: TDataSet);
begin
tbl_FloorParts.Close;
end;
procedure Tfrm_Main.tbl_FloorPartsAfterOpen(DataSet: TDataSet);
begin
tbl_Seat.Open;
end;
procedure Tfrm_Main.tbl_FloorPartsBeforeClose(DataSet: TDataSet);
begin
tbl_Seat.Close;
end;