學生信息管理系統之錯誤3021

在敲學生的過程中,遇到了一個3021的錯誤,如圖:

這個時候就要具體瞭解一下EOF和BOF了。

EOF(End of File)指當前記錄位置位於Recordset對象的最後一個記錄之後。

BOF:(Before of File)指當前記錄位置位於RecordSet對象的第一個記錄之前。

EOF和BOF都返回一個布爾值,使用ADO連接數據庫進行查詢的時候,數據庫將查詢結果返回查詢端,在查詢端的內來存裏面就會有一個列表,這個列表存放的就是查詢的結果。這個內存中的列表就是數據集。在你的程序裏面rs就是表示這個數據集。bof表示rs當前的指針是指在了數據集的前面,比如數據集裏面有編號爲1,2,3,4的4條記錄,但是rs指向的編號是-1,這樣就會符合了bof的情況。同理,當rs的指針指向5,而第五條記錄並不存在,這樣就會產生了eof的情況。

如果同時產生了bof和aof的情況,就是源說rs的指針既在上界之外也在下屆之外,這樣只有一種情況,就是rs所代表的數據集是空的,zhidao這樣rs的指針無論是指到什麼地方都是同時具有bof和eof的屬性。

你的情況估計是sql語句查詢出來的值是空的,因此數據集也是空的,在讀取rs數據集裏面的值的時候就會報這個錯誤。
使用 if rs.bof and rs.eof then 這個判斷可以判別rs裏面是否有沒有數據集,如果符合這個條件,說明數據集是空的,在程序中就要繞開對rs裏字段的訪問。

當然,我所遇到的問題就是當我把加進去的學籍信息都刪掉之後,再點開修改學籍的窗體就會報錯,這個原因就是數據庫裏面第一項沒有數據,而BOF是指向第一個記錄的,所以就會報錯(個人是這樣理解的,理解的有偏差還希望各位大佬指點一下),所以再frmmain窗體中就要設置,再修改學籍時,如果裏面是空的,要提示先添加學籍信息等。如圖:

 

(PS:另外找到一篇很不錯博客講的很詳細,大家也可以參考一下:https://blog.csdn.net/xyf13920745534/article/details/77622724

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章