• [置顶] BOF或EOF中有一个是“真”,或者当前的记录已被删除,所需的操作要求一个当前的记录。


      做学生管理系统是,会一直弹出一个对话框就是:

     运行时错误’3021‘; BOF或EOF中有一个是“真”,或者当前的记录已被删除,所需的操作要求一个当前的记录。

      

     它几乎无所不在,它的意思很简单就是,它需要数据时,没有数据可用了。

     一般来讲,学生管理系统,就有2个地方最容易出现这个问题。

     第一个:编码错了

    If mrc.EOF = False Then
         mrc.MoveFirst
          mybookmark = mrc.Bookmark
          mrc.MoveLast
          mrc.Delete
                	
          mybookmark = mrc.Bookmark
          Call Viewdata
    End If
    

      这时就会出现这个错误,因为倒数第三句,它找不到该书签,没有数据让它用了,那么就要改为:

     If mrc.EOF Then
         mrc.MoveFirst       
           mybookmark = mrc.Bookmark
          mrc.MoveLast
          mrc.Delete
          mrc.Bookmark = mybookmark
         Call Viewdata
     End If
    


     

         第二种情况就是:它确实没有数据了。

      这种情况很常见,因为毕竟,当你删除了最后一条记录,就没有数据可用了。

      那么我们就来编码一下cancelcommand的代码,让她给一个提示,告诉我们最后一条记录了,删除后,就没有记录。

      (1)这样分为二种情况:一种是正好最后一条记录(但是记录不只有一条),第二种情况就是:有且仅有一条记录,首先要判断出来

     (2)这样就用到了2个if语句,第一个先要判断是不是最后一条记录;第一个要判断的是有却仅有一条记录的,我们要让所有的按钮都不能用|(这样就不会出现这样的错误)。并提示无记录。

     
     
    Private Sub deleteCommand_Click()
       
         mybookmark = mrc.Bookmark
         
         str2$ = MsgBox("确认是否要删除?", vbOKCancel, "删除当前数据")          
        
        If str2$ = vbOK Then
            
            mrc.MoveNext
        
            If mrc.EOF Then‘分为2种情况:一种是是最后一条记录(但不只一条记录);一种是有且仅有一条记录
                  mrc.MovePrevious
                mrc.MovePrevious
    
                If mrc.BOF Then ‘有且仅有一条记录的情况的处理
                       mrc.MoveNext
                    mrc.Delete
                    MsgBox "最后一条记录已经删除!", vbOKOnly + vbExclamation, "警告"
                            txtCourseno.Text = ""
                            txtCoursename.Text = ""
                            comboCoursetype.Text = ""
                            txtCoursedes.Text = ""
                            Frame2.Enabled = False
        
                            firstCommand.Enabled = False
                            previousCommand.Enabled = False
                            lastCommand.Enabled = False
                            nextCommand.Enabled = False
        
                            txtCourseno.Enabled = False
                            txtCoursename.Enabled = False
                            comboCoursetype.Enabled = False
                            txtCoursedes.Enabled = False
    
                            editCommand.Enabled = False
                            updateCommand.Enabled = False
                            cancelCommand.Enabled = False
                            deleteCommand.Enabled = False
    
                Else
                           ‘有很多条记录,但正好删的是第一条记录的处理            
                  mrc.MoveFirst
                mybookmark = mrc.Bookmark
                mrc.MoveLast
                mrc.Delete
                mrc.Bookmark = mybookmark
                Call Viewdata
                End If
            Else                ‘有很多条记录也不是最后一条记录的处理
                'mrc.MoveNext
                mybookmark = mrc.Bookmark
                mrc.MovePrevious
                mrc.Delete
                mrc.Bookmark = mybookmark
                Call Viewdata
            End If
        Else                   ‘不删除的处理
            mrc.Bookmark = mybookmark
           Call Viewdata
        End If
    End if
    
    
    
  • 相关阅读:
    PHP文件打开、关闭、写入的判断与执行
    统计文件大小,以GB、MB、KB、B输出
    超强功能file_put_contents()函数(集成了fopen、fwrite、fclose)
    fputcsv命令,写csv文件,遇到的小问题(多维数组连接符)
    Rename 更改文件、文件夹名称
    PHP学习——定界符格式引起的错误
    SPOJ 1873 Accumulate Cargo
    POJ 3657 Haybale Guessing
    HDU 1512 Monkey King
    POJ 1741 Tree
  • 原文地址:https://www.cnblogs.com/itbole/p/3263825.html
Copyright © 2020-2023  润新知