MyTetra Share
Делитесь знаниями!
060. Обработка ошибок разными методами
Время создания: 16.03.2019 23:43
Раздел: Разные закладки - VBA - Access - leadersoft.ru
Запись: xintrea/mytetra_db_adgaver_new/master/base/1531373578vzt9ytdry7/text.html на raw.githubusercontent.com

03. В ADO и DAO ошибки обрабатываются по разному, используйте этот пример для анализа действий вашей программы при аварийных выходах.

Все примеры Microsoft Access
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 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

Так же в этом разделе:
 
MyTetra Share v.0.65
Яндекс индекс цитирования