如何做主從表的修改刪除動作 |
尚未結案
|
wuherong2000
一般會員 發表:26 回覆:21 積分:9 註冊:2003-06-16 發送簡訊給我 |
database1 :TDatabase連接的是Sql(用BDE)在delphi中是cacheUpdate的
query1,query2:tquery
updatesql1,updatesql2 :TUPdateSql
query1UserNO,query1Password,query2UserNo,query2FunNo,query2App:TField 並且readonly都為false
其中在query1對應的表中UserNo是主鍵,在query2對應的表中UserNo,FunNo是聯合主鍵
在updatesql1中我設定KeyFields為UserNo,updateFields為Password
在updatesql2中我設定KeyFields為UserNo和FunNO,updateFields為App
程式如下:
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
query2.Open;
query2.SQL.Text :='select * from items where orderno=''' query1.fieldbyname('orderno').asstring ''' ';
query2.Open;
query2.First ;
while not query2.Eof do
begin
query2.Delete ;
end;
query1.Delete ;
database1.StartTransaction ;
query2.ApplyUpdates ;
query1.ApplyUpdates ;
database1.Commit ;
end;
出錯提示是“Table is read only”
請問是什麼原因,要如何才能做主從表的修改刪除動作
|
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi: 你的 StartTransaction 似乎擺錯位置
procedure TForm1.BitBtn1Click(Sender: TObject); begin query2.Close; query2.SQL.Text :='select * from items where orderno=''' query1.fieldbyname('orderno').asstring ''' '; query2.Open; query2.First ; database1.StartTransaction ; while not query2.Eof do begin query2.Delete ; end; query1.Delete ; query2.ApplyUpdates ; query1.ApplyUpdates ; database1.Commit ; end;-------------------------------- 小弟才疏學淺,若有謬誤請不吝指教 --------------------------------
------
Fishman |
channel
尊榮會員 發表:67 回覆:707 積分:854 註冊:2002-05-02 發送簡訊給我 |
引言: database1 :TDatabase連接的是Sql(用BDE)在delphi中是cacheUpdate的 query1,query2:tquery updatesql1,updatesql2 :TUPdateSql query1UserNO,query1Password,query2UserNo,query2FunNo,query2App:TField 並且readonly都為false 其中在query1對應的表中UserNo是主鍵,在query2對應的表中UserNo,FunNo是聯合主鍵 在updatesql1中我設定KeyFields為UserNo,updateFields為Password 在updatesql2中我設定KeyFields為UserNo和FunNO,updateFields為App 程式如下: procedure TForm1.BitBtn1Click(Sender: TObject); begin query2.Open; query2.SQL.Text :='select * from items where orderno=''' query1.fieldbyname('orderno').asstring ''' '; query2.Open; query2.First ; while not query2.Eof do begin query2.Delete ; end; query1.Delete ; database1.StartTransaction ; query2.ApplyUpdates ; query1.ApplyUpdates ; database1.Commit ; end; 出錯提示是“Table is read only” 請問是什麼原因,要如何才能做主從表的修改刪除動作注意:query1及query2的CachedUpdates的屬性須設為True 您有用TDatabse,那ApplyUpdates就交給TDatabase作即可,不用自行下database1.StartTransaction及database1.Commit; 如下所示(紅色字): procedure TForm1.BitBtn1Click(Sender: TObject); begin query2.Open; query2.SQL.Text :='select * from items where orderno=''' query1.fieldbyname('orderno').asstring ''' '; query2.Open; query2.First ; while not query2.Eof do begin query2.Delete ; end; query1.Delete ; query1.DataBase.ApplyUpdates([query1, query2]); end;~小弟淺見,參考看看~
------
~小弟淺見,參考看看~ |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |