学生信息管理系统——常见问题(二)

前端之家收集整理的这篇文章主要介绍了学生信息管理系统——常见问题(二)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

问题1:

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

在敲学生信息管理系统时,应该很多人都遇到了这种情况:

数据库中没有添加记录,但我们点击修改记录时,会出现如下提示


首先先说一下BOF和EOF的意思吧!因为只有知道错误是什么,我们才能对症下药......

BOF和EOF 他们是记录集(recordset)对象的一种方法,BOF(before of file)是指记录集对象的指针指向第一个记录之前(不是第一条记录),EOF(end of file)是指记录指针指向最后一个记录之后(不是最后一条记录)。使用这两个属性就可以使记录集浏览记录更加完善。如图:

只有在上图中的情况下,BOF和EOF 他们才会 返回布尔值(True),否则返回(False),True为属性默认值。

所以我们需要做的,就是当BOF或EOF为True时我们该怎么做......

下面有三种解决办法:

一、进行错误处理,错误处理的本质就是当遇到错误时,可以跳过该错误,直接进行下一步,以便于程序顺利进行!那么我们根据这个原理在程序中添加错误处理,程序便可迎刃而解!

<span style="font-family:KaiTi_GB2312;font-size:18px;"><span style="font-family:KaiTi_GB2312;font-size:18px;">Private Sub form_Load()
    Dim txtsql As String
    Dim MsgText As String
    txtsql = "select * from course_Info "
    Set mrc = Executesql(txtsql,MsgText)
   
   On Error GoTo 1:
 
       mrc.MoveFirst
      Call viewData
       
        myBookmark = mrc.Bookmark '对当前记录进行标记
        mcclean = True '可编辑状态
   
    1:
   
        If Err = 3021 Then
          MsgBox "无记录!"
        End If
 end sub</span></span>


二、根据上述原理,我们可以将代码稍作修改,不做错误处理,而是当程序遇到这种情况时,用一个if语句,让程序直接进行下一步即可,与上述方法异曲同工!

<span style="font-family:KaiTi_GB2312;font-size:18px;"><span style="font-family:KaiTi_GB2312;font-size:18px;">Private Sub Form_Load()
    Dim txtsql As String
    Dim msgText As String
   
    txtsql = "SELECT * FROM student_Info "
    Set mrc = Executesql(txtsql,msgText) '得到临时表
   
 ’考虑无记录情况
    If mrc.EOF And mrc.BOF Then  ’一条IF语句充当错误处理,当无记录时,mrc.eof=true
                                  ’和mrc.bof=true两个条件同时满足!
        MsgBox "无记录!"
        frmAddinfo.show.Show’直接进行下一步,显示窗体
    Else
   
   
        mrc.MoveFirst
   
        Call viewData
       
        myBookmark = mrc.Bookmark '对当前记录进行标记
        mcclean = True '可编辑状态
   
   
    End If</span></span>


那么,经过上述方法处理后,程序一旦遇到类似情况,就可直接提示“无记录”并运行下一步!

三、这种方法和第二种方法类似,只是表现形式不同:当程序遇到这种情况时,用一个if语句,让程序直接进行下一步即可,与上述方法基本相同~

<span style="font-family:KaiTi_GB2312;font-size:18px;"><span style="font-family:KaiTi_GB2312;font-size:18px;">Private Sub form_Load()
    Dim txtsql As String
    Dim MsgText As String
    txtsql = "select * from course_Info "
    Set mrc = Executesql(txtsql,MsgText)
    If mrc.RecordCount = 0 Then
        firstCommand.Enabled = False
        prevIoUsCommand.Enabled = False
        nextCommand.Enabled = False
        lastCommand.Enabled = False
        editCommand.Enabled = False
        updateCommand.Enabled = False
        cancelCommand.Enabled = False
        deleteCommand.Enabled = False
    Exit Sub
    End If
    
    txtCourseno.Enabled = False
    txtCoursename.Enabled = False
    comboCoursetype.Enabled = False
    txtCoursedes.Enabled = False
    
    txtsql = "select * from course_Info "
    Set mrc = Executesql(txtsql,MsgText)
    
    mrc.MoveFirst
    Call viewData
    myBookmark = mrc.Bookmark
    mcclean = True
End Sub</span></span>


很简单的一个问题,但我从中学到了不少知识......



问题2:

弹出提示框:用户定义类型未定义


调试定位到:Dim mrc As ADODB.Recordset

解决方法:问题原因是未引用Microsoft ActiveX Data Objects 2.6 Library.

引用即可.

问题3:

实时错误‘424’ 要求对象

这个问题解决方法是引用陈晓婵csdn博客:(学生信息管理系统系列一:问题总结


遇到这个问题,查了一下发现可能是工程内的类名无效(简单的说就是将窗体名或控件名写错了)这个问题,但是找了找没有发现有什么错误的,那到底是哪出了错误了呢?还是先了解一下sbStatusBar.Panels(1).Text= "添加用户"是什么意思吧。

StatusBar1是状态栏控件的名称Panels(1).Text表示状态栏上第1个空格所显示的文本内容Panels1)代表状态栏控件的第一个窗格;Format(Date,"\yyyymmdd\")这是调用格式函数Format,设置文本格式,Format函数可以将信息设置成你所需要的显示形式(格式)。

应该怎么改呢?

第一种办法:删除sbStatusBar.Panels(1).Text = "添加用户"或者将它注释掉

第二种办法:新建form取名sbStatusBar,然后在这个窗体上新建个文本框取名Panels,并且文本框属性index1就可以了。

猜你在找的VB相关文章