Различия

Здесь показаны различия между выбранной ревизией и текущей версией данной страницы.

Ссылка на это сравнение

ru:creating_user_reports:use_macros_in_reports:debug [2020/07/17 12:14]
192.168.1.126 удалено
— (текущий)
Строка 1: Строка 1:
-====== Подходы к отладке кода ====== 
- 
-Некоторые подходы по нахождению ошибок и их исправлению приведены ниже. 
- 
-===== Ошибки ===== 
- 
-Конечная цель при выполнении макроса - это получение требуемого для нас отчета. Если отчет выполнился с другим результатом, чем ожидалось, это ошибка. Ошибки могут быть явными - выдается какое-либо предупреждение, и неявными - сообщений нет, но требуемый результат не достигнут. Возможные ситуации, которые сопровождают ошибки, приведены ниже. 
- 
-==== Отчет выполнился не верно, сообщение в Business Studio ==== 
- 
-Отчет выполняется не с ожидаемым результатом. При этом в окне системных сообщений Business Studio (см. [[ru/manual/manual]] -> [[ru/manual/interface/main_form]]) выдается текст вида: 
- 
-<code text> 
-17.07.2013 9:07:18 Ошибка при выполнении макроса ПослеВыполненияОтчета: Адресат вызова создал исключение.  
-Действия не будут выполнены. 
-</code> 
- 
-__Причина__: причины могут быть различные. Например, попытка обработки текстовых переменных арифметическими операциями. 
- 
-__Решение__: запустить отчет на выполнение в режиме отладки кода (см. [[#отладка_кода|Отладка кода]]). 
- 
-==== Отчет выполнился не верно, сообщений об ошибках нет ==== 
- 
-При просмотре выполненного отчета видим, что необходимый результат не достигнут. При этом не было никаких сообщений об ошибке. 
- 
-__Причина:__ ошибка в логике кода, не указаны полностью все необходимые действия в коде, ошибочные вводные параметры. 
- 
-__Решение:__ запустить отчет на выполнение в режиме отладки кода (см. [[#отладка_кода|Отладка кода]]). 
- 
-==== Никаких сообщений, отчет выполняется "вечно" ==== 
- 
-Никаких сообщений не выводится и выполнение одного отчета длится очень долго. "Очень долго" - от нескольких минут и более. Если обработка не связана с очень большим объёмом данных, то, возможно,  получился бесконечный цикл, из которого макрос не может выйти. 
- 
-__Причина__: Разработчик кода макроса допустил логическую ошибку, задав неверные условия в циклических операциях. 
- 
-__Решение__: завершить выполнение MS Word (MS Excel) через Диспетчер задач Windows (Ctrl+Alt+Del). Возможно, для работы над отчетом потребуется перегрузить Windows. 
- 
-Далее отчет следует запускать на выполнение при отладке макроса (см. [[#отладка_кода|Отладка кода]]). 
- 
-==== Другие сообщения об ошибках ==== 
- 
-Вариантов и причин ошибок может быть множество. Как правило, характер ошибки понятен из выводимого сообщения. И для исправления ошибок необходимо использовать отладку кода. 
- 
-===== Отладка кода ===== 
- 
-Если путем логических размышлений о причине ошибки исправить её не получается, необходимо детально рассмотреть выполнение макроса и отладить код. Отладка кода подразумевает определение конкретного проблемного места в коде, который приводит к ошибке, и его исправление для получения желаемого результата. 
- 
-Для того чтобы "залезть в отладку" и пошагово пройтись по выполнению макроса, необходимо первыми строками макроса написать следующие: 
- 
-<code vb> 
-'Для отладки 
-Dim  DebugVar As Variant 
-Set DebugVar = 0 
-'конец "для отладки" 
-</code> 
- 
-При выполнении макроса будет выдано сообщение об ошибке на фоне еще одного окна среды VBA. К этой ошибке привел вышеуказанный код. 
- 
-[{{ ru:creating_user_reports:use_macros_in_reports:debug:lang_debug1.png?nolink |Рисунок 1. Сообщение об ошибке, созданной умышленно 
-}}] 
- 
-Далее необходимо: 
- 
-  - Нажать в сообщении "Ок"; 
-  - Закомментировать указанные ранее строки; 
-  - Продолжить работу с макросом пошагово или через точки прерывания -- Breakpoint 
-  - Найти место ошибки и понять, как ее исправить. 
-  - Внести исправление в код в среде VBA разрабатываемого отчета. 
- 
-[{{ ru:creating_user_reports:use_macros_in_reports:debug:lang_debug2.png?nolink |Рисунок 2. Комментирование строк, приведших к ошибке 
-}}] 
- 
-== == 
-**Внимание!** Окно среды VBA, вызванное в ходе перехода к отладке, является окном для отладки конкретного вызываемого отчета и не относится к шаблону отчета Business Studio. Изменения кода в таком окне не будут сохранены в макросе шаблона разрабатываемого отчета. Поэтому окно VBA для отладки лучше использовать для понимания выполнения текущего кода. Изменения же кода необходимо делать в основном окне VBA разрабатываемого отчета. 
-==== ==== 
- 
-==== Видимость значений переменных ==== 
- 
-В ходе отладки макроса необходимо видеть значения некоторых переменных. Возможные пути их получения приведены ниже. 
- 
-**Значения переменных в окне** **Watches** 
- 
-Значения необходимых переменных можно получить в ходе отладки в среде VBA: меню Debug -- Add Watch… 
- 
-Дополнительно:  
- 
-  * [[http://msdn.microsoft.com/en-us/library/ms172744(v=vs.80).aspx|Debugging Your Visual Basic Application]] 
- 
-**Значения переменных в сообщениях** 
- 
-Значения необходимых переменных также можно получить путем их вывода в отдельных сообщениях в ходе выполнения макроса. Что и когда выводить, определяется непосредственно в коде макроса. 
- 
-Например, вывести какое-то сообщение можно так: 
-<code vb> 
-MsgBox "Текст сообщения" 
-</code> 
- 
-Значение переменной типа "Текст" можно вывести так: 
-<code vb> 
-txtVar = "Какое-то значение переменной" 
-MsgBox "Значение txtVar = " & txtVar 
-</code> 
- 
-Значение числовой переменной можно вывести так: 
-<code vb>  
-digitalVar = 10 
-MsgBox "Значение digitalVar = " & Str(digitalVar) 
-</code> 
- 
-Сообщение в разных строках можно вывести так: 
-<code vb>  
-MsgBox "Текст первой строки" & Chr(13)  & _ 
-"Текст второй строки" 
-</code> 
- 
-===== Полезные ссылки ===== 
- 
-  *[[https://www.google.ru/search?q=отладка+кода+vba|google.com]] 
- 
- 
- 
- 
- 
-[<contextnavigator>] 
- 
  
Driven by DokuWiki