在調學生的時候同樣遇到了3021 這個問題,下面是解決方法
我們先來了解一下EOF,BOF的用法:
BOF:指當前記錄位置位於Recordset對象的第一個記錄之前;
EOF:指當前記錄位置位於Recordset對象的最後一個記錄之後。
這兩個的屬性值均返回布爾型:True和False,使用BOF和 EOF 屬性可確定 Recordset 對象是否包含記錄,或者從一個記錄移動到另一個記錄時是否超出 Recordset 對象的限制。
說明:
(1)如果當前記錄位於第一個記錄之前,BOF屬性將返回 True(-1),如果當前記錄爲第一個記錄或位於其後則將返回 False (0)。 (2)如果當前記錄位於Recordset 對象的最後一個記錄之後 EOF 屬性將返回True,而當前記錄爲 Recordset 對象的最後一個記錄或位於其前,則將返回 False。
( 3)如果BOF 或 EOF 屬性爲 True,則沒有當前記錄。
(4)如果打開沒有記錄的Recordset 對象,BOF 和 EOF 屬性將設置爲True,而 Recordset 對象的 RecordCount 屬性設置爲零。打開至少包含一條記錄的 Recordset 對象時,第一條記錄爲當前記錄,而BOF 和 EOF 屬性爲 False。
(5)如果刪除Recordset 對象中保留的最後記錄,BOF 和 EOF屬性將保持 False,直到重新安排當前記錄。
具體用法:
If objRs.BOF Then
表示:當前指針的位置是在第一行記錄之前,則…
If objRs.EOF Then
表示:當前指針的位置是在最後一行記錄之後,則…
If Not objRs.EOF Then
表示:當前指針的位置沒有到達最後一條記錄
If Not objRs.BOF then
表示:當前指針的位置沒有到達第一條記錄
推薦使用下面兩條 If Not (objRs.BOF AND objRs.EOF) Then
表示:指針位於RecordSet 的當中(並非是最後一條和第一條) ,說明一定有記錄。
If objRs.BOF AND objRs.EOF Then 表示:沒有任何記錄
解決方法:
加一個判斷語句,遇到就會自動跳過
on Error GoTo 1
mrc.MoveNext
call viewData
1:
If Err = 3021 then
If MsgBox ("已經沒有數據,是否添加數據?",vbOKCancel, ”提示 ") = vbOK then
frmAddresult.show
end if
end if
end sub
當點擊下一條沒有數據的時候,就會彈出提示框問是否添加數據,這樣就可以避免出現錯誤。