【急急急!】使用clientdataset.applyupdate無法新增與刪除資料 |
尚未結案
|
landochu
一般會員 發表:23 回覆:20 積分:8 註冊:2003-12-24 發送簡訊給我 |
各位大大: 我今天使用clientdataset.applyupdate無法新增與刪除資料,目前狀況:Client端已經輸入資料,且DBGrid內已確定將該筆資料輸入進去,但在執
行POST後使用APPLYUPDATE功能無法將該筆資料送出至後端資料庫,而且
【無任何設計與執行時期的錯誤碼產生!】←這才是我最吶悶的! 已試過的方法:
1.於AFTERPOST方法與程式碼中均使用"clientdataset.applyupdates(0)" 和
"clientdataset.applyupdates(-1)"兩種方式,但在使用"clientdataset.Close"與""clientdataset.Open"後仍發現資料並未新增或
刪除。← 真心痛!>
| ||
speedup
資深會員 發表:19 回覆:259 積分:280 註冊:2003-07-04 發送簡訊給我 |
在Delphi 5 以後
你必須在ClientDataSet的OnReconcileError事件中撰寫程式碼才可看到異動失敗的錯誤訊息(含Server端的例外)
例如
procedure TForm1.ClientDataSet1ReconcileError( DataSet: TCustomClientDataSet; E: EReconcileError; UpdateKind: TUpdateKind; var Action: TReconcileAction); begin Showmessage( E.Message ); end;混心雜欲 棄修身~唉
------
唉~ |
||
landochu
一般會員 發表:23 回覆:20 積分:8 註冊:2003-12-24 發送簡訊給我 |
引言: 在Delphi 5 以後 你必須在ClientDataSet的OnReconcileError事件中撰寫程式碼才可看到異動失敗的錯誤訊息(含Server端的例外) 例如這位大大,您回得很好!但或許是我誤導您了,其實我想問的問題是出 在我無法新增與修改記錄,但這個錯誤回應的方法我會記住的,謝謝!procedure TForm1.ClientDataSet1ReconcileError( DataSet: TCustomClientDataSet; E: EReconcileError; UpdateKind: TUpdateKind; var Action: TReconcileAction); begin Showmessage( E.Message ); end;混心雜欲 棄修身~唉 |
||
speedup
資深會員 發表:19 回覆:259 積分:280 註冊:2003-07-04 發送簡訊給我 |
|||
landochu
一般會員 發表:23 回覆:20 積分:8 註冊:2003-12-24 發送簡訊給我 |
引言: 可以提供更多的資訊嗎 由你目前提供的資訊實在看不出來造成你無法正常異動的原因 混心雜欲 棄修身~唉附上我的程式碼如下: DataModule_OutSourcingPrice.Query_Price.Append; DataModule_OutSourcingPrice.Query_Price.FieldByName ('BUS_CODE').AsString := DataModule_Main.Bus_Code; DataModule_OutSourcingPrice.Query_Price.FieldByName ('OPL_CREATEDATE').AsDateTime := sdDate; DataModule_OutSourcingPrice.Query_Price.FieldByName ('OPL_CREATEUSER').AsString := DataModule_Main.EmployeeName; DataModule_OutSourcingPrice.Query_Price.FieldByName ('OPL_NAME').Asstring := edtName.text; DataModule_OutSourcingPrice.Query_Price.FieldByName ('OPL_ALLOWDISCOUNT').Asstring := ComboBox1.text; DataModule_OutSourcingPrice.Query_Price.FieldByName ('OPL_ALLOWDISCOUNTCHG').Asstring := ComboBox2.text; DataModule_OutSourcingPrice.Query_Price.Post; DataModule_OutSourcingPrice.Query_Price.Close; DataModule_OutSourcingPrice.Query_Price.Open; |
||
fadichen
初階會員 發表:29 回覆:68 積分:29 註冊:2003-09-11 發送簡訊給我 |
|||
landochu
一般會員 發表:23 回覆:20 積分:8 註冊:2003-12-24 發送簡訊給我 |
|||
fadichen
初階會員 發表:29 回覆:68 積分:29 註冊:2003-09-11 發送簡訊給我 |
|||
jieshu
版主 發表:42 回覆:894 積分:745 註冊:2002-04-15 發送簡訊給我 |
引言: 在執行POST後使用APPLYUPDATE功能無法將該筆資料送出至後端資料庫,而且 【無任何設計與執行時期的錯誤碼產生!】←這才是我最吶悶的!一般ApplyUpdate後,資料沒有儲存成功,是因為有錯誤產生,只是沒有Show出而已,所以speedup兄才會教你怎樣Show出錯誤訊息,還有請觀察產生的SQL語法,也可看出問題出在哪裡,如用BDE可用SQL Monitor。
------
人生有夢,逐夢而行 人若為善,福雖未至,禍已遠離 人若為惡,禍雖未至,福已遠離 http://www.taconet.com.tw/jieshu/ |
||
Chance36
版主 發表:31 回覆:1033 積分:792 註冊:2002-12-31 發送簡訊給我 |
|||
stillalive
初階會員 發表:7 回覆:148 積分:41 註冊:2004-04-07 發送簡訊給我 |
|||
landochu
一般會員 發表:23 回覆:20 積分:8 註冊:2003-12-24 發送簡訊給我 |
|||
landochu
一般會員 發表:23 回覆:20 積分:8 註冊:2003-12-24 發送簡訊給我 |
|||
jieshu
版主 發表:42 回覆:894 積分:745 註冊:2002-04-15 發送簡訊給我 |
引言: 寫了程式碼show出錯誤訊息如下 Table is read only 請問這是代表什麼意思呢!應該是你((Query.RequestLive沒有設成True)或(SQL有Join又沒用TUpdateSQL))且(DataSetProvider.ResolveToDataSet設成True)。
------
人生有夢,逐夢而行 人若為善,福雖未至,禍已遠離 人若為惡,禍雖未至,福已遠離 http://www.taconet.com.tw/jieshu/ |
||
stillalive
初階會員 發表:7 回覆:148 積分:41 註冊:2004-04-07 發送簡訊給我 |
|||
fadichen
初階會員 發表:29 回覆:68 積分:29 註冊:2003-09-11 發送簡訊給我 |
|||
plays2tw
一般會員 發表:5 回覆:2 積分:1 註冊:2004-05-07 發送簡訊給我 |
各位大大:
對不起,也請教一個問題..因為我也遇到類似的問題
如果我加上
procedure TForm1.ClientDataSet_keyinReconcileError(DataSet: TClientDataSet;
E: EReconcileError; UpdateKind: TUpdateKind;
var Action: TReconcileAction);
begin
Showmessage( E.Message );
end;
結果出現...Record changed by another user ...不知道這是哪裡出了問題
PS 我在新增資料.查詢資料都OK
唯獨修改及刪除資料有問題 謝謝各位
|
||
Chelen.Jak
一般會員 發表:2 回覆:11 積分:7 註冊:2004-05-07 發送簡訊給我 |
|||
Chance36
版主 發表:31 回覆:1033 積分:792 註冊:2002-12-31 發送簡訊給我 |
引言: DataModule_OutSourcingPrice.Query_Price.Post; DataModule_OutSourcingPrice.Query_Price.Close; DataModule_OutSourcingPrice.Query_Price.Open; 引言: 應該是你((Query.RequestLive沒有設成True)或(SQL有Join又沒用TUpdateSQL))且(DataSetProvider.ResolveToDataSet設成True)。landochu 你好 1.Query_Price真的是TClientDataSet嗎? 2.如果是的話,那麼其Commandtext的內容可以貼上來嗎?或是Server端DataSetProvider所連結的dataSet的SQL(若為ADO資料集則是CommandText)的內容。 3.若都不是的話,是否可以描述從資料庫到前前端資料集的元件連結方式嗎?如 AdoConnection->AdoQuery->dataSetProvider->ClientDataset(使用ADO) 或TQuery->DataSetProvider->clientDataset(使用BDE)或其他,最好連同各元件的屬性值設定一起說明。 |
||
landochu
一般會員 發表:23 回覆:20 積分:8 註冊:2003-12-24 發送簡訊給我 |
引言: 各位大大: 我今天使用clientdataset.applyupdate無法新增與刪除資料,目前狀況:Client端已經輸入資料,且DBGrid內已確定將該筆資料輸入進去,但在執 行POST後使用APPLYUPDATE功能無法將該筆資料送出至後端資料庫,而且 【無任何設計與執行時期的錯誤碼產生!】←這才是我最吶悶的! 已試過的方法: 1.於AFTERPOST方法與程式碼中均使用"clientdataset.applyupdates(0)" 和 "clientdataset.applyupdates(-1)"兩種方式,但在使用"clientdataset.Close"與""clientdataset.Open"後仍發現資料並未新增或 刪除。← 真心痛!> |
||
jieshu
版主 發表:42 回覆:894 積分:745 註冊:2002-04-15 發送簡訊給我 |
引言: 日前,得到一位高人親自到小弟的位子上指點迷津,該名高人指出:在server端的Query元件與DataSetProvider上的AfterPost以及與更新資料相關之元件操作都必須加上"Query.applyupdates(-1)"等程式碼才會真的將資料丟上去,之後小弟依樣畫葫蘆的結果,「真的」如高人所指點的內容一樣,如今,我的ClientDataSet內容已經可以丟到後端去了,感謝各位高手們的指導,各位的話,小弟會銘記於心的! 謝謝!~~如果DataSetProvider.ResolveToDataSet設為True的話,才需要執行Query.ApplyUpdates;,False的話則不用,DataSetProvider會幫你做更新資料的動作的。
------
人生有夢,逐夢而行 人若為善,福雖未至,禍已遠離 人若為惡,禍雖未至,福已遠離 http://www.taconet.com.tw/jieshu/ |
||
Ktop_Robot
站務副站長 發表:0 回覆:3511 積分:0 註冊:2007-04-17 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |