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

ado之adodataset的eof之屬性?

尚未結案
bear
一般會員


發表:8
回覆:6
積分:2
註冊:2002-07-19

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-07-21 01:27:03 IP:211.22.xxx.xxx 未訂閱
請問 在Delphi7下使用ado之adodataset的eof之屬性, 已將紀錄移至最後一筆,但adodataset.eof卻等於false(d7判斷紀錄不在最後一筆,但紀錄確實已移至最後一筆...),why? 是否有別的方法(adodataset)可判別現在紀錄是否再最後一筆? 謝謝
P.D.
版主


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-07-21 02:07:45 IP:61.66.xxx.xxx 未訂閱
引言: 請問 在Delphi7下使用ado之adodataset的eof之屬性, 已將紀錄移至最後一筆,但adodataset.eof卻等於false(d7判斷紀錄不在最後一筆,但紀錄確實已移至最後一筆...),why? 是否有別的方法(adodataset)可判別現在紀錄是否再最後一筆? 謝謝
你在友站有發表過, 我也回過, 再貼一次 我並沒有很注意這個狀況, 不過我就一般的資料庫觀念來說 當指標在第一次移到最後一筆時, 其實 eof 是為 false的, 也就是系統不會觸發 eof, 所謂eof 指的是 end of file, 也就是指標必須超越最後一筆才會使 eof=true 一個最簡單的例子 whlie not table1.eof do begin .... table1.next; end; 當指標在倒數第二筆時, 執行 table1.next 移到最後一筆, 其實 while not eof 仍是 符合的, 而到了在最後一筆, 然後再執行 next 動作, 因為這次沒有記錄可以移動了, 所以 eof 被觸發, 回到了 while not eof 則不符合會跳出來, 這樣明白否? 另外, 你問到如何知道是最後一筆, 一般來說 table.last 就可以知道, last 會將記錄移到最後一筆, 同時觸發 eof 指標 不過不知道你要知道最後一筆的目的在那裡? 因為last的用法不可濫用, 否則 很可能會造成系統負載過大而當機, 舉例來說, 1000萬筆記錄由第1筆下last到 最後一筆, 你可能要等上1個小時以上! 另外, 雖然記錄的eof為True, 但記錄 指標仍然會停留在最後一筆, 所不同的是 eof 為 true 或 false!
bear
一般會員


發表:8
回覆:6
積分:2
註冊:2002-07-19

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-07-21 16:36:45 IP:61.219.xxx.xxx 未訂閱
P.D.大哥,感謝你的指教.... table.lase是將指標移至最後一筆,應該是無法以此判斷, 我要問的是若使用者將指標移至最後一筆後,作某些動作(例:刪除), 則我需要在使用者刪除的紀錄為最後一筆時,作某些動作.... 有無解決方案,再次謝謝...
系統時間:2024-06-24 20:11:32
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!