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

【急急急!】使用clientdataset.applyupdate無法新增與刪除資料

尚未結案
landochu
一般會員


發表:23
回覆:20
積分:8
註冊:2003-12-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-04-30 09:55:56 IP:211.22.xxx.xxx 未訂閱
各位大大:    我今天使用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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-04-30 10:09:07 IP:61.224.xxx.xxx 未訂閱
在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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-04-30 14:09:26 IP:211.22.xxx.xxx 未訂閱
引言: 在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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-04-30 15:08:49 IP:61.224.xxx.xxx 未訂閱
可以提供更多的資訊嗎 由你目前提供的資訊實在看不出來造成你無法正常異動的原因 混心雜欲 棄修身~唉
------
唉~
landochu
一般會員


發表:23
回覆:20
積分:8
註冊:2003-12-24

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-04-30 16:08:20 IP:211.22.xxx.xxx 未訂閱
引言: 可以提供更多的資訊嗎 由你目前提供的資訊實在看不出來造成你無法正常異動的原因 混心雜欲 棄修身~唉
附上我的程式碼如下: 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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-04-30 16:42:00 IP:61.230.xxx.xxx 未訂閱
DataModule_OutSourcingPrice.Query_Price.Post; 這時候要 applyupdates(0); DataModule_OutSourcingPrice.Query_Price.Close; DataModule_OutSourcingPrice.Query_Price.Open;
landochu
一般會員


發表:23
回覆:20
積分:8
註冊:2003-12-24

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-04-30 17:06:14 IP:211.22.xxx.xxx 未訂閱
引言: DataModule_OutSourcingPrice.Query_Price.Post; 這時候要 applyupdates(0); DataModule_OutSourcingPrice.Query_Price.Close; DataModule_OutSourcingPrice.Query_Price.Open; 這位老兄 此方法經我測試後,還是不行,一樣無法將資料存入後端資料庫! 急急急!!!!!!!!!
fadichen
初階會員


發表:29
回覆:68
積分:29
註冊:2003-09-11

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-04-30 22:20:30 IP:61.230.xxx.xxx 未訂閱
請問你的後端資料庫是什麼 ? 你可以寫一個小程式把 connection, dataset .... 所有元件放到 同一個 form, 再是一次, 如果還是不行, 請把 code 貼出來,
jieshu
版主


發表:42
回覆:894
積分:745
註冊:2002-04-15

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-04-30 23:34:06 IP:61.70.xxx.xxx 未訂閱
引言: 在執行POST後使用APPLYUPDATE功能無法將該筆資料送出至後端資料庫,而且 【無任何設計與執行時期的錯誤碼產生!】←這才是我最吶悶的!
一般ApplyUpdate後,資料沒有儲存成功,是因為有錯誤產生,只是沒有Show出而已,所以speedup兄才會教你怎樣Show出錯誤訊息,還有請觀察產生的SQL語法,也可看出問題出在哪裡,如用BDE可用SQL Monitor。
人生有夢,逐夢而行。 人若為善,福雖未至,禍已遠離。 人若為惡,禍雖未至,福已遠離。 http://www.coss.com.tw/jieshu/
------
人生有夢,逐夢而行
人若為善,福雖未至,禍已遠離
人若為惡,禍雖未至,福已遠離
http://www.taconet.com.tw/jieshu/
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-05-01 02:25:33 IP:203.204.xxx.xxx 未訂閱
引言: 在執行POST後使用APPLYUPDATE功能無法將該筆資料送出至後端資料庫,而且 【無任何設計與執行時期的錯誤碼產生!】←這才是我最吶悶的!
landochu 你好 提供一則注意事項 如果Server端使用的DataSetProvider連結的DataSet是TQuery而且DataSetProvider.ResolveToDataSet設為True的話,請將Query.RequestLive設為True,讓TQuery可以更新資料回資料庫。
stillalive
初階會員


發表:7
回覆:148
積分:41
註冊:2004-04-07

發送簡訊給我
#11 引用回覆 回覆 發表時間:2004-05-04 18:06:30 IP:211.75.xxx.xxx 未訂閱
假設CHANCE36大大方法用過後還丟不出訊息 , 可能是後台SERVER的TABLE設定問題 , 檢查看看是否INDEX設成UNIQUE但新增相衝 , 或某欄位NOT ALLOW NULL卻NULL .
landochu
一般會員


發表:23
回覆:20
積分:8
註冊:2003-12-24

發送簡訊給我
#12 引用回覆 回覆 發表時間:2004-05-06 08:26:17 IP:211.22.xxx.xxx 未訂閱
引言: 假設CHANCE36大大方法用過後還丟不出訊息 , 可能是後台SERVER的TABLE設定問題 , 檢查看看是否INDEX設成UNIQUE但新增相衝 , 或某欄位NOT ALLOW NULL卻NULL .
基本上應該不會是server的table設定問題,因為我連做刪除的動作都不行,本機已刪除但,後端還是無法做更新的動作..
landochu
一般會員


發表:23
回覆:20
積分:8
註冊:2003-12-24

發送簡訊給我
#13 引用回覆 回覆 發表時間:2004-05-06 08:42:41 IP:211.22.xxx.xxx 未訂閱
寫了程式碼show出錯誤訊息如下 Table is read only 請問這是代表什麼意思呢!
jieshu
版主


發表:42
回覆:894
積分:745
註冊:2002-04-15

發送簡訊給我
#14 引用回覆 回覆 發表時間:2004-05-06 09:24:08 IP:203.204.xxx.xxx 未訂閱
引言: 寫了程式碼show出錯誤訊息如下 Table is read only 請問這是代表什麼意思呢!
應該是你((Query.RequestLive沒有設成True)或(SQL有Join又沒用TUpdateSQL))且(DataSetProvider.ResolveToDataSet設成True)。
人生有夢,逐夢而行。 人若為善,福雖未至,禍已遠離。 人若為惡,禍雖未至,福已遠離。 http://www.coss.com.tw/jieshu/
------
人生有夢,逐夢而行
人若為善,福雖未至,禍已遠離
人若為惡,禍雖未至,福已遠離
http://www.taconet.com.tw/jieshu/
stillalive
初階會員


發表:7
回覆:148
積分:41
註冊:2004-04-07

發送簡訊給我
#15 引用回覆 回覆 發表時間:2004-05-06 14:28:42 IP:211.75.xxx.xxx 未訂閱
一般而言 , DataSnap 遇到SQL有join 或關連兩個以上 tables 時, 用ApplyUpdates是行不通的 , 建議你照CHANCE36步驟去作 , 用TDataProvider的BeforeUpdateRecord程序內下SQL自行完成資料異動 .
fadichen
初階會員


發表:29
回覆:68
積分:29
註冊:2003-09-11

發送簡訊給我
#16 引用回覆 回覆 發表時間:2004-05-06 20:24:45 IP:61.230.xxx.xxx 未訂閱
我建議你新增一個 project 用 delphi 的內建的 paradox 資料表(one table) 做 test. 好了以後再去 test database.
plays2tw
一般會員


發表:5
回覆:2
積分:1
註冊:2004-05-07

發送簡訊給我
#17 引用回覆 回覆 發表時間:2004-05-07 14:34:46 IP:192.192.xxx.xxx 未訂閱
各位大大: 對不起,也請教一個問題..因為我也遇到類似的問題 如果我加上 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

發送簡訊給我
#18 引用回覆 回覆 發表時間:2004-05-09 12:43:10 IP:219.130.xxx.xxx 未訂閱
這樣的問題一般都是SERVER端的组件属性设置问题,可否將SERVER端的组件属性SHOW出來讓大家幫助解決?
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#19 引用回覆 回覆 發表時間:2004-05-10 21:31:25 IP:211.20.xxx.xxx 未訂閱
引言: 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

發送簡訊給我
#20 引用回覆 回覆 發表時間:2004-05-29 12:41:06 IP:220.139.xxx.xxx 未訂閱
引言: 各位大大: 我今天使用clientdataset.applyupdate無法新增與刪除資料,目前狀況:Client端已經輸入資料,且DBGrid內已確定將該筆資料輸入進去,但在執 行POST後使用APPLYUPDATE功能無法將該筆資料送出至後端資料庫,而且 【無任何設計與執行時期的錯誤碼產生!】←這才是我最吶悶的! 已試過的方法: 1.於AFTERPOST方法與程式碼中均使用"clientdataset.applyupdates(0)" 和 "clientdataset.applyupdates(-1)"兩種方式,但在使用"clientdataset.Close"與""clientdataset.Open"後仍發現資料並未新增或 刪除。← 真心痛!> 日前,得到一位高人親自到小弟的位子上指點迷津,該名高人指出:在server端的Query元件與DataSetProvider上的AfterPost以及與更新資料相關之元件操作都必須加上"Query.applyupdates(-1)"等程式碼才會真的將資料丟上去,之後小弟依樣畫葫蘆的結果,「真的」如高人所指點的內容一樣,如今,我的ClientDataSet內容已經可以丟到後端去了,感謝各位高手們的指導,各位的話,小弟會銘記於心的! 謝謝!~~
jieshu
版主


發表:42
回覆:894
積分:745
註冊:2002-04-15

發送簡訊給我
#21 引用回覆 回覆 發表時間:2004-05-29 13:15:46 IP:61.70.xxx.xxx 未訂閱
引言: 日前,得到一位高人親自到小弟的位子上指點迷津,該名高人指出:在server端的Query元件與DataSetProvider上的AfterPost以及與更新資料相關之元件操作都必須加上"Query.applyupdates(-1)"等程式碼才會真的將資料丟上去,之後小弟依樣畫葫蘆的結果,「真的」如高人所指點的內容一樣,如今,我的ClientDataSet內容已經可以丟到後端去了,感謝各位高手們的指導,各位的話,小弟會銘記於心的! 謝謝!~~
如果DataSetProvider.ResolveToDataSet設為True的話,才需要執行Query.ApplyUpdates;,False的話則不用,DataSetProvider會幫你做更新資料的動作的。
人生有夢,逐夢而行。 人若為善,福雖未至,禍已遠離。 人若為惡,禍雖未至,福已遠離。 http://www.coss.com.tw/jieshu/
------
人生有夢,逐夢而行
人若為善,福雖未至,禍已遠離
人若為惡,禍雖未至,福已遠離
http://www.taconet.com.tw/jieshu/
Ktop_Robot
站務副站長


發表:0
回覆:3511
積分:0
註冊:2007-04-17

發送簡訊給我
#22 引用回覆 回覆 發表時間:2007-04-30 13:44:52 IP:000.000.xxx.xxx 未訂閱
提問者您好:


以上回應是否已得到滿意的答覆?


若已得到滿意的答覆,請在一週內結案,否則請在一週內回覆還有什麼未盡事宜,不然,
將由版主(尚無版主之區域將由副站長或站長)自由心證,選擇較合適之解答予以結案處理,
被選上之答題者同樣會有加分獎勵同時發問者將受到扣 1 分的處分。不便之處,請見諒。


有問有答有結案,才能有良性的互動,良好的討論環境需要大家共同維護,感謝您的配合。

------
我是機器人,我不接受簡訊.
系統時間:2024-04-20 11:27:13
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!