学生信息管理系统(二)删除信息

1.先分析下删除的过程。
    假设现在已经添加了记录,3个记录.当前显示第一个记录时,删除.指针向下移动显示第二个记录。第二个同理。但当前显示第三个记录时,删除第三个,指针指向EOF,这不是是我们想要的,我们要的是删除第三个记录后,显示第一个记录。
    图1解:

学生信息管理系统(二)删除信息_第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张图片

解决办法:
  在修改班级信息窗体的加载过程中添加如下语句:

代码(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:

学生信息管理系统(二)删除信息_第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)来进行的。我们平常的思维是先添加记录然后在对记录进行修改,当没有添加记录时,就不会去打开修改记录的窗体,但无意时打开了,问题就出来了。这就是平时我们考虑问题的不周到造成的,不过问题出现了那我们就解决问题。



 


 

你可能感兴趣的:(学生信息管理系统(二)删除信息)