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 | |