深入淺出理解 BOF和EOF

來源:互聯網
上載者:User

             在做學生管理的過程中,多次運用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

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.