请教一个有关dbexpress交易问题 |
答題得分者是:pgdennis
|
xxiaowang
中階會員 發表:51 回覆:75 積分:55 註冊:2005-01-26 發送簡訊給我 |
各位前辈,小弟刚学Delphi,请教一个dbexpress交易问题: 我用Delph7 MSSQL2000,连接资料库用TSQLConnection TSQLQuery TDataSetProvider TClientDataset,显示资料至DBGrid中,在TClientDataSet的OnAfterPost事件中呼叫Dataset.ApplyUpdates(0)。 也即用家在DBGrid中每Post一个Record就会马上ApplyUpdate。因是多个用家使用,请问怎样用交易的方式? 交易代码写在哪儿?谢谢!
|
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
您好﹗ 可使用SQLConnection元件的交易功能﹕StartTransaction(開始一筆交易); Commit(确認一筆交易); Rollback(取消一筆交易)
使用的方法Help中有詳細的Example﹐以下摘自Delphi Help的SQLConnection元件說明﹕
procedure TForm1.TransferButtonClick(Sender: TObject); var Amt: Integer; TD: TTransactionDesc; begin if not SQLConnection1.InTransaction then begin TD.TransactionID := 1; TD.IsolationLevel := xilREADCOMMITTED; SQLConnection1.StartTransaction(TD); try Amt := StrToInt(AmtEdit.Text); Debit.Params.ParamValues['Amount'] := Amt; Credit.Params.ParamValues['Amount'] := Amt; SQLConnection1.Commit(TD); {on success, commit the changes}; except SQLConnection1.Rollback(TD); {on failure, undo the changes}; end; end; end;================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟 |
xxiaowang
中階會員 發表:51 回覆:75 積分:55 註冊:2005-01-26 發送簡訊給我 |
|
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
您好﹗ 有些不太理解您的意思﹐您是需要使用SQLConnection的交易功能還是單單使用ClientDataSet的ApplyUpdates功能﹖
若是前者的話﹐可新增三個按鈕﹐在其OnClick事件中分別下StartTransaction(1)(開始一筆交易); Commit(1)(确認一筆交易); Rollback(1)(取消一筆交易)
在下達StartTransaction的方法之后的所有異動資料﹐若要更新回后端資料庫﹐皆需要使用Commit方法﹒雖然ClientDataSet中的ApplyUpdate有触發﹐但因其包在SQLConnection交易之中﹐所以在沒有确認交易時﹐ApplyUpdate方法亦不會對后端資料庫有異動﹒
若是后者的話﹐除了使用增加一個按鈕﹐在其OnClick事件中控制ApplyUpdates之外﹐也可嘗試將代碼寫在ClientDataSet元件的BeforeClose事件中﹐要注意在适合的時機﹐將ClientDataSet元件Close﹐以應達到更新資料的目的﹒ =================================
有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗
================================
------
忻晟 |
xxiaowang
中階會員 發表:51 回覆:75 積分:55 註冊:2005-01-26 發送簡訊給我 |
|
pgdennis
資深會員 發表:41 回覆:526 積分:443 註冊:2002-05-23 發送簡訊給我 |
|
xxiaowang
中階會員 發表:51 回覆:75 積分:55 註冊:2005-01-26 發送簡訊給我 |
|
pgdennis
資深會員 發表:41 回覆:526 積分:443 註冊:2002-05-23 發送簡訊給我 |
|
xxiaowang
中階會員 發表:51 回覆:75 積分:55 註冊:2005-01-26 發送簡訊給我 |
|
pgdennis
資深會員 發表:41 回覆:526 積分:443 註冊:2002-05-23 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |