VB数据库中EOF和BOF的认识与用法
一、認(rèn)識(shí)
? ? ? BOF:指當(dāng)前記錄位置位于Recordset對(duì)象的第一個(gè)記錄之前
? ? ? EOF:指當(dāng)前記錄位置位于Recordset對(duì)象的最后一個(gè)記錄之后?
? ?這兩個(gè)的屬性值均返回布爾型:True和False,使用BOF 和 EOF 屬性可確定 Recordset 對(duì)象是否包含記錄,或者從一個(gè)記錄移動(dòng)到另一個(gè)記錄時(shí)是否超出 Recordset 對(duì)象的限制。 下表即是各自的使用說明及查詢結(jié)果:?
| ? | EOF | BOF |
| True | 當(dāng)前行的位置是在最后一行的后面,無記錄 | 當(dāng)前行的位置是在第一行之前,無記錄 |
| False | 當(dāng)前行的位置是在最后一行或其前面,有記錄 | 當(dāng)前位置是在第一行或其后,有記錄 |
?說明:
(1)如果當(dāng)前記錄位于第一個(gè)記錄之前,BOF 屬性將返回 True(-1),如果當(dāng)前記錄為第一個(gè)記錄或位于其后則將返回 False (0)。
(2)如果當(dāng)前記錄位于 Recordset 對(duì)象的最后一個(gè)記錄之后 EOF 屬性將返回True,而當(dāng)前記錄為 Recordset 對(duì)象的最后一個(gè)記錄或位于其前,則將返回 False。
(3)如果 BOF 或 EOF 屬性為 True,則沒有當(dāng)前記錄。
(4)如果打開沒有記錄的 Recordset 對(duì)象,BOF 和 EOF 屬性將設(shè)置為True,而 Recordset 對(duì)象的 RecordCount 屬性設(shè)置為零。打開至少包含一條記錄的 Recordset 對(duì)象時(shí),第一條記錄為當(dāng)前記錄,而BOF 和 EOF 屬性為 False。
(5)如果刪除 Recordset 對(duì)象中保留的最后記錄,BOF 和 EOF屬性將保持 False,直到重新安排當(dāng)前記錄。
? ? 而在我們的學(xué)生信息管理系統(tǒng)中,會(huì)涉及到對(duì)指針進(jìn)行的MoveFirst、MoveLast、MovePrevious與MoveNext四種方法。一般來說,當(dāng)需要對(duì)記錄集Recordset中的所有行進(jìn)行操作時(shí),代碼可以使用MoveNext,循環(huán)遍歷各行,直到EOF屬性被置為True
如果當(dāng) EOF 被置為 True 時(shí)再使用 MoveNext ,或當(dāng) BOF被置為 True 時(shí)再使用 MovePrevious ,都將產(chǎn)生一個(gè)提示代號(hào)為‘3021’的錯(cuò)誤。
? ? 需要注意的是:允許一個(gè)Move 方法并非意味著,該方法能成功地定位某行。它僅表示執(zhí)行這個(gè)指定的 Move 方法是允許的,并且不產(chǎn)生一個(gè)錯(cuò)誤。 BOF 和 EOF屬性的狀態(tài)可以隨著該移動(dòng)的結(jié)果而改變。?
二、用法
? ? If objRs.BOF Then
? ? 表示:當(dāng)前指針的位置是在第一行記錄之前,則...
? ? If objRs.EOF Then
? ? 表示:當(dāng)前指針的位置是在最后一行記錄之后,則...
? ? If Not objRs.EOF Then
? ? 表示:當(dāng)前指針的位置沒有到達(dá)最后一條記錄
? ? If Not objRs.BOF then
? ? 表示:當(dāng)前指針的位置沒有到達(dá)第一條記錄
? ? 推薦使用下面兩條
? ? If Not (objRs.BOF AND objRs.EOF) Then
? ? 表示:指針位于RecordSet 的當(dāng)中(并非是最后一條和第一條) ,說明一定有記錄。
? ? If objRs.BOF AND objRs.EOF Then
? ? 表示:沒有任何記錄
總結(jié)
以上是生活随笔為你收集整理的VB数据库中EOF和BOF的认识与用法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SQL命令大全-中英文对照
- 下一篇: JavaScript的一些常用方法