交易如何做 |
尚未結案
|
fadichen
初階會員 發表:29 回覆:68 積分:29 註冊:2003-09-11 發送簡訊給我 |
在徹底研究 delphi6中第11章有一個範例
procedure TTest113Server.ApplyUpdates(CustVar:OleVariant);
var
ErrCount:integer
begin
Database1.StartTranstraction;
try
if not VarIsNull(CustVar) then
begin
CustVar:=DataSetProvider1.ApplyUpdates(CustVar,0,ErrorCount);
if ErrorCount>0 then
SysUtils.Abort;
end;
Database1.Commit;
except
Database1.Rollback
end;
end; 關於這一行
CustVar:=DataSetProvider1.ApplyUpdates(CustVar,0,ErrorCount);
這樣是說每一個不同的交易都要寫個別的 ApplyUpdates 嗎 ?
這樣就會有很多個 ApplyUpdates 是不是 ?
| ||
jieshu
版主 發表:42 回覆:894 積分:745 註冊:2002-04-15 發送簡訊給我 |
引言: 關於這一行 CustVar:=DataSetProvider1.ApplyUpdates(CustVar,0,ErrorCount); 這樣是說每一個不同的交易都要寫個別的 ApplyUpdates 嗎 ? 這樣就會有很多個 ApplyUpdates 是不是 ?不是,他是以傳進來的Delta參數去ApplyUpdate的,所以可以共用。而回傳的是不能被ApplyUpdate的,Delphi說明如下: ApplyUpdates returns a data packet of updates that could not be applied to the database as an OleVariant.
------
人生有夢,逐夢而行 人若為善,福雖未至,禍已遠離 人若為惡,禍雖未至,福已遠離 http://www.taconet.com.tw/jieshu/ |
||
fadichen
初階會員 發表:29 回覆:68 積分:29 註冊:2003-09-11 發送簡訊給我 |
|||
jieshu
版主 發表:42 回覆:894 積分:745 註冊:2002-04-15 發送簡訊給我 |
引言: 那假設我在 AppServer 中有 dspX, dspY 指到 Table X 及 Y dspZ 未指定 那麼 dspX 或 dspY 做Transaction 時, 都可以呼叫 上面那個 AppServer 的 ApplyUpdates(CustVar:OleVariant) 嗎可以,但要改一下Function,如下:未測過 procedure TTest113Server.ApplyUpdates(ProviderNames,CustVar:OleVariant); var ErrCount,i:integer begin Database1.StartTranstraction; try for i := 0 to VarArrayHighBound(ProviderNames, 1) do begin if not VarIsNull(CustVar[i]) then CustVar[i]:=(FindComponent(ProviderNames[i]) as TDataSetProvider).ApplyUpdates(CustVar[i],0,ErrorCount); if ErrorCount>0 then SysUtils.Abort; end; Database1.Commit; except Database1.Rollback end; end;
------
人生有夢,逐夢而行 人若為善,福雖未至,禍已遠離 人若為惡,禍雖未至,福已遠離 http://www.taconet.com.tw/jieshu/ |
||
Ktop_Robot
站務副站長 發表:0 回覆:3511 積分:0 註冊:2007-04-17 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |