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

ADOQuery & BatchUpdate之問題

尚未結案
her5405
一般會員


發表:6
回覆:1
積分:1
註冊:2004-12-19

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-01-09 17:01:03 IP:218.175.xxx.xxx 未訂閱
環境:Delphi5 SQL2000 Windows2000 qyMaster--> SELECT ProgramID,ProgramName FROM ProgramList qyDetail--> SELECT U.ProgramID,U.UserID,U.RunChk,U.AppendChk,U.EditChk,U.DeleChk, U.ReportChk,P.UserName FROM UserAuthority AS U JOIN UserList AS P ON U.ProgramID=:Program AND U.P.UserID 用 ProgramID 關聯Mater/Detail 在BatchUpdate時我不想更新 UserList資料表如何辦到..... 一個困惑的新手請各位大大不吝賜教,在此先行謝謝各位大大......
borland_delphi70
中階會員


發表:8
回覆:50
積分:51
註冊:2002-12-06

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-01-24 16:08:49 IP:220.130.xxx.xxx 未訂閱
1.不要直接把你要 join 的欄位與 Table 寫在 Query1 的 SQL Statement 中,改為SELECT ProgramID,UserID,RunChk,AppendChk,EditChk,DeleChk, ReportChk FROM UserAuthority。 2.建立另一組 Query2 其 SQL Statement 為 SELECT UserID,UserName FROM UserList。 3.在你原先的 Query1 中增加自訂 Field 並設定: FieldType 為 Lookup KeyFields 為 UserID DataSet 為 Query1 如此即可得到你要的效果 對我而言,程式設計是一場令人興奮又刺激的惡夢
bestlong
站務副站長


發表:126
回覆:734
積分:512
註冊:2002-10-19

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-01-25 12:35:07 IP:211.22.xxx.xxx 未訂閱
qyDetail--> SELECT * FROM UserAuthority WHERE ProgramID = :ProgramID    再加一個 qyUser--> SELECT * FROM UserList WHERE UserID = :UserID    在 qyDetail 的 Fields 加入 Calculated 欄位 RunChk, AppendChk, EditChk, DeleChk, ReportChk, UserName 並注意型態.    在 qyDetail.OnCalcFields 加入程式
procedure TForm1.qy_dCalcFields(DataSet: TDataSet);
begin
  qyUser.Close;
  qyUser.ParamByName('UserID').AsString := DataSet.FieldByName('UserID').AsString;
  qyUser.Open;
  DataSet.FieldByName('RunChk').AsBoolean := DataSet.FieldByName('RunChk').AsBoolean;
  // AppendChk, EditChk, DeleChk....
  DataSet.FieldByName('UserName').AsString := DataSet.FieldByName('UserName').AsString;
  qyUser.Close;
end;
我是雪龍 發表人 - bestlong 於 2005/01/25 12:41:31
------
http://blog.bestlong.idv.tw/
http://www.bestlong.idv.tw/
http://delphi-ktop.bestlong.idv.tw/
bestlong
站務副站長


發表:126
回覆:734
積分:512
註冊:2002-10-19

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-01-25 12:43:49 IP:211.22.xxx.xxx 未訂閱
BatchUpdate 那就是用 ADO 了    
procedure TForm1.qy_dCalcFields(DataSet: TDataSet);
begin
  qyUser.Close;
  qyUser.Parameters.ParamByName('UserID').AsString := DataSet.FieldByName('UserID').AsString;
  qyUser.Open;
  DataSet.FieldByName('RunChk').AsBoolean := DataSet.FieldByName('RunChk').AsBoolean;
  // AppendChk, EditChk, DeleChk....
  DataSet.FieldByName('UserName').AsString := DataSet.FieldByName('UserName').AsString;
  qyUser.Close;
end;
我是雪龍
------
http://blog.bestlong.idv.tw/
http://www.bestlong.idv.tw/
http://delphi-ktop.bestlong.idv.tw/
sl@cableplus.com.cn
高階會員


發表:168
回覆:359
積分:130
註冊:2004-03-26

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-01-27 14:54:31 IP:218.90.xxx.xxx 未訂閱
用Master.CancelUpdate就行啦
bestlong
站務副站長


發表:126
回覆:734
積分:512
註冊:2002-10-19

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-01-27 22:11:41 IP:61.59.xxx.xxx 未訂閱
引言: 用Master.CancelUpdate就行啦
這樣連 Table UserAuthority 的更新都給丟了. 我是雪龍
------
http://blog.bestlong.idv.tw/
http://www.bestlong.idv.tw/
http://delphi-ktop.bestlong.idv.tw/
系統時間:2024-06-24 20:05:26
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!