在做學生管理的過程中,多次運用BOF和EOF,使文章的邏輯更加的鮮明,剛開始理解不是很到位、有點小偏差,隨著大家的交流與學習,逐漸加強了對其的認識,接下來大家共同學習!
解釋說明:
ADO Recordset 對象用於容納一個來自資料庫表的記錄集。一個 Recordset 對象由記錄和列(欄位)組成。
在 ADO 中,此對象是最重要且最常用於對資料庫的資料進行操作的對象。
BOF (Before of File)指示目前記錄位置位於 Recordset 對象的第一個記錄之前。
Private Sub previousCommand_Click()On Error GoTo P_Err'錯誤語句 mrc.MovePrevious If mrc.BOF Then '如果目前記錄位於第一個記錄,則移向最後一個記錄 mrc.MoveLast End If Call viewDataP_EXIT: Exit SubP_Err: MsgBox "無任何記錄!", vbOKOnly + vbCritical, "警告" '驗證無法正常完成 GoTo P_EXITEnd Sub
EOF(End of File) 指示目前記錄位置位於 Recordset 對象的最後一個記錄之後。
Private Sub deleteCommand_Click() On Error GoTo P_Err myBookmark = mrc.Bookmark '標記 Str2$ = MsgBox("是否刪除目前記錄?", vbOKCancel, "刪除目前記錄") If Str2$ = vbOK Then '首先是先測試是否要刪除的記錄為最後一條記錄 mrc.MoveNext '如果為最後,則先把目前記錄移動到第一個 If mrc.EOF Then mrc.MoveFirst '書籤移動到第一個 mybookmarl = mrc.Bookmark mrc.MoveLast '然後在移動到最後 mrc.Delete '刪除 mrc.Bookmark = myBookmark '找到剛才的書籤 Call viewData Else myBookmark = mrc.Bookmark '標記如果不是最後一個 mrc.MovePrevious '標記下一個,因為刪除以後就要移動到下一個 mrc.Delete '刪除 mrc.Bookmark = myBookmark ' 找回剛才標記的書籤 Call viewData End If '顯示記錄 Else mrc.Bookmark = myBookmark '取消標幟 Call viewData End IfP_EXIT: Exit SubP_Err: txtName.Text = "" txtBorndate.Text = "" txtSID.Text = "" txtRudate.Text = "" txtTel.Text = "" txtAddress.Text = "" txtComment.Text = "" MsgBox "無任何記錄!", vbOKOnly + vbCritical, "警告" '驗證無法正常完成 GoTo P_EXITEnd Sub
傳回值:BOF 和 EOF 屬性返回布爾型值。
使用 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,直到重新安排目前記錄。
以下表格說明不同 BOF 和 EOF 屬性群組合所允許的 Move 方法。
|
MoveFirst, MoveLast |
MovePrevious, Move < 0 |
Move 0 |
MoveNext, Move > 0 |
BOF=True, EOF=False |
允許 |
錯誤 |
錯誤 |
允許 |
BOF=False, EOF=True |
允許 |
允許 |
錯誤 |
錯誤 |
| 同時為 True |
錯誤 |
錯誤 |
錯誤 |
錯誤 |
| 同時為 False |
允許 |
允許 |
允許 |
允許 |
允許使用 Move 方法並不能保證該方法成功定位記錄,只是意味著調用指定的 Move 方法不會產生錯誤。
下表說明當調用各種 Move 方法但未成功定位記錄時 BOF 和 EOF 屬性設定所發生的情況。
|
BOF |
EOF |
| MoveFirst, MoveLast |
設定為 True |
設定為 True |
| Move 0 |
沒有變化 |
沒有變化 |
| MovePrevious, Move < 0 |
設定為 True |
沒有變化 |
| MoveNext, Move > 0 |
沒有變化 |
設定為 True |