這個錯誤提示,相信大家都在敲學生管理的時候看到過。
一、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...