請問我看到這兩個error message 有大大知道是什麼原因造成 |
尚未結案
|
SamSam1230
中階會員 發表:128 回覆:178 積分:65 註冊:2004-12-23 發送簡訊給我 |
我完全沒有idea 是那裡造成
我猜是跟 ttable ,database 的問題
我是run my program ,
我的程式會開一些database table
之後我沒有close table
再 termainate program
不知道是不是是這樣造成 error msg : Table : Cannot perform the operation on a closed dataset exeption clasee EDBengineError with message ' Key iolation ' Process stopped
|
supman
尊榮會員 發表:29 回覆:770 積分:924 註冊:2002-04-22 發送簡訊給我 |
您好:
1.Cannot perform the operation on a closed dataset
出現這個訊息是因為Table還沒有開啟但是卻去操作如Table.Edit()的動作. 2.exeption clasee EDBengineError with message ' Key iolation ' Process stopped
出現這個訊息是因為資料庫的鍵值重複了,比如說您在資料庫中有設立Field為鍵值,資料庫中原本存在一筆001,現在你又要存一筆也叫001的資料進去就會出現這個錯誤訊息.
|
cxg
中階會員 發表:116 回覆:192 積分:76 註冊:2004-02-12 發送簡訊給我 |
|
SamSam1230
中階會員 發表:128 回覆:178 積分:65 註冊:2004-12-23 發送簡訊給我 |
|
supman
尊榮會員 發表:29 回覆:770 積分:924 註冊:2002-04-22 發送簡訊給我 |
您好:
我想問題應該是DataSet沒有Open的原因,您可以追VCL原始碼就可以發現
在Delphi\Source\Vcl\DBConsts.pas中像下面的定義
SDataSetClosed = 'Cannot perform this operation on a closed dataset';
然後在Delphi\Source\Vcl\DB.pas有這樣的函數
procedure TDataSet.CheckActive;
begin
if State = dsInactive then DatabaseError(SDataSetClosed, Self);
end;
而這個函數存在於每一個DataSet要操作Method前,像下面ADODB.pas的DeleteRecords,他會先用CheckActive做檢查. procedure TCustomADODataSet.DeleteRecords(AffectRecords: TAffectRecords);
begin
CheckActive;
UpdateCursorPos;
CursorPosChanged;
DoRecordsetDelete(Self, AffectRecords);
Resync([]);
end;
|
SamSam1230
中階會員 發表:128 回覆:178 積分:65 註冊:2004-12-23 發送簡訊給我 |
|
supman
尊榮會員 發表:29 回覆:770 積分:924 註冊:2002-04-22 發送簡訊給我 |
|
SamSam1230
中階會員 發表:128 回覆:178 積分:65 註冊:2004-12-23 發送簡訊給我 |
|
SamSam1230
中階會員 發表:128 回覆:178 積分:65 註冊:2004-12-23 發送簡訊給我 |
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
|
SamSam1230
中階會員 發表:128 回覆:178 積分:65 註冊:2004-12-23 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |