1. 程式人生 > >學生資訊管理系統——錯誤集錦(五)

學生資訊管理系統——錯誤集錦(五)

啊!明日復明日,明日何其多。 我生待明日,萬事成蹉跎。 真是我有意,時間無情呀,待我回過神來,已到一週之末,忽然發現好多事情還沒有完成,新的計劃又要開始,真的是萬事成蹉跎呀!哎!罷了,罷了,繼續總結吧!

錯誤一:

指定的 DLL 函式未找到(錯誤 453)

在使用者庫引用中找到動態連結庫 (DLL),但在 DLL 內找不到指定的 DLL 函式。此錯誤有以下的原因和解決方法:

在函式宣告中指定了錯誤的序號:

檢查序號或以名稱呼叫的函式。

所給的 DLL 名稱雖正確,但指定的函式的版本並非當前的。

從機器上可得到正確的版本,但如果路徑中含有錯誤版本的目錄是在含有正確版本的目錄之前的話,就會訪問到錯誤的 DLL。檢查機器上不同的版本,如果是較舊的版本,聯絡供給商以取得較新的版本。

如果在 32-位 Microsoft Windows 平臺上工作的話,DLL 名稱和別名(如果使用的話)都必須正確。

確保 DLL 名稱和別名都正確。

有些 32-位 DLL 包含少量不同版本的函式,以適應 UnicodeANSI字串。函式名稱尾端的 "A" 表示是 ANSI 版本。函式名稱尾端的 "W" 表示是 Unicode 版本。

如果函式有字串型別引數,試著在函式名稱尾端加上 "A"。

具體原因是:程式碼敲錯(在函式宣告中指定了錯誤的序號: 檢查序號或以名稱呼叫的函式。)

解決方法:在“外接程式”中,開啟“外接程式管理器”,在“可用外接程式”中選擇“VB 6 API Viewer”,在“載入行為”中選擇“在啟動中載入”和“載入/解除安裝”,點選“確定”。

之後,在“外接程式”中開啟“API瀏覽器”,在“檔案”中選擇“載入文字檔案”,選擇“WIN32API”,點選“確定“。再在”鍵入您要查詢的內容的開頭幾個字母“中輸入需要查詢的內容,在這個錯誤中需要輸入”Get UserName“,點選”私有“,點選”插入“,會彈出:

點選“是“會插入相應的函式,點選”新增“即可。即:

Public Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long

但是,在經過上一錯誤後,發現雖然進入程式,但是並沒有載入窗體,原因是在進行到加紅時跳過了:

具體原因是“If miCount = 3 Then“不對,猜測其意思時要登入3次才會載入窗體,事實也確實如此,應該改為” If miCount < 3 Then “

錯誤二:

在修改學籍資訊,點選“更新記錄”時,遇到錯誤:

錯誤:

    mrc.Delete              '刪除當前記錄

應改為:“mrcc.Delete     '刪除當前記錄”,同樣的位置,繼續報錯為:實時錯誤“91”未解決。經過網上搜索,理解修改學籍過程是,在窗體載入的時候進行資料查詢,在窗體中顯示第一條資料並用書籤記下當時位置,當你點選更改資料按鈕時,它是先把這條正在修改的資料刪除, 然後檢查更改後的學號是否重複,如果沒有重複就執行更改操作,然後回到當初用書籤記錄的位置。

解決問題連結:https://blog.csdn.net/zwj_jyzl/article/details/76150888

Private Sub cmdUpdate_Click()
    Dim txtSQL As String
    Dim MsgText As String
    Dim mrcc As ADODB.Recordset
    
    myBookmark = mrc.Bookmark
    '判斷是否處於修改狀態
    If mcclean Then
        MsgBox "請先修改學籍資訊", vbOKOnly + vbExclamation, "警告"
        Exit Sub
    End If
    '判斷學號是否為空
    If Not Testtxt(Trim(txtSID.Text)) Then
        MsgBox "請輸入學號!", vbOKOnly + vbExclamation, "警告"
        txtSID.SetFocus
        Exit Sub
    End If
    '判斷姓名是否為空
    If Not Testtxt(Trim(txtName.Text)) Then
        MsgBox "請輸入姓名!", vbOKOnly + vbExclamation, "警告"
        txtName.SetFocus
        Exit Sub
    End If
    '判斷性別是否為空
    If Not Testtxt(Trim(comboSex.Text)) Then
        MsgBox "請選擇性別!", vbOKOnly + vbExclamation, "警告"
        comboSex.SetFocus
        Exit Sub
    End If
   
    If Not Testtxt(Trim(comboClassNo.Text)) Then
        MsgBox "請選擇班號!", vbOKOnly + vbExclamation, "警告"
        comboClassNo.SetFocus
        Exit Sub
    End If
    '判斷聯絡電話是否為空
    If Not Testtxt(Trim(txtTel.Text)) Then
        MsgBox "請輸入聯絡電話!", vbOKOnly + vbExclamation, "警告"
        txtTel.SetFocus
        Exit Sub
    End If
    If Len(txtTel.Text) < 11 Then
        MsgBox "號碼小於11位,請重新輸入!", vbOKCancel + vbExclamation, "警告"
        txtTel.Text = ""
     End If
   
    If Not Testtxt(Trim(txtAddress.Text)) Then
        MsgBox "請輸入家庭住址!", vbOKOnly + vbExclamation, "警告"
        txtAddress.SetFocus
        Exit Sub
    End If
    '判斷學號是否為數字
    If Not IsNumeric(Trim(txtSID.Text)) Then
        MsgBox "學號請輸入數字!", vbOKOnly + vbExclamation, "警告"
        txtSID.SetFocus
        Exit Sub
    End If
    
    '判斷是否有重複記錄
    txtSQL = "select * from student_info where student_id = '" & Trim(txtSID.Text) & "'"
    Set mrcc = ExecuteSQL(txtSQL, MsgText)
    If mrcc.EOF = False Then
        MsgBox "學號重複,請重新輸入!", vbOKOnly + vbExclamation, "警告"
        txtSID.SetFocus
    Else

                mrc.AddNew
                mrc.Fields(0) = Trim(txtSID.Text)
                mrc.Fields(1) = Trim(txtName.Text)
                mrc.Fields(2) = Trim(comboSex.Text)
                mrc.Fields(3) = Trim(DTBornDate.Value)
                mrc.Fields(4) = Trim(comboClassNo.Text)
                mrc.Fields(5) = Trim(txtTel.Text)
                mrc.Fields(6) = Trim(DTRuDate.Value)
                mrc.Fields(7) = Trim(txtAddress.Text)
                mrc.Fields(8) = Trim(txtComment.Text)
                mrc.Update
                MsgBox "修改學籍資訊成功!", vbOKOnly + vbExclamation, "修改學籍資訊"
                'SQL語句
                txtSQL = "select * from student_info"
                '執行查詢操作
                Set mrc = ExecuteSQL(txtSQL, MsgText)
                '移動到第一條記錄
                mrc.Bookmark = myBookmark
                Call viewDate
                Frame2.Enabled = True
                '使各個按鈕有效
                cmdFirst.Enabled = True
                cmdPrevious.Enabled = True
                cmdNext.Enabled = True
                cmdLast.Enabled = True
                '使各個文字框失效
                txtSID.Enabled = True
                txtName.Enabled = True
                comboSex.Enabled = True
                comboClassNo.Enabled = True
                txtTel.Enabled = True
                txtAddress.Enabled = True
                txtComment.Enabled = True
                mcclean = True
            End If
    
End Sub

更新記錄、取消修改記錄、刪除記錄執行需在“修改記錄”的前提下進行!

錯誤三:

原因:

解析:為了使學生資訊在一行上,需要把”.Row-1”都改為“.Rows-1”,為了防止和學生資訊之間出現空行,可把.Rows = .Rows + 1刪掉。藍色部分使為了防止標題行之上出現空白行。

資料庫:

在除錯“設定年級課程”,選擇了“選擇年級”中的具體年級後,會在“所有課程”下顯示該年級的所有課程,然而我記得資料庫中“初中一年級-語文”是設定了一個,打開發現編輯了兩次,在刪除其中一條時,出現了錯誤:在除錯“設定年級課程”,選擇了“選擇年級”中的具體年級後,會在“所有課程”下顯示該年級的所有課程,然而我記得資料庫中“初中一年級-語文”是設定了一個,打開發現編輯了兩次,在刪除其中一條時,出現了錯誤:

出現問題原因:

  1. 沒有設定主鍵
  2. 表中此條資訊不是唯一的,存在多條相同資訊。

解決方法如下:

(1)點選資料庫中的“新建查詢”,根據要刪除的行編寫程式碼:delete from 資料庫名.表名where 列名=“關鍵字‘。

(2)點選資料庫中的“執行(黃色標識)”,即可刪除。

小知識:

If Not (dd(0) Or dd(1) Or dd(2)) Then
        MsgBox "請設定查詢方式!", vbOKOnly + vbExclamation, "警告"
        Exit Sub
    End If

Not後不加括號,只會判斷第一個,而不會判斷後面的!

總結:

最近說不出的特別忙(可能是之前太懶),正是因為忙,所以才要做好時間管理,和時間賽跑的前提是要有時間觀念,這樣才有可能跑的贏,到現在很遺憾,我沒能賽過時間(達到預期的目標),接下來為了更好的和時間賽跑、把握時間,要嚴格按照計劃去執行,21天養成一個習慣,我們可以!挑戰自我,加油!