浏览RecordSet中的记录需要两步:1.定位当前的记录,RecordSet打开的第一个记录为当前记录;2.用Field对象获得当前记录的各个数据列。
RecordSet对象可用下列5种方法定位到当前记录:
MoveFirst:使当前指针指向第一个记录;
MoveNext:使当前指针指向下一个记录;
MovePrevious:使记录指针指向前一个记录;
MoveLast:使记录指针指向最后一个记录;
Move n:使记录指针指向当前记录算起的第n个记录。
RecordSet的两个属性:
Bof——before of file
Eof——end of file
以上两个属性返回布尔型:
Bof | Eof | |
true | 当前行的位置是在第一行之前,无记录 | 当前行的位置是在最后一行的后面,无记录 |
false | 当前位置是在第一行或其后,有记录 | 当前行的位置是在最后一行或其前面,有记录 |
这两个属性和记录定位方法结合即可浏览recordset中的所有记录:
MoveFirst & MoveLast | MovePrevious, move<0 | move 0 | MoveNext, move>0 | |
bof=true & eof=false | 允许 | 错误 | 错误 | 允许 |
bof=false & eof=true | 允许 | 允许 | 错误 | 错误 |
同时为true | 错误 | 错误 | 错误 | 错误 |
同时为false | 允许 | 允许 | 允许 | 允许 |
1.If objRs.BOF Then
表示:当前指针的位置是在第一行记录之前,则...
2.If objRs.EOF Then
表示:当前指针的位置是在最后一行记录之后,则...
3.If Not objRs.EOF Then
表示:当前指针的位置没有到达最后一条记录
4.If Not objRs.BOF then
表示:当前指针的位置没有到达第一条记录
5.If Not (objRs.BOF AND objRs.EOF) Then
表示:指针位于RecordSet 的当中(并非是最后一条和第一条) ,说明一定有记录。
6.If objRs.BOF AND objRs.EOF Then
表示:没有任何记录
Private Sub Form_Activate() '改进form-load事件,在窗体未显示之前,判断有无记录,
'若无记录则修改窗体的功能不能执行,没必要显示,跳转到添加信息
Dim txtSQL As String
Dim msgtext As String
Dim msgvalue As Integer
txtClassno.Enabled = False
comboGrade.Enabled = False
txtDirector.Enabled = False
txtClassroom.Enabled = False
txtSQL = "select * from class_Info "
Set mrc = ExecuteSQL(txtSQL, msgtext)
If mrc.EOF And mrc.BOF Then '无记录时mrc.EOF=true和mrc.BOF=true同时满足
msgvalue = MsgBox("当前无记录!您是否添加班级信息?", 4 + 32 + 256, "温馨提示")
If msgvalue = 6 Then '选择是,直接跳转到添加信息
Unload frmModifyclassinfo
Load frmAddclassinfo
frmAddclassinfo.Show
Else '选择否,因为没有记录,不必显示修改窗口
Unload frmModifyclassinfo
End If
Else '有记录的情况,显示第一条记录
mrc.MoveFirst
Call viewData
myBookmark = mrc.Bookmark
mcclean = True
End If
End Sub