線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2282
推到 Plurk!
推到 Facebook!

請問我看到這兩個error message 有大大知道是什麼原因造成

尚未結案
SamSam1230
中階會員


發表:128
回覆:178
積分:65
註冊:2004-12-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-06-15 12:28:07 IP:218.103.xxx.xxx 未訂閱
我完全沒有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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-06-15 12:42:52 IP:61.70.xxx.xxx 未訂閱
您好: 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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-06-15 13:04:37 IP:222.35.xxx.xxx 未訂閱
這種問題最好把代碼貼上來讓大家討論一下。只有錯誤信息只能看出是什麽類型的錯誤。
SamSam1230
中階會員


發表:128
回覆:178
積分:65
註冊:2004-12-23

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-06-15 15:55:46 IP:218.103.xxx.xxx 未訂閱
謝謝兩位大大 特別是supman 由於code 太多太大 所以也不知道要怎樣上傳 我自己先從supman 提那兩點下手看看 有問題再請教大大好了 要問一下開啟的意思是 Active = True 嗎? 如果是, 我已經有這樣做
supman
尊榮會員


發表:29
回覆:770
積分:924
註冊:2002-04-22

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-06-15 16:26:50 IP:61.70.xxx.xxx 未訂閱
您好: 我想問題應該是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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-06-16 14:57:03 IP:218.103.xxx.xxx 未訂閱
第二個問題我把有問題的table 拿走重開就可以了 第一個問題.. 請問supman大大可以再講一下嗎 我應該怎麼做 不是check active = false 然後 把 Active = true 那就開了嗎???
supman
尊榮會員


發表:29
回覆:770
積分:924
註冊:2002-04-22

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-06-16 15:38:47 IP:61.70.xxx.xxx 未訂閱
您好: 我覺得您先用單步追蹤,然後看是哪一行出了問題,把他上面10行左右貼出來看看,這樣才有辦法猜測是哪邊有問題.
SamSam1230
中階會員


發表:128
回覆:178
積分:65
註冊:2004-12-23

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-06-16 15:55:20 IP:218.103.xxx.xxx 未訂閱
謝謝supman 大大 我會try try 再請教你
SamSam1230
中階會員


發表:128
回覆:178
積分:65
註冊:2004-12-23

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-06-17 12:01:26 IP:218.103.xxx.xxx 未訂閱
想搞清楚一點是 ttable = > active = true , open 這兩個在應用會有什麼的分別呢? 謝謝
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-06-17 12:58:42 IP:202.39.xxx.xxx 未訂閱
引言: 想搞清楚一點是 ttable = > active = true , open 這兩個在應用會有什麼的分別呢? 謝謝
您可以看 Source 其實 TTable.Open; 就是呼叫 TTable.Active := True; -- hagar.
SamSam1230
中階會員


發表:128
回覆:178
積分:65
註冊:2004-12-23

發送簡訊給我
#11 引用回覆 回覆 發表時間:2005-06-17 14:35:59 IP:218.103.xxx.xxx 未訂閱
謝謝大大
系統時間:2024-04-27 7:03:06
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!