學生資訊故案系統——錯誤集錦(四)
感覺這周像沒有過一樣,轉眼間到了週末的尾巴,能夠證明我認真過來,也只能上過的課,驗過的專案了。好了不閒扯,繼續上次的佔位總結。
錯誤一:
這個問題之前也遇到過,真可謂是老生常談的經典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,所以將上圖中紅框內的"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
解決辦法:在資料庫有資料的前提下,選擇“學號”或“姓名”或“課程”後,再查詢。
今天時間有限,未完待續哦,敬請期待吧。
注:以上是自己遇到的問題及解決辦法,如有錯誤,還請各位及時斧正。