這是舊的。但我的情況可能發生在別人身上。所以我張貼這個答案。
這個錯誤也發生在我身上。 我正在使用Access數據庫並在窗體上使用一些TADOTable。 該關係是master-detail,我將所有表與IDE Designer連接在一起。 我的桌子是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;
其實,所有的dbcomponents現在扔掉。使用常規組件重新創建gui,使用對象創建中間件,並將對象轉換爲數據庫轉換 - 它肯定比用adonis搞亂更快...... – Vegar 2009-01-29 19:58:08
它真的很神祕嗎?哇... – 2009-01-29 20:20:55
其實,我使用clientdatasets的一切...而且由於安德烈亞斯(安德烈亞斯豪斯拉登)爲他們加快了速度,情況甚至更好。 – 2009-02-02 17:56:22