Различия

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

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

ru:manual:report:use_macros_in_reports:debug [2013/10/11 07:42]
radchenko [Видеть значения переменных]
— (текущий)
Строка 1: Строка 1:
-====== Подходы к отладке кода ====== 
  
-Некоторые подходы по нахождению ошибок и их исправлению приведены ниже. 
- 
-===== Ошибки ===== 
- 
-Конечная цель при выполнении макроса -- это получение требуемого для нас отчета. Если отчет выполнился с другим результатом, чем ожидалось, -- это ошибка. Ошибки могут быть явными -- выдается какое-либо предупреждение, и неявными -- сообщений нет, но требуемый результат не достигнут. Возможные ситуации, которые сопровождают ошибки, приведены ниже. 
- 
-==== Отчет выполнился не верно, сообщение в Business Studio ==== 
- 
-Отчет выполняется не с ожидаемым результатом. При этом в [[ru/manual/interface/main_form|окне системных сообщений Business Studio]] выдается текст вида: 
-<code text> 
-17.07.2013 9:07:18 Ошибка при выполнении макроса ПослеВыполненияОтчета: Адресат вызова создал исключение..  
-Действия не будут выполнены. 
-</code> 
-__Причина__: причины различные. Например, попыткой обработки текстовых переменных арифметическими операциями. 
- 
-__Решение__: запустить отчет на выполнение в режиме отладки кода (см. [[#отладка_кода| Отладка кода]]). 
- 
-==== Отчет выполнился не верно, сообщений об ошибках нет ==== 
- 
-При просмотре выполненного отчета, видим, что необходимый результат не достигнут. При этом не было никаких сообщений об ошибке. 
- 
-__Причина:__ ошибка в логике кода, не указаны полностью все необходимые действия в коде, ошибочные вводные параметры. 
- 
-__Решение:__ запустить отчет на выполнение в режиме отладки кода (см. [[#отладка_кода| Отладка кода]]). 
- 
-==== Никаких сообщений, отчет выполняется "вечно" ==== 
- 
-Никаких сообщений не выводится и выполнение одного отчета длится очень долго. "Очень долго" - от нескольких минут и более. Если обработка не связана с очень большим объёмом данных, то, возможно,  получился бесконечный цикл, из которого макрос не может выйти. 
- 
-__Причина__: Разработчик кода макроса допустил логическую ошибку, задав неверные условия в циклических операциях. 
- 
-__Решение__: завершить выполнение MS Word (MS Excel) через Диспетчер задач (Alt+Ctrl+Del). Возможно, для работы над отчетом потребуется перегрузить Windows. 
- 
-Далее отчет следует запускать на выполнение при отладке макроса (см. [[#отладка_кода| Отладка кода]]). 
- 
-==== Другие сообщения об ошибках ==== 
- 
-Вариантов и причин ошибок может быть множество. Как правило, характер ошибки пишется в сообщения. И для их исправления необходимо использовать отладку кода. 
- 
-===== Отладка кода ===== 
- 
-Если путем логических размышлений о причине ошибке исправить её не получается, необходимо детально рассмотреть выполнение макроса -- отладить код. Отладка кода подразумевает определение конкретного проблемного места в коде, который приводит к ошибке, и его исправление для получения желаемого результата. 
- 
-Для того чтобы "залезть в отладку" и пошагово пройтись по выполнению макроса необходимо первыми строками макроса написать следующие строки: 
- 
-<code vb> 
- 
-'Для отладки 
-Dim  DebugVar As Variant 
-Set DebugVar = 0 
-'конец "для отладки" 
-  
-</code> 
- 
-При выполнении макроса будет выдано сообщение об ошибке на фоне еще одного окна среды VBA. К этой ошибке привел вышеуказанный код. 
- 
-[{{ ru:manual:report:use_macros_in_reports:debug:debug1.png?nolink |Рисунок 1. Сообщение об ошибке, созданной умышленно 
-}}] 
- 
-Далее необходимо: 
- 
-  - Нажать в сообщении "Ок"; 
-  - Закомментировать указанные ранее строки; 
-  - Продолжит работу с макросом пошагово или через точки прерывания -- Breakpoint 
-  - Найти место ошибки и понять, как ее исправить. 
-  - Внести исправление в код в среде VBA разрабатываемого отчета. 
- 
-[{{ ru:manual:report:use_macros_in_reports:debug: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> 
- 
-Для вывода сообщения в разных строках необходимо использовать вставить Chr(13): 
-<code vb>  
-MsgBox "Текст первой строки" & Chr(13)  & _ 
-"Текст второй строки" 
-</code> 
-===== Полезные ссылки ===== 
- 
-  *[[http://office.microsoft.com/ru-ru/access-help/HP005186717.aspx|Отладка программ Visual Basic]]  
-  *[[https://www.google.com/search?client=safari&rls=en&q=%D0%BE%D1%82%D0%BB%D0%B0%D0%B4%D0%BA%D0%B0+%D0%BA%D0%BE%D0%B4%D0%B0+vba&ie=UTF-8&oe=UTF-8|Google.com]] 
Актуальные новости, публикации и практики для бизнес-архитекторов и аналитиков
Driven by DokuWiki