1. 程式人生 > >學生資訊故案系統——錯誤集錦(四)

學生資訊故案系統——錯誤集錦(四)

感覺這周像沒有過一樣,轉眼間到了週末的尾巴,能夠證明我認真過來,也只能上過的課,驗過的專案了。好了不閒扯,繼續上次的佔位總結。

錯誤一:

這個問題之前也遇到過,真可謂是老生常談的經典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

解決辦法:在資料庫有資料的前提下,選擇“學號”或“姓名”或“課程”後,再查詢。

今天時間有限,未完待續哦,敬請期待吧。

注:以上是自己遇到的問題及解決辦法,如有錯誤,還請各位及時斧正。