Доступ MS, VBA и обработка ошибок

19
задан shruti1810 27 May 2015 в 07:40
поделиться

3 ответа

Мое решение следующее:

  1. установка MZ-инструменты , очень интересное дополнение для VBA. Нет они не заплатили мне для записи этого. Версия 3 была бесплатной, но начиная с версии 8.0, коммерчески продается дополнение.
  2. программируют код обработчика стандартных погрешностей, такой как этот (см. MZ-инструменты обработчик menu/Options/Error):
<час>
On Error GoTo {PROCEDURE_NAME}_Error
{PROCEDURE_BODY}
On Error GoTo 0
Exit {PROCEDURE_TYPE}

{PROCEDURE_NAME}_Error:
debug.print "#" & Err.Number, Err.description, "l#" & erl, "{PROCEDURE_NAME}", "{MODULE_NAME}"
<час>

Этот код стандартной погрешности может быть затем автоматически добавлен ко всем Вашим procs и функции путем нажатия на соответствующую кнопку в меню MZ-Tools. Вы заметите, что мы обращаемся здесь к скрытой и недокументированной функции в стандартной библиотеке VBA, 'Эрл', который обозначает 'ошибочную строку'. Вы получили его! Если Вы попросите, чтобы MZ-инструменты автоматически пронумеровали Ваши строки кода, то 'Эрл' затем даст Вам количество строки, где ошибка произошла. У Вас будет полное описание ошибки в Вашем непосредственном окне, таком как:

#91, Object variable or With block variable not set, l# 30, addNewField, Utilities

, Конечно, после того как Вы понимаете интерес системы, можно думать о более сложном обработчике ошибок, который не только отобразит данные в окне отладки, но будет также:

  1. дисплей это как сообщение на экране
  2. Автоматически вставляет строку в файл регистрации ошибок с описанием ошибки или
  3. , если Вы работаете с Доступом или если Вы подключены к базе данных, автоматически добавьте запись на таблицу Tbl_Error!

подразумевать, что каждая ошибка, сгенерированная на уровне пользователя, может быть сохранена или в файле или в таблице, где-нибудь на машине или сети. Мы говорим приблизительно [1 115] здание автоматизированная система сообщения об ошибке работа с VBA?

6
ответ дан 30 November 2019 в 04:40
поделиться

Что относительно того, чтобы использовать "Эрл", это отобразит последнюю маркировку перед ошибкой (например, 10, 20, или 30)?

Private Sub mySUB()
On Error GoTo Err_mySUB
10:
    Dim stDocName As String
    Dim stLinkCriteria As String
20:
    stDocName = "MyDoc"
30:
    DoCmd.openform stDocName, acFormDS, , stLinkCriteria    
Exit_mySUB:
    Exit Sub
Err_mySUB:
    MsgBox Err.Number & ": " & Err.Description & " (" & Erl & ")"
    Resume Exit_mySUB
End Sub
7
ответ дан 30 November 2019 в 04:40
поделиться

Хорошо существует несколько инструментов, которые сделают то, что Вы спрашиваете Инструменты MZ и , FMS Inc приходит на ум.

В основном они включают добавление:

On Error GoTo ErrorHandler

к вершине каждого proc и в конце они помещают:

ErrorHandler:
  Call MyErrorhandler Err.Number, Err.Description, Err.LineNumber

маркировка с обычно вызовом к глобальному обработчику ошибок, где можно отобразить и зарегистрировать пользовательские сообщения об ошибках

5
ответ дан 30 November 2019 в 04:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: