全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1865
推到 Plurk!
推到 Facebook!

關於UpdateBatch使用時機....

答題得分者是:smallfox
ESCAPE
一般會員


發表:37
回覆:47
積分:16
註冊:2005-02-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2011-08-11 11:53:45 IP:59.127.xxx.xxx 訂閱
procedure TForm1.Button1Click(Sender: TObject);
Var
iTF:Boolean;
iI,iJ:Word;
begin
iI:=10;
iTF:=True;
Try
ADOConnection1.BeginTrans;
While iTF Do Begin
aqTable_Master.Append;
aqTable_Master.FieldByName('MainSerialNo').AsInteger:=iI;
aqTable_Master.Post;
For iJ:=iI To (iI 09) Do Begin
aqTable_Detail.Append;
aqTable_Detail.FieldByName('MainSerialNo').AsInteger:=iI;
aqTable_Detail.FieldByName('SerialNo').AsInteger:=iJ;
aqTable_Detail.Post;
End; //end for iJ
iI:=iI 10;
If iI=60 Then
iTF:=False;
End; //end while
aqTable_Master.UpdateBatch(arAll);
aqTable_Detail.UpdateBatch(arAll);
ADOConnection1.CommitTrans;
Except
ADOConnection1.RollbackTrans;
End; //end try
end;
[/code]


編輯記錄
ESCAPE 重新編輯於 2011-08-10 21:55:03, 註解 無‧
ESCAPE 重新編輯於 2011-08-10 21:57:43, 註解 無‧
ESCAPE 重新編輯於 2011-08-10 21:59:54, 註解 無‧
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2011-08-11 15:04:49 IP:118.169.xxx.xxx 未訂閱
UpdateBatch 很容易用但不好用, 我會建議這類master-detail的資料庫, 不如自己寫code迴圈來處理, 雖然多寫一點點code, 但比UB要容易控制及除錯!
smallfox
高階會員


發表:2
回覆:113
積分:128
註冊:2003-02-19

發送簡訊給我
#3 引用回覆 回覆 發表時間:2011-08-12 00:27:28 IP:211.74.xxx.xxx 訂閱
因為 aqTable_Master 與 aqTable_Detail 關聯(或 Filter 條件)之故,
aqTable_Detail 最後的內容只有 50 - 59 的項次資料(若連接 TDBGrid 就看得到這樣),
所以, 在回存後端之前, 必須先把 aqTable_Detail 與 aqTable_Master 的關聯切斷,
讓 aqTable_Detail 可以顯示所有項次的情況下, 回存後端才能建立完整的資料.

(因為不知道你 aqTable_Master 與 aqTable_Detail 的關聯是如何實作的, 這樣描述, 希望你能看得懂)
cancer
高階會員


發表:58
回覆:319
積分:190
註冊:2004-07-31

發送簡訊給我
#4 引用回覆 回覆 發表時間:2011-08-15 18:46:02 IP:220.128.xxx.xxx 未訂閱
Hello, 您的 Detail 可能用了 Filter,這時候,要先解除 Filter,再替 Detail 做 UpdateBatch(arAll),我用 Delphi 2006 .net,那個 arAll 是裝飾品,用了也不會全部回存,只會回存當時 Filter 內的資料,就是說

1.dataset.Filtered := false;
2.dataset.UpdateBatch(arAll);
3.dataset.Filtered := true;
ESCAPE
一般會員


發表:37
回覆:47
積分:16
註冊:2005-02-15

發送簡訊給我
#5 引用回覆 回覆 發表時間:2011-08-17 10:19:32 IP:59.127.xxx.xxx 訂閱

===================引 用 smallfox 文 章===================
因為 aqTable_Master 與 aqTable_Detail 關聯(或 Filter 條件)之故,
aqTable_Detail 最後的內容只有 50 - 59的項次資料(若連接 TDBGrid 就看得到這樣),
所以, 在回存後端之前, 必須先把 aqTable_Detail 與 aqTable_Master 的關聯切斷,
讓 aqTable_Detail 可以顯示所有項次的情況下, 回存後端才能建立完整的資料.

(因為不知道你 aqTable_Master 與 aqTable_Detail 的關聯是如何實作的, 這樣描述, 希望你能看得懂)

非常感謝SmallFox的幫助,問題已經解決。
確實是關連的問題,只好先切斷關連,等Commit後再恢復關連了。
系統時間:2024-03-29 1:32:36
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!