感觉这周像没有过一样,转眼间到了周末的尾巴,能够证明我认真过来,也只能上过的课,验过的项目了。好了不闲扯,继续上次的占位总结。
错误一:
这个问题之前也遇到过,真可谓是老生常谈的经典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
解析:
mrcc与mrc的区别: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
解决办法:在数据库有数据的前提下,选择“学号”或“姓名”或“课程”后,再查询。
今天时间有限,未完待续哦,敬请期待吧。
注:以上是自己遇到的问题及解决办法,如有错误,还请各位及时斧正。