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

多層架構中客戶端如何快速批量向服務器端Paradox表添加數據?

答題得分者是:Justmade
kaida
中階會員


發表:4
回覆:35
積分:52
註冊:2003-03-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-04-22 11:51:19 IP:218.6.xxx.xxx 未訂閱
多層架構中客戶端如何快速批量向服務器端Paradox表添加數據? 我的Paradox表有一Autoincrement字段,在客戶端批量添加數據 為什麼會出現『key viotion』錯誤?應如何解決?
jieshu
版主


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-04-22 12:33:10 IP:203.204.xxx.xxx 未訂閱
引言: 多層架構中客戶端如何快速批量向服務器端Paradox表添加數據? 我的Paradox表有一Autoincrement字段,在客戶端批量添加數據 為什麼會出現『key viotion』錯誤?應如何解決?
看錯誤訊息好像是Key值重複,可否列出詳細的錯誤訊息,還有PrimaryKey的設定。
人生有夢,逐夢而行。 人若為善,福雖未至,禍已遠離。 人若為惡,禍雖未至,福已遠離。 http://www.taconet.com.tw/jieshu/
------
人生有夢,逐夢而行
人若為善,福雖未至,禍已遠離
人若為惡,禍雖未至,福已遠離
http://www.taconet.com.tw/jieshu/
kaida
中階會員


發表:4
回覆:35
積分:52
註冊:2003-03-02

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-04-22 13:58:17 IP:218.6.xxx.xxx 未訂閱
引言:
引言: 多層架構中客戶端如何快速批量向服務器端Paradox表添加數據? 我的Paradox表有一Autoincrement字段,在客戶端批量添加數據 為什麼會出現『key viotion』錯誤?應如何解決?
看錯誤訊息好像是Key值重複,可否列出詳細的錯誤訊息,還有PrimaryKey的設定。
人生有夢,逐夢而行。 人若為善,福雖未至,禍已遠離。 人若為惡,禍雖未至,福已遠離。 http://www.taconet.com.tw/jieshu/
詳細錯誤信息是: Project MyProg.exe raised exception class EDBClient with message 'key violation', process stopped. Use step or run to continue. Autoincrement字段設為PrimaryKey。 如果不用多層架構直接操作該數據表則沒問題(Autoincrement字段沒有人工賦值,自動遞增)。在多層架構將Autoincrement字段改為Number字段,人工賦予不同的值也沒問題。是不是在多層架構中Autoincrement字段的值不能自動遞增? 謝謝回答!
jieshu
版主


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-04-22 17:42:56 IP:203.204.xxx.xxx 未訂閱
引言: 詳細錯誤信息是: Project MyProg.exe raised exception class EDBClient with message 'key violation', process stopped. Use step or run to continue. Autoincrement字段設為PrimaryKey。 如果不用多層架構直接操作該數據表則沒問題(Autoincrement字段沒有人工賦值,自動遞增)。在多層架構將Autoincrement字段改為Number字段,人工賦予不同的值也沒問題。是不是在多層架構中Autoincrement字段的值不能自動遞增? 謝謝回答!
我測試如果沒有寫入KeyValue,新增10000筆,他只寫入1筆,跑兩次都這樣。 如果有寫入KeyValue,則都沒有寫入Paradox,我是整個跑完,下ApplyUpdates(0)。 我測試如果沒有寫入KeyValue,每新增完1筆,即下ApplyUpdates(0)則沒問題,但速度比較慢。但沒有錯誤訊息產生!
人生有夢,逐夢而行。 人若為善,福雖未至,禍已遠離。 人若為惡,禍雖未至,福已遠離。 http://www.taconet.com.tw/jieshu/
------
人生有夢,逐夢而行
人若為善,福雖未至,禍已遠離
人若為惡,禍雖未至,福已遠離
http://www.taconet.com.tw/jieshu/
kaida
中階會員


發表:4
回覆:35
積分:52
註冊:2003-03-02

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-04-22 21:53:05 IP:218.85.xxx.xxx 未訂閱
我測試如果沒有寫入KeyValue,每新增完1筆,即下ApplyUpdates(0)則沒問題,但速度比較慢。但沒有錯誤訊息產生! 我測試的結果也是這樣。每筆更新一次,速度太慢了,無法忍受。不知有否更好的辦法?
jieshu
版主


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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-05-06 09:55:51 IP:203.204.xxx.xxx 未訂閱
引言: 我測試如果沒有寫入KeyValue,每新增完1筆,即下ApplyUpdates(0)則沒問題,但速度比較慢。但沒有錯誤訊息產生! 我測試的結果也是這樣。每筆更新一次,速度太慢了,無法忍受。不知有否更好的辦法?
建議改用Access和ADO配合使用。
人生有夢,逐夢而行。 人若為善,福雖未至,禍已遠離。 人若為惡,禍雖未至,福已遠離。 http://www.taconet.com.tw/jieshu/
------
人生有夢,逐夢而行
人若為善,福雖未至,禍已遠離
人若為惡,禍雖未至,福已遠離
http://www.taconet.com.tw/jieshu/
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-05-06 13:54:41 IP:219.130.xxx.xxx 未訂閱
若你只是要批量新增的話,有一個方法,就是 select statement 別選 AutoIncreasement 欄位,只選其他欄位 TQuery RequestLive := true ClientDataSet 的 Packet Records 埴 0 (非必要,但可節省從數據庫傳送資料到客戶端的時間) 在 ClientDataSet 如常 Append 資料後 ApplyUpdate 即可。 AutoIncreasement 欄位會自動處理。 若你要同時新增修改的話,你應要在 DataSetProvider 的 onUpdateData 事件自行處理.
kaida
中階會員


發表:4
回覆:35
積分:52
註冊:2003-03-02

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-05-06 14:57:25 IP:218.6.xxx.xxx 未訂閱
謝謝指教。 我現在解決的辦法是: 1. 用 TQuery 取代 TTable。但不知道為什麼不能用 TTable。 2. 分批更新數據(每250條記錄ApplayUpdates一次)。但不知道為什麼不能一次更新全部記錄。 敬請指教。
系統時間:2024-04-24 2:29:12
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!