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

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

概述问题1:     实时错误‘3021’:BOF或EOF中有一个是“真”,或者当前的记录已被删除,所需的 *** 作要求一个当前的记录。     在敲学生信息管理系统时,应该很多人都遇到了这种情况:     数据库中没有添加记录,但我们点击修改记录时,会出现如下提示:     首先先说一下BOF和EOF的意思吧!因为只有知道错误是什么,我们才能对症下药......     BOF和EOF 他们是记录集(re

问题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 ><span >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 ><span >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 ><span >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 = TrueEnd Sub</span></span>


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



问题2:

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


调试定位到: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就可以了。

总结

以上是内存溢出为你收集整理的学生信息管理系统——常见问题(二)全部内容,希望文章能够帮你解决学生信息管理系统——常见问题(二)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1272932.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存