zoukankan      html  css  js  c++  java
  • [置顶] 如何处理: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)这样就用到了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 Sub
     
     
     


     

     

  • 相关阅读:
    《一线架构师实践指南》第三编Refined Architecture阶段读后感
    大数据技术与应用课堂测试2-数据初级分析分类2
    大数据技术与应用课堂测试2-数据初级分析分类
    对Datax的理解
    2020春季学期第三周总结
    可测试性战术总结
    2020春季学期第一周总结
    以《淘宝网》为例,描述质量属性的六个常见属性场景
    软件架构师如何工作
    MapReduce+HIVE 课堂练习
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3243739.html
Copyright © 2011-2022 走看看