1.先分析下删除的过程。
假设现在已经添加了记录,3个记录.当前显示第一个记录时,删除.指针向下移动显示第二个记录。第二个同理。但当前显示第三个记录时,删除第三个,指针指向EOF,这不是是我们想要的,我们要的是删除第三个记录后,显示第一个记录。
图1解:
代码如下:
代码(1)Private Sub deleteCommand_Click() myBookmark = mrc.Bookmark '对当前显示的记录作为标签 str2$ = MsgBox("是否删除当前记录?", vbOKCancel, "删除当前记录") '单击删除按钮时弹出对话框提示是否删除当前记录 If str2$ = vbOK Then '如果删除当前记录 mrc.MoveNext '记录指针指向下一个记录 If mrc.EOF Then '如果EOF为真则说明刚开始显示的记录是记录集中最后一个记录 mrc.MoveFirst '记录指针指向第一个记录 myBookmark = mrc.Bookmark '给第一个记录做个标签 mrc.MoveLast '记录指针指向最后一个记录(也是是当前显示的记录) mrc.Delete '删除最后一个记录 mrc.Bookmark = myBookmark '显示刚才坐标签的记录(第一条记录) Call viewData '调用函数显示删除后的记录 Else '如果刚开始显示的不是最后一个记录, myBookmark = mrc.Bookmark '给当前记录作标签(即mrc.movenext) mrc.MovePrevious '记录指针指向上一个记录(刚开始显示的记录) mrc.Delete '删除上一个记录 mrc.Bookmark = myBookmark ' 显示刚才做的标签,显示记录 Call viewData '调用函数显示删除后的记录 End If
Else '如果不删除记录 mrc.Bookmark = myBookmark '显示最开始做的标记记录 Call viewData '调用函数显示。 End If End Sub
2.删除记录时出现的错误。
2.1单击修改班级信息时,因为数据库中没有记录而出现的错误
图2:
代码(2) txtSQL = "select * from class_Info " Set mrc = ExecuteSQL(txtSQL, MsgText) If mrc.EOF = False Then mrc.MoveFirst Call viewData myBookmark = mrc.Bookmark Else MsgBox "没有纪录!", vbOKOnly + vbExclamation, "警告" Exit Sub End If
当数据库中没有记录时,会弹出提示框显示“没有记录”
但修改班级信息的窗体还是会加载,已经显示没有记录了加载了窗体也没有用,我想单击提示框中的“确定”按钮后直接退出该窗体所以在
MsgBox "没有纪录!", vbOKOnly + vbExclamation, "警告"下添加了
Unload Me 但是有出现了新的错误
图3:
因为在主菜单中单击修改班级信息按钮时加载窗体,必须的先加载完之后在进行对窗体的操作,后来想在主窗体中进行设置使查询到数据库中没有记录后不加载窗体,但没有成功,待解决。
2.2当打开窗体进行删除操作时,当删除最后一个记录时也会出现图1显示的错误。
对原有的代码进行了修改 对已经注释的代码不在重复注释,
代码如下:
代码(3): Private Sub deleteCommand_Click() mybookmark = mrc.Bookmark str2$ = MsgBox("是否删除当前记录?", vbOKCancel, "删除当前记录") If str2$ = vbOK Then mrc.MoveNext If mrc.EOF Then mrc.MoveFirst If mrc.RecordCount = 1 Then '如果记录集中只有一个记录(即当前要被删除的记录) mrc.Delete '删除记录 MsgBox "没有记录", vbOKOnly + vbExclamation, "警告" '弹出显示框显示没有记录 Unload Me '卸载该窗体 Exit Sub Else '如果不是最后一个记录 其他代码的功能跟已经注释的相同 mybookmark = mrc.Bookmark mrc.MoveLast mrc.Delete mrc.Bookmark = mybookmark Call viewData End If Else mybookmark = mrc.Bookmark mrc.MovePrevious mrc.Delete mrc.Bookmark = mybookmark Call viewData End If Else mrc.Bookmark = mybookmark Call viewData End If End Sub
3.在删除记录中不适用标签。
代码如下:
代码(4) Private Sub deleteCommand_Click() str2$ = MsgBox("是否删除当前记录?", vbOKCancel, "删除当前记录") If str2$ = vbOK Then mrc.Delete mrc.MoveNext If mrc.RecordCount = 0 Then MsgBox "没有记录", vbOKOnly + vbExclamation, "警告" Unload Me Exit Sub Else If mrc.EOF Then mrc.MoveFirst Call viewData Else Call viewData End If End If End If End Sub
相比较代码(4)更简洁,删除记录说删就删。先删除当前的记录然后在找下个记录,有就显示,没有就显示没有记录
代码(3)先找下一个记录做个标签,然后在回来把当前的记录删掉,在显示作标签的记录。
4.个人感受
在敲删除记录的代码时 我是仿照代码(1)来进行的。我们平常的思维是先添加记录然后在对记录进行修改,当没有添加记录时,就不会去打开修改记录的窗体,但无意时打开了,问题就出来了。这就是平时我们考虑问题的不周到造成的,不过问题出现了那我们就解决问题。