学生管理系统最主要的步骤就是 添加——修改——查空——查重——更新
下面是删除记录的代码,经大神指点,终于理清了它的逻辑
'记下当前记录位置
myBookmark = mrc.Bookmark
'提示是否删除
str2$ = MsgBox("是否删除当前记录?", vbOKCancel, "删除当前记录")
'判断按钮类型
If str2$ = vbOK Then
'移动到数据集下一条记录
mrc.MoveNext
'判断数据集对象是否为空
If mrc.EOF Then
mrc.MovePrevious
mrc.MovePrevious '如果数据库中只有一条记录的时候,防止删除记录
If mrc.BOF Then
mrc.MoveNext
mrc.Delete
MsgBox "最后一条记录已经删除,记录已经为空!", vbOKOnly + vbExclamation, "警告"
Unload Me
Else
'移动到数据集的第一条记录
mrc.MoveFirst
'记录当前记录的位置
myBookmark = mrc.Bookmark
'移动到最后一条记录
mrc.MoveLast
'删除记录
mrc.Delete
mrc.Bookmark = myBookmark
'调用函数显示数据
Call viewData
End If
Else
'记载当前位置
mybookmard = mrc.Bookmark
'移动到前一条记录
mrc.MovePrevious
'删除记录
mrc.Delete
'回到原来位置
mrc.Bookmark = myBookmark
'调用函数显示数据
Call viewData
End If
Else
mrc.Bookmark = myBookmark
Call viewData
End If
点击修改按钮时,会出现四种情况:
第一种情况:当数据库中只有一条记录时,点击确定删除按钮
首先记下当前位置,记录集向下移动,判断 If mrc.EOF Then 这条语句,此时记录集指针指向EOF,语句为True,继续执行这个if 语句下的命令,向上移动一条记录,此时指针指向的是要删除的那条记录,为防止数据库中只有一条记录的时候删除它,再向上移动一个记录,此时指针指向BOF,判断If mrc.BOF Then这条语句,为True ,继续执行该if 语句下的命令,指针向下移动,然后删除记录这条记录,卸载窗体,退出if语句。该情况下BOF 为False,EOF为False .
第二种情况:当数据库中有两条记录时,点击删除第一条记录
首先记下当前位置,记录集向下移动,判断 If mrc.EOF Then 这条语句,此时指针指向最后一条记录,该语句为False,不用执行其下命令,执行else后面的语句,标记此时位置,移动到上一条记录,然后删除记录(该记录即为要删除的那条记录),回到刚才标记的位置,及此数据库中的最后一条记录的位置,调用函数显示数据。该情况下BOF为True,EOF为True
第三种情况:当数据库中有两条记录时,点击删除第二条记录
首先标记记录当前位置,指针向下移动,判断 If mrc.EOF Then 这条语句,此时记录集指针指向EOF,语句为True,继续执行这个if 语句下的命令,向上移动一条记录,此时指针指向的是要删除的那条记录,为防止数据库中只有一条记录的时候删除它,再向上移动一个记录,此时指针指向第一条记录,判断If mrc.BOF Then这条语句,为False,则执行该If语句的else下的命令,指针指向第一条记录,标记该位置,然后指向最后一条记录,删除该记录(该记录即为要删除的那条记录),回到刚才标记的位置,及此数据库中的第一条记录,调用函数显示数据。该情况下BOF为True ,EOF为False
第四种情况:当数据库中有三条记录,点击删除第二条记录
首先标记当前位置,指针向下移动,判断 If mrc.EOF Then 这条语句,为False,不执行该If 语句下的命令,直接执行else下的命令,标记此时位置,移动到上一条记录,然后删除记录(该记录即为要删除的那条记录),回到刚才标记的位置,及此数据库中的最后一条记录的位置,调用函数显示数据。该情况下BOF为True,EOF为False