背景:
在第一条的记录上点击上一条记录(按钮),窗体显示最后一条记录。在最后一条记录上点击下一条记录(按钮)记录变成了第一条。数据就这么循环着。
源代码
Private Sub nextCommand_Click() ’点击下一条按钮
mrc.MoveNext
If mrc.EOF Then
mrc.MoveFirst
End If
Call viewData
End Sub
Private Sub previousCommand_Click() ’点击上一条按钮
mrc.MovePrevious
If mrc.BOF Then
mrc.MoveLast
End If
Call viewData
End Sub
这个代码执行时,显示游标从当前记录上移,移到上一条记录,如果出现bof(向上移动时)则让他跳转到最后一条记录,出现eof则跳到第一条记录,不了解bof与eof的请查看我的上上上的上篇博客,它的末尾有介绍。传送门
更改代码
Private Sub cmdPrevious_Click() '点击上一条按钮
cmdlast.Enabled = True
cmdNext.Enabled = True
If mrc.EOF And mrc.BOF Then
str1 = MsgBox("没有学籍信息,是否添加学籍信息?", vbOKCancel, "提示")
If str1 = vbOK Then
frmAddclassinfo.Show
frmModifyclassinfo.Hide
Else
MsgBox "什么都没有你点什么?", vbOKCancel, "提示"
End If
Else
'数据集向后移动
mrc.MovePrevious
'判断是否到末位置
If mrc.BOF Then
cmdPrevious.Enabled = False
MsgBox "这已经是第一条数据了,没有上一条了", vbOKOnly + vbExclamation, "提示"
mrc.MoveNext
Else
Call viewData
End If
End If
End Sub
Private Sub cmdNext_Click() '点击下一条按钮
cmdPrevious.Enabled = True
cmdFirst.Enabled = True
If mrc.EOF And mrc.BOF Then
str1 = MsgBox("没有班级信息,是否添加班级信息?", vbOKCancel, "提示")
If str1 = vbOK Then
frmAddclassinfo.Show
frmModifyclassinfo.Hide
Else
MsgBox "什么都没有你点什么?", vbOKCancel, "提示"
End If
Else
'数据集向后移动
mrc.MoveNext
'判断是否到末位置
If mrc.EOF Then
MsgBox "这已经是最后一条数据了,没有下一条了", vbOKOnly + vbExclamation, "提示"
cmdNext.Enabled = False
cmdlast.Enabled = False
mrc.MovePrevious
Else
Call viewData
End If
End If
End Sub
这两个代码的逻辑是:由于我已经点击并显示出了第一条数据(最后一条数据),那么我就直接将上一个信息(下一个信息)以及第一个信息(最后一个信息)这两个按钮不能用,来告诉用户这已经是第一条(最后一条)数据了。
所以1.首先当我显示的是第一条数据时,我会将两个按钮不能用,那么在我点击下一个数据的按钮时,首先将两个按钮恢复到原来可以使用的状态。
2.进行一个空集判断,判断我里面是否有数据,若是没有则提示没有数据是否去添加。若点击确定添加,则跳转到添加班级界面,否则会提示。
3.在不是空集的情况下,让游标先向上移,判断他是否是bof,若是bof也就是没有数据了,此数据是第一个数据的情况下给出提示告知已经是第一条数据了,然后将显示第一条数据和上一个数据的这两个按钮不能用并将游标移回原来的位置。若不是第一条数据则显示当前游标所指(游标已将上移了,此时没有移回来)的数据
这样我们就可以不让他进行循环查询了
欢迎各位大神斧正~