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

TDBXError 超過容量而無法建立新異動 這是什麼樣的錯誤?

缺席
pc1820
一般會員


發表:3
回覆:2
積分:1
註冊:2003-05-22

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-06-15 03:42:36 IP:61.67.xxx.xxx 訂閱
各位先進大家好.  我使用DBExpress開發資料庫應用程式. DB是SQL Server 2000. 
當我在執行程式後, 新增修改資料都沒問題也可正常儲存, 但是偶而新增一筆要儲存時資料出現一個錯誤,
錯誤訊息是: TDBXError 超過容量而無法建立新異動 ,
請問這錯誤是在什麼情況下會發生. 原因為何?

我使用DBExpress的方式設計程式的.
TSQLConnection <- TSQLQuery <- TDataSetProvider <- TClientDataSet <- TDataSource
另外所有的Form都繼承自一個BaseForm, BaseForm上放了上列的元件,
ClientDataSet的AfterEdit AfterInsert AfterDelete會呼叫一個進行資料Transaction的程序.

procedure TBaseForme.UpdateMasterData;
var
ATD : TTransactionDesc;
begin
ATD.TransactionID := 1;
ATD.IsolationLevel := xilREADCOMMITTED;

qyMaster.SQLConnection.StartTransaction(ATD);
try
//將游標變為漏斗
Screen.Cursor := crHourglass;
try
if cdsMaster.ChangeCount > 0 then
cdsMaster.ApplyUpdates(0);
except on E: Exception do
begin
qyMaster.SQLConnection.Rollback(ATD);
cdsMaster.CancelUpdates;
raise Exception.Create('儲存失敗!' #10#13#10#13 '錯誤訊息:' #10#13 E.Message);
end;
end;
qyMaster.SQLConnection.Commit(ATD);
finally
//把游標變為預設值
Screen.Cursor := crDefault;
end;
end;

附註: 我這程式是2-Tire, 沒有中間層.

pc1820
一般會員


發表:3
回覆:2
積分:1
註冊:2003-05-22

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-06-18 00:03:31 IP:61.67.xxx.xxx 訂閱
找到問題發生原因了. 我新增一張Jpg圖片到一個Blob欄位儲存後, 就會出現該問題, 使用Midas的ClientDataSet會有這種問題,
我試過幾種方法目前還是無法解決, 縱使圖片存進去, 重讀後的圖片會亂掉, 我用ADO去試就沒有這個問題.
系統時間:2024-06-13 18:37:57
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!