03. В ADO и DAO ошибки обрабатываются по разному, используйте этот пример для анализа действий вашей программы при аварийных выходах.
Option Compare Database
Option Explicit
'***************************************************************
' 03. Обработка ошибок разными методами
'***************************************************************
'==============================================================
' ADO. Обработка ошибок
Private Sub butADO_Click()
Dim cnn As New ADODB.Connection
Dim oneErr As ADODB.Error, s As String
On Error Resume Next
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=?"
' Информация о всех ошибках
s = "Список ошибок;------ ADO -------;"
For Each oneErr In cnn.Errors
s = s "Описание;" oneErr.Description ";"
s = s "Номер;" oneErr.Number ";"
s = s "Имя приложения;" oneErr.Source ";"
s = s "SQLState;" oneErr.SQLState ";"
s = s "NativeError;" oneErr.NativeError ";"
s = s "Код справки;" oneErr.HelpContext ";"
s = s "Файл справки;" oneErr.HelpFile ";"
Next
' Полная информация о последней ошибке
s = s "Последняя ошибка;------ ADO -------;"
Me.listErrors.RowSource = s funLastError 'Отображаем ошибку
Resume Next
End Sub
'==============================================================
' DAO. Обработка ошибок
Private Sub butDAO_Click()
Dim dbs As DAO.Database
Dim oneErr As DAO.Error
Dim strmdb As String, s As String
On Error Resume Next
Set dbs = DBEngine.OpenDatabase("?", , 2 / 0) ' Генерируем ошибку
'Err.Raise 11 ' Самостоятельный генератор ошибок
' Информация о всех ошибках
s = "Список ошибок;------ DAO " DAO.Version " -------;"
For Each oneErr In DBEngine.Errors
s = s "Описание;" oneErr.Description ";"
s = s "Номер;" oneErr.Number ";"
s = s "Имя приложения;" oneErr.Source ";"
Next
' Полная информация о последней ошибке
s = s "Последняя ошибка;------ DAO -------;"
Me.listErrors.RowSource = s funLastError 'Отображаем ошибку
Err.Clear
End Sub
'==============================================================
' Возвращает информацию о последней ошибке
' ADO и DAO
Private Function funLastError() As String
Dim s As String
s = "Описание;" Err.Description ";"
s = s "Номер;" Err.Number ";"
s = s "Код справки;" Err.HelpContext ";"
s = s "Файл справки;" Err.HelpFile ";"
s = s "Имя приложения;" Err.Source ";"
s = s "DLL код;" Err.LastDllError ";"
funLastError = s
End Function