在win8作業系統下執行發生了delete 錯誤.... |
尚未結案
|
wayneboy
一般會員 發表:1 回覆:0 積分:0 註冊:2005-06-20 發送簡訊給我 |
現象: 由Delphi 2007撰寫的應用程式於Win XP與Win 7下尚未出現的錯誤,在win8作業系統下發生了!!執行刪除DBGgrid最後一筆資料時出現錯誤訊息(可能是BOF或EOF的值為true,或目前的資料己被刪除...),刪除別筆資料或只有一筆資料下刪除時不會)。 追查情況: 實際以win8環境慢慢Trace code後,竟是死在ADODB(ADODB.pas)的DoRecordsetDelete下 .. [code delphi] procedure DoRecordsetDelete(DataSet: TCustomADODataSet; AffectRecords: TAffectRecords); begin with DataSet do try Recordset.Delete(AffectRecordsValues[AffectRecords]); { When CacheSize > 1, Recordset allows fetching of deleted records. Calling MovePrevious seems to work around it } if (CacheSize > 1) and (PRecInfo(ActiveBuffer).RecordNumber <> 1) then begin Recordset.MovePrevious; Recordset.MoveNext; end; Recordset.MoveNext; // win8環境執行時,在此發生此錯誤,但XP及Win7則正常 except on E: Exception do begin Recordset.CancelUpdate; DatabaseError(E.Message); end; end; end; [/code] 尚不知為何只在Win8執行才會在該行出錯,發現dataset的CacheSize調整為1可避開此錯誤(CacheSize值預設是1),不知是否真要將程式所有dataset的CacheSize調整為1來解決?是否會因此調整影響執行效率? 編輯記錄
wayneboy 重新編輯於 2013-08-26 15:43:56, 註解 無‧
|
chris681016
中階會員 發表:69 回覆:122 積分:98 註冊:2006-10-12 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |