powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / отловить ошибку runtime
10 сообщений из 60, страница 3 из 3
отловить ошибку runtime
    #39774911
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ганов Александр, нумеровать всё и вся не имеет смысла. Лично я довольно редко это делаю, только там где не уверен во всех случаях, на всякий, так сказать. Да и не все строки нумерую.
...
Рейтинг: 0 / 0
отловить ошибку runtime
    #39775057
Фотография Ганов Александр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Панург, принял, спасибо. мне тоже думается, что все и вся нумеровать - очень муторное занятие и лишние символы в коде
...
Рейтинг: 0 / 0
отловить ошибку runtime
    #39776313
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alecko, ну например управление отладкой у клиента кнопкой - не влезая в код. Думаю что вопрос был в #Else-щас уже и не вспомню все матюки.
Во - ещё вспомнил - в режиме разработки часть полей открываем, у клиента они закрыты - это тоже делаем этой переменной (одной переменной переход в режим разработки/тестирование "клиентского вида" - переменная условной компиляции здесь никак не поможет-поля нужно все равно закрывать (полагаться на вид по умолчанию с учетом того что форма принимает тучу состояний категорически нельзя), бывает закрываю создание всяких контекстных менюшек, выскакивание предупреждающих окон, создание и печать отчетов, отсылку писем, смс во время разработки.
...
Рейтинг: 0 / 0
отловить ошибку runtime
    #39787289
Фотография Ганов Александр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Панургместо возникновения ошибки - название модуля/класса и процедуры/функции
подскажите пожалуйста как реализуете? на форуме почитал, начиная от идеи прописывать имя процедуры в обработке и заканчивая сторонними утилитами - как-то мутновато, может что-то поразумнее имеется. спасибо
...
Рейтинг: 0 / 0
отловить ошибку runtime
    #39787329
NBjHCBrc6KlSObm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ганов Александрподскажите пожалуйста как реализуете? на форуме почитал, начиная от идеи прописывать имя процедуры в обработке и заканчивая сторонними утилитами - как-то мутновато, может что-то поразумнее имеется. спасибо
mz-tools всё делают: и номера к строкам добавляют, и сообщение с названием процедуры и названием модуля добавляют.
Я отправляю письмо, сохраняю названия формы и значения контролов, записываю в журнал, делаю скриншот - это удобно и проще, чем потом спрашивать "что вы делали 15-го августа 1993 года" у пользователя :)
...
Рейтинг: 0 / 0
отловить ошибку runtime
    #39814486
Фотография Ганов Александр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NBjHCBrc6KlSObm, спасибо. полностью согласен, обработчик ошибок доработал, теперь показывает все, что нужно. Топик закрыт :-)
...
Рейтинг: 0 / 0
отловить ошибку runtime
    #39817682
Фотография Ганов Александр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в продолжение темы: как обычно делают когда надо поменять все обработчики во всех или отдельном модуле? понятное дело, что руками "умрешь" это делать. Озадачился данным вопросом, пошукал, вроде ничего нет нужного, потратил время - написал автозамену и/или добавление обработчика в процедуру. Вроде все как надо работает, но может есть какие-то общепризнанные и общеиспользуемые решение, где не надо ничего самому писать, так сказать plug and play?
...
Рейтинг: 0 / 0
отловить ошибку runtime
    #39829556
Фотография Ганов Александр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NBjHCBrc6KlSObmГанов Александрподскажите пожалуйста как реализуете? на форуме почитал, начиная от идеи прописывать имя процедуры в обработке и заканчивая сторонними утилитами - как-то мутновато, может что-то поразумнее имеется. спасибо
mz-tools всё делают: и номера к строкам добавляют, и сообщение с названием процедуры и названием модуля добавляют.
Я отправляю письмо, сохраняю названия формы и значения контролов, записываю в журнал, делаю скриншот - это удобно и проще, чем потом спрашивать "что вы делали 15-го августа 1993 года" у пользователя :)

добрый день. посмотрел как в MZTOOL все это реализовано, по сути используется объект VBA.ErrObject. При вставке в процедуру банально прописывается "ErrHeader" c Resume или с Goto и в строке информации, то есть в той строке, которая будет выведена на экран, сразу прописывается название процедуры, а для определения номера строки используется ERL. Получается совсем не универсально, то есть если название процедуры изменилось, то строка будет слать совсем не то имя.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
    On Error Resume Next

    If Err.Number <> 0 Then
       MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure Form_Load, line " & Erl & "."
       Exit Sub
    End If
    On Error GoTo 0


Хотелось бы более универсальную вещь, в принципе, я все это сделал, в том числе процедуры группового обновления, добавления, удаления ErrHandler'ов, расстановку переменных по отдельным строкам, которые были написаны одной строкой, удаление не используемых переменных, удаление, добавление пустых строк в код и т.д.. В общем, такой мини-тюнинг кода через одно нажатие.

Сам хэндлер описал следующим образом:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
On Error GoTo Error_Handler 'обработчик ошибок
'====================================

'вставляем нужный код

'======================
Exit_Handler: 'обработчик ошибок
     On Error Resume Next
     Exit Sub
Error_Handler:
     Debug.Print "Номер ошибки: " & Err.Number & ", Описание: " & Err.Description
     Application.VBE.ActiveCodePane.GetSelection glngErrStartLine, glngErrStartCol, glngErrEndLine, glngErrEndCol
     Call prcErrData(Err.Number, Err.Description, Err.Source, Erl, Application.VBE.ActiveCodePane.Window.Caption, _
          Application.VBE.ActiveCodePane.CodeModule.ProcOfLine(glngErrStartLine, vbext_pk_Proc))
     On Error Resume Next
     If lngErrNumber <> 0 Then Call prcОбработкаОшибок
     Resume Exit_Handler
     Resume


то есть после того, как прыгаем на " хэндлер ", смотрим строку на которой стоит курсор, находим процедуру в которой она находится и т.д., подсмотрел решение здесь же на форуме. Все хорошо работает, но есть один "косяк", работает только в том случае, если открыт тот CodePane , на котором произошла ошибка, для VBE Active CodePane значит именно тот, который открыт и который в фокусе, а не тот, в котором сейчас исполняется код, если в процессе исполнения не будет открыт ни один CodePane , то же сам обработчик выдаст ошибку, т.к. не сможет обратиться к активному CodePane.
Пересмотрел все известные мне свойства и методы на предмет возможности определения того CodePane или CodeModule , где в данный момент выполняется код, а не который в данный момент активен. К сожалению, пока ничего "умного" не нашел. Но в этом ветке access-спецы пишут, что пишут в лог название процедуры, место ошибки и т.д., стало быть используют либо жесткое закрепление имени процедуры в каждом обработчик (как в примере выше из MZ Tool), либо делают каким-то другим способом, до которого у меня "допетрить" не получается.

Буду признателен за подсказку кто и как фактически делает фиксацию (определение названия) имени процедуры для последующей обработки, например, отправки, логирования, вывода в сообщение.
Может быть мне проще проще немного переписать групповую обработку по добавлению "хэндлеров", чтобы автоматически вместо строки определения процедуры
Код: vbnet
1.
Application.VBE.ActiveCodePane.GetSelection glngErrStartLine, glngErrStartCol, glngErrEndLine, glngErrEndCol


прописывалась строка с закрепленным именем процедуры и в этом случае вопрос определения имени сам собой отпадет, останется только проблемка при изменении имени процедуры, в этом случае надо будет не забыть поменять имя в "хэндлере"?
...
Рейтинг: 0 / 0
отловить ошибку runtime
    #39829969
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ганов Александркто и как фактически делает фиксацию (определение названия) имени процедуры для последующей обработки
Я тоже много времени убил на поиски, но, похоже, нет такого способа. Если редактор кода не открыт, а тем более если код скомпилирован в accde, определить имя модуля и процедуры нельзя. Поэтому всегда пользуюсь MZTools для вставки имени модуля и процедуры в обработчики ошибок. Им же нумерую строки для Erl. При переименовании/копировании кода в другой модуль заменой меняю имена или перегенерирую обработчики ошибок, много времени это не отнимает.

Настоятельно не рекомендую использовать русские буквы в названиях процедур, на не русских версиях офиса работать не будет с большой вероятностью.
...
Рейтинг: 0 / 0
отловить ошибку runtime
    #39830067
Фотография Ганов Александр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrShinНастоятельно не рекомендую использовать русские буквы в названиях процедур, на не русских версиях офиса работать не будет с большой вероятностью.
Спасибо за ответ по теме вопроса и за совет - потихоньку отучаюсь :-)
...
Рейтинг: 0 / 0
10 сообщений из 60, страница 3 из 3
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / отловить ошибку runtime
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]