資料庫中無記錄遇到實時錯誤“3021”的解決方法

資料庫中無記錄遇到實時錯誤“3021”的解決方法

大家在敲學生資訊管理系統時,經常會遇到這種情況:

資料庫中沒有新增記錄,但我們點選修改記錄時,會出現如下提示:

最開始,問了很多同學,都認為這是系統的漏洞,很正常,不用太在意,這不叫錯誤!但是,後來仔細一想,一個完整的軟體,總不能在中途執行過程中出現這麼一個錯誤吧!這也有點兒太不近人情了!於是我琢磨了,找出兩種解決辦法,供大家參考!

一、進行錯誤處理

錯誤處理的本質就是當遇到錯誤時,可以跳過該錯誤,直接進行下一步,以便於程式順利進行!

那麼我們根據這個原理在程式碼中新增錯誤處理,問題便可迎刃而解!

Private Sub Form_Load()
Dim txtSQL As String
Dim msgText As String
txtSQL = "SELECT * FROM student_Info "
Set mrc = ExecuteSQL(txtSQL, msgText) '得到臨時表
On Error GoTo 1:
mrc.MoveFirst
Call viewData
myBookmark = mrc.Bookmark '對當前記錄進行標記
mcclean = True '可編輯狀態
1:
If Err = 3021 Then
MsgBox "無記錄!"
End If
end sub

二、根據上述原理,那麼我們可以將程式碼稍作修改,不做錯誤處理,而是當程式執行的錯誤考慮在內,當遇到這種情況時,用一個if語句,讓程式直接進行下一步即可,與上述方法異曲同工!

Private Sub Form_Load()
Dim txtSQL As String
Dim msgText As String
txtSQL = "SELECT * FROM student_Info "
Set mrc = ExecuteSQL(txtSQL, msgText) '得到臨時表
’考慮無記錄情況
If mrc.EOF And mrc.BOF Then  ’一條IF語句充當錯誤處理,當無記錄時,mrc.eof=true
                                  ’和mrc.bof=true兩個條件同時滿足!
MsgBox "無記錄!"
frmModifysinfo.Show ’直接進行下一步,顯示窗體
Else
mrc.MoveFirst
Call viewData
myBookmark = mrc.Bookmark '對當前記錄進行標記
mcclean = True '可編輯狀態
End If

那麼,經過上述方法處理後,程式一旦遇到類似情況,就可直接提示“無記錄”並執行下一步!

如圖:

我們在點選確定後直接執行下一步,顯示本窗體。

在這裡需要注意的是,用If語句有一個好處,我們可以直接將顯示本窗體這一行程式碼改成顯示新增記錄窗體,更加靈活方便!(因為錯誤處理預設直接執行下一步,而下一步就是顯示本窗體)

將上述 frmModifyinfo.show 改成 frmAddinfo.show

根據自己的意願填寫!