線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:928
推到 Plurk!
推到 Facebook!

如何做主從表的修改刪除動作

尚未結案
wuherong2000
一般會員


發表:26
回覆:21
積分:9
註冊:2003-06-16

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-12-17 10:49:05 IP:218.16.xxx.xxx 未訂閱
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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-12-17 11:08:10 IP:210.65.xxx.xxx 未訂閱
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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-12-17 13:53:12 IP:211.21.xxx.xxx 未訂閱
引言: 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;
~小弟淺見,參考看看~
------
~小弟淺見,參考看看~
系統時間:2024-06-24 20:28:56
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!