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

dbf檔更新失敗的原因

缺席
rachex2000
一般會員


發表:21
回覆:32
積分:20
註冊:2003-04-28

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-01-09 11:31:09 IP:210.64.xxx.xxx 未訂閱
請問我有一A.dbf與A.cdx,將某一text(40萬筆紀錄)轉入dbf中更新(有則修改,無則新增), 但是只能更新85922筆,之後就會出現Access to table disabled because of previous error的訊息,使得之後的資料都無法更新至dbf中, 我用的是infopower的TwwTable,請問應如何解決,這是因 1.索引檔壞掉:那應如何重建索引檔(以原A.cdx的結構重建)? 2.某種限制(記憶體等或元件本身的限制),只能更新85922筆? 3.其他? 另外我有THalcyonDataset元件,但若用此取代似乎轉入速度很慢,
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-01-09 14:43:13 IP:61.71.xxx.xxx 未訂閱
引言: 請問我有一A.dbf與A.cdx,將某一text(40萬筆紀錄)轉入dbf中更新(有則修改,無則新增), 但是只能更新85922筆,之後就會出現Access to table disabled because of previous error的訊息,使得之後的資料都無法更新至dbf中, 我用的是infopower的TwwTable,請問應如何解決,這是因 1.索引檔壞掉:那應如何重建索引檔(以原A.cdx的結構重建)? 2.某種限制(記憶體等或元件本身的限制),只能更新85922筆? 3.其他? 另外我有THalcyonDataset元件,但若用此取代似乎轉入速度很慢,
1.Delphi 不支援 cdx 索引檔, 我不知道inforpower的 TwwTable 是否有支援 不過就我所知好像只有ApolloVCL6有支援多種索引結構 Delphi只能使用 mdx 2.要確定是否索引檔所造成的問題, 把 a.dbf 先用Delphi附的 Desktop系統 開啟同時選擇移除索引檔, 先直接以 dbf來異動, 8萬多筆應不致造成你遇到 的問題, 我想可能是索引檔在做怪! 3.建議你儘量用Delphi提供的標準元件, 或者是找有 sourcecode元件的 shareware, 目的是版本上的相容及支援性能比較高 4.索引檔重建, 建出來是dBaseV的 mdx索引檔 以上提供你參考!
rachex2000
一般會員


發表:21
回覆:32
積分:20
註冊:2003-04-28

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-01-10 20:48:28 IP:210.64.xxx.xxx 未訂閱
引言: 2.要確定是否索引檔所造成的問題, 把 a.dbf 先用Delphi附的 Desktop系統 開啟同時選擇移除索引檔, 先直接以 dbf來異動, 8萬多筆應不致造成你遇到 的問題, 我想可能是索引檔在做怪!
1.抱歉,不明白你的意思,如何使用Desktop開啟並選擇移除索引檔,而直接以dbf 異動 2.請問我是不是應先以某工具重建Index,再做轉檔測試, 我目前有Desktop與Griffin Solution's DBF Desktop,如何使用? 3.A.dbf中有一些資料是被delet掉的,是否先做Pack,有無影響? 4.40萬筆文字檔(每筆3個欄位而已,不長)轉入,大約需多久?前一萬筆很快,後來越來越慢 5.此dbf檔的cdx有三個索引,是否先移除兩個,轉完後後再重建較快?
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-01-12 00:30:39 IP:61.71.xxx.xxx 未訂閱
1.抱歉,不明白你的意思,如何使用Desktop開啟並選擇移除索引檔,而直接以dbf 異動 2.請問我是不是應先以某工具重建Index,再做轉檔測試, 我目前有Desktop與Griffin Solution's DBF Desktop,如何使用? 5.此dbf檔的cdx有三個索引,是否先移除兩個,轉完後後再重建較快? 一併回答, 先把該檔案的索引檔刪除, 再利用Delphi內提供的 DataBase Desktop 系統來開啟, 當你的dbf檔如果有加掛任何索引而對應不到時, 系統會偵測到同時在開檔同時詢問你是要以ReadOnly開啟, 或是Detach Index(移除索引), 你選擇本項, 就可以將index mark 由 dbf中移除, 這樣再開啟檔案就不會有問題 3.A.dbf中有一些資料是被delet掉的,是否先做Pack,有無影響? BDE雖然有提供 DBF 的 SOFTDELETE功能, 但基本上BDE被執行時是會忽略被DELETE的記錄, 當然如果你做過PACK, 不論是否DELETE存在, 經過PACK原則上是會重整調整資料庫, 所以在速度上來說會有些加快, 快多少? 無數據可查! 4.40萬筆文字檔(每筆3個欄位而已,不長)轉入,大約需多久?前一萬筆很快,後來越來越慢 這是正常的, 因為dbf都是在前端buffer直接運作, 異動越多, 可用buffer越少 也就是說每筆異動都會先被轉入buffer中運算才丟回database, 但丟回去後並不會清除buffer中所佔掉的空間, 如果你要解決這個方式, 只有一個方式, 關閉此檔, 重新開啟, 開啟時先處理掉已經異動的記錄, 這樣才能清除, 有些資料來源說利用refresh或dbisavechange就可以達成, 但我實測結果是沒有用! 你可以設計每一萬筆做一次, 之前我更新過約100萬筆就是這樣搞, 雖然還是慢 但絕對比一次過要省2倍以上(相較之下) 發表人 - P.D. 於 2004/01/12 00:32:03
rachex2000
一般會員


發表:21
回覆:32
積分:20
註冊:2003-04-28

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-01-12 10:17:10 IP:210.64.xxx.xxx 未訂閱
這是正常的, 因為dbf都是在前端buffer直接運作, 異動越多, 可用buffer越少 也就是說每筆異動都會先被轉入buffer中運算才丟回database, 但丟回去後並不會清除buffer中所佔掉的空間, 如果你要解決這個方式, 只有一個方式, 關閉此檔, 重新開啟, 開啟時先處理掉已經異動的記錄, 這樣才能清除, 有些資料來源說利用refresh或dbisavechange就可以達成, 但我實測結果是沒有用! 你可以設計每一萬筆做一次, 之前我更新過約100萬筆就是這樣搞, 雖然還是慢 但絕對比一次過要省2倍以上(相較之下) 請問如何做:"開啟時先處理掉已經異動的記錄"?
系統時間:2024-11-25 16:20:57
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!