Программирование на Visual Basic | Microsoft Access. Обработка ошибок разными методами

В этом разделе сайта находятся примеры из сборника программ "Архив файлов на Microsoft Access". В нем рассказывается о программировании форм, отчетов, таблиц и других объектов. Используйте этот архив для изучения работы с приложением Microsoft Office Access и программированием на Visual Basic for Application. Тем кто уже знаком с VBA, используйте поиск для нахождения кодов. Наберите, например, DAO, ADO, Recordset и найдете нужную ссылку для решения проблемы с программированием

Microsoft Access. Обработка ошибок разными методами

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

Добавить комментарий

Loading