学生信息故案系统——错误集锦(四)

感觉这周像没有过一样,转眼间到了周末的尾巴,能够证明我认真过来,也只能上过的课,验过的项目了。好了不闲扯,继续上次的占位总结。

错误一:

这个问题之前也遇到过,真可谓是老生常谈的经典Bug了,好,来看一下这次的原因和方法。

If Check1(1).Value Then
        '判断是否输入姓名
        If Trim(txtName.Text) Then
            sMeg = "姓名不能为空"
            MsgBox sMeg, vbOKOnly + vbExclamation, "警告"
            txtName.SetFocus
            Exit Sub
        Else 

应改为:If Trim(txtName.Text) =“”Then

错误二:

With myflexgrid
        .Row = 2
        .CellAlignment = 4
        .TextMatrix(1, 0) = "考试编号"
        .TextMatrix(1, 1) = "学号"
        .TextMatrix(1, 2) = "姓名"
        .TextMatrix(1, 3) = "班号"
        .TextMatrix(1, 4) = "课程名称"
        .TextMatrix(1, 5) = "分数"

原因:rows 必须大于Row,即改为“.Rows=2”

错误三:

 txtSQL = "select * from class_Info where class_NO='" & comboClassno.Text & "'"

    Set mrc= ExecuteSQL(txtSQL, MsgText)

    Grade = mrcc!Grade

    mrcc.Close

解析:

mrccmrc的区别:mrc是一个记录集,用来临时存放数据。而mrcc是重新定义了一个新的记录集对象,专门用来查询修改后是否和数据库里有重复的数据。

解决方案:而且在前面定义的也是mrcc,所以将上图中红框内的"mrc"改为"mrcc"即可。

错误四:

mrc.AddNew
    mrc.Fields(0) = comboExamtype.Text
    mrc.Fields(1) = comboClassno.Text
    mrc.Fields(2) = comboSID.Text
    mrc.Fields(3) = txtName.Text
    mrc.Fields(4) = comboCourse.Text
    mrc.Fields(5) = txtResult.Text
    mrc.Update
mrc.Close

原因:控件的名称和数据库中的字段不匹配。

错误五:

Private Sub cmdDelete_Click()

    Dim MsgText As String

    myBookmark = mrc.Bookmark

    str2$ = MsgBox("是否删除当前记录?", vbOKCancel, "删除当前记录")

    If str2$ = vbOK Then

        mrc.MoveNext

        If mrc.EOF Then

            mrc.MoveFirst

            myBookmark = mrc.Bookmark

            mrc.MoveLast

            mrc.Delete

            mrc.Bookmark = myBookmark

            mrc.Close

在调试代码的时候,遇到这样的问题“变量未定义”。检查发现,str2$没有定义就使用了。

我首先想到的解决办法(结果证明不对):dim str2$ as Boolean

定义都无法实现,出现如下错误:

后来,我又改成了:Dim str2 As Boolean,然而继续报错:

类型声明字符与声明的数据类型不匹配:

一个变量数据类型是不会被在其后附加的类型声明字符所改变的。这个错误的原因与解决方法如下所示:

声明一个特定类型的变量,在同一范围内用此名称来引用它,然而却在其名称后附加一个不一致的类型声明字符。

若希望能够改变赋给变量的数据类型,请将此变量声明为 Variant。如果只是不小心附加了一个不正确的类型声明字符,请将其删除或更正。

原理:

        msgbox 返回的是int类型,付值给Booleanl类型当然会出错。$用来将变量定义成字符串,如:Dim Str2$。$是String数据类型变量的后缀,它与Boolean相互冲突。数据类型错误,MsgBox返回的是Integer值,如果Str2被定义成布尔值,是不能正确得到返回值的,如果被定义为字符串,会被自动进行类型转换,是个数字的字符串。

.解决如何定义,如下几种格式均可。

Dim str2$  或者Dim Str2 As String

Dim Str2%  或者 Dim Str2 As Integer

以上的定义均是以str2作为变量,均可行。

错误六:

可能出现这种问题的情况

1.ODBC连接没成功 

2.VB模块中连接数据库的代码,用户名,密码和ODBC不同步

3.代码中语句出错,连接不到数据库中所要连接的表

问题原因:

查询框内未做选择,不能赋值,点击查询会报错,调试会有如下情况:

Do While Not mrc.EOF

            .Rows = .Rows + 1

            .CellAlignment = 4

            .TextMatrix(.Rows - 1, 0) = mrc.Fields(0)

            .TextMatrix(.Rows - 1, 1) = mrc.Fields(1)

            .TextMatrix(.Rows - 1, 2) = mrc.Fields(2)

            .TextMatrix(.Rows - 1, 3) = mrc.Fields(3)

            .TextMatrix(.Rows - 1, 4) = mrc.Fields(4)

            .TextMatrix(.Rows - 1, 5) = mrc.Fields(5)

            mrc.MoveNext

        Loop

解决办法:在数据库有数据的前提下,选择“学号”或“姓名”或“课程”后,再查询。

今天时间有限,未完待续哦,敬请期待吧。

注:以上是自己遇到的问题及解决办法,如有错误,还请各位及时斧正。

猜你喜欢

转载自blog.csdn.net/zql_LV1314/article/details/84206013