CachedUpdates & Query 問題 |
尚未結案
|
taboo
一般會員 ![]() ![]() 發表:2 回覆:6 積分:1 註冊:2003-04-10 發送簡訊給我 |
|
taboo
一般會員 ![]() ![]() 發表:2 回覆:6 積分:1 註冊:2003-04-10 發送簡訊給我 |
|
pgdennis
資深會員 ![]() ![]() ![]() ![]() ![]() 發表:41 回覆:526 積分:443 註冊:2002-05-23 發送簡訊給我 |
|
taboo
一般會員 ![]() ![]() 發表:2 回覆:6 積分:1 註冊:2003-04-10 發送簡訊給我 |
|
pgdennis
資深會員 ![]() ![]() ![]() ![]() ![]() 發表:41 回覆:526 積分:443 註冊:2002-05-23 發送簡訊給我 |
引言: 謝謝大大的回應 我的資料庫是Access 用Query的insert,delete,update,都可以RollBack 因為只是在Local端的異動 可是我想用的是Query的SQL ExecSQL時它都直接更新到資料庫了.....無法RollBack那可以用Tdatabase自己控制commit,rollback,這樣應該也行 至於ExecSQL為何會自動更新至資料庫,小弟才疏學淺 不了
------
星期一,二...無窮迴圈@@ |
mustapha.wang
資深會員 ![]() ![]() ![]() ![]() ![]() 發表:89 回覆:409 積分:274 註冊:2002-03-13 發送簡訊給我 |
我用如下代码是可以RollBack的,
procedure TForm1.Button1Click(Sender: TObject); begin DataBase1.StartTransaction; Query1.SQL.Text:='delete FORMDD where DDKEY=''&Edit'''; Query1.ExecSQL; DataBase1.Rollback; Query1.SQL.Text:='select * from FORMDD where DDKEY=''&Edit'''; Query1.Open; end;对Query的append/edit/delete,资料还在Query的Catch里,没有送到Server去,因此可以CancelUpdates简单地在本地取消更新。 ExecSQL是把SQL语句真正送到Server去执行了,需要在执行前到Server去启动一个Transaction(DataBase1.StartTransaction),由Server来控制Rollback。 因为Transaction会锁住资料,最好是最晚开始(StartTransaction),最早结束(CommitTransaction/RollbackTransaction),因此并不建议你在两个地方处理,如一个Button来StartTransaction,另一个来Commit/Rollback,其间可能间隔很长时间。
------
江上何人初见月,江月何年初照人 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |