學生管理系統 EOF和BOF

2021-06-22 20:55:12 字數 2991 閱讀 7577

這個錯誤提示,相信大家都在敲學生管理的時候看到過。

一、eof和bof的理解

一直理解的bof是記錄集第一行,eof是最後一行,這是大錯特錯的。

在進行查詢的時候,資料庫將查詢結果返回查詢端。bof表示當前的指標是在記錄集的前面,eof表示當前指標式在記錄集的最後。

如果同時產生了bof和eof的情況,就是說當前的指標既在上界之外也在下界之外,這樣只有一種情況,就是記錄集是空的,這樣當前指標無論是指到什麼地方都是同時具有bof和eof的屬性。

二、用法

if mrc.bof then   :當前指標的位置是在第一行記錄之前

if mrc.eof then :當前指標的位置是在最後一行記錄之後

if not mrc.eof then  :當前指標的位置沒有到達最後一條記錄

if not mrc.bof then  :當前指標的位置沒有到達第一條記錄

if mrc.bof and mrc.eof  then :沒有任何記錄

if not (mrc.bof and mrc.eof) then :指標位於記錄集的當中,說明一定有記錄

三、**完善

**漏洞很多,關於上面的問題有:查詢窗體、修改窗體、刪除。

以成績管理為例

查詢窗體:

private sub inquireresultmenu_click()

dim txtsql as string

dim msgtext as string

dim mrc as adodb.recordset

txtsql = "select * from result_info "

set mrc = executesql(txtsql, msgtext)

if mrc.eof and mrc.bof then

msgbox "什麼都沒有查什麼查先新增成績資訊吧親", vbokonly + vbexclamation, "警告"

frmaddresult.show

exit sub

else

frminquiresinfo.show

end if

end sub

修改窗體:

private sub modifyresultmenu_click()

dim txtsql as string

dim msgtext as string

dim mrc as adodb.recordset

txtsql = "select * from result_info "

set mrc = executesql(txtsql, msgtext)

if mrc.eof and mrc.bof then

msgbox "什麼都沒有改什麼改,先新增成績資訊吧親", vbokonly + vbexclamation, "警告"

frmaddresult.show

exit sub

else

frmmodifyresult.show

end if

end sub

刪除按鈕:

private sub deletecommand_click()

mybookmark = mrc.bookmark

dim txtsql as string

dim msgtext as string

str2$ = msgbox("真的要刪除當前記錄嗎?", vbokcancel, "刪除當前記錄")

if str2$ = vbok then

mrc.movenext

if mrc.eof then

mrc.movefirst

mybookmark = mrc.bookmark

mrc.movelast

mrc.delete

mrc.bookmark = mybookmark

txtsql = "select * from result_info "

set mrc = executesql(txtsql, msgtext)

if mrc.eof and mrc.bof then

msgbox "最後一條記錄真的要刪除嗎", vbokonly + vbexclamation, "警告"

mrc.close

frame1.enabled = false

frame2.enabled = false

comboexamtype.text = ""

combosid.text = ""

combocourse.text = ""

comboclassno.text = ""

txtname.text = ""

txtresult.text = ""

else

call viewdata

end if

else

mybookmark = mrc.bookmark

mrc.moveprevious

mrc.delete

mrc.bookmark = mybookmark

call viewdata

end if

else

mybookmark = mrc.bookmark

call viewdata

end if

unload me

end sub

EOF和BOF的理解

一開始我沒看例子敲,就按著自己想的去敲,上面的 中command過程是錯誤的,viewdata 是正確的,執行後當我單擊按鈕,錯誤的那個黃條是在viewdata 的第一行,然後我退出看了看正確的 private sub previouscommand click mrc.moveprevious i...

BOF和EOF的區別

在學生和機房中我們都一般涉及到資料庫資料的呼叫和查詢都用到了eof和bof,認識和了解eof和bof的具體含義和熟練掌握並且能夠使用是很有必要的。返回值eofture 當前位置在最後一條記錄跟後面,無記錄 false 當前位置在最後一條記錄或在最後一條記錄之前 返回值bofture 當前位置在第一條...

機房收費系統之五(EOF和BOF)

1.recordset開啟的第乙個記錄為當前記錄 2.用field物件獲得當前記錄的各個資料列 3.recordset物件可用以下5種方法定位到當前記錄 movefifst 使當前指標指向第乙個記錄 moveprevious 使記錄指標指向前乙個記錄 movelast 使記錄指標指向最後一條記錄 m...