Различия

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

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

ru:creating_user_reports:use_macros_in_reports:debug [2013/10/16 16:02]
127.0.0.1 внешнее изменение
ru:creating_user_reports:use_macros_in_reports:debug [2019/11/11 16:48] (текущий)
belkin [Отладка кода]
Строка 5: Строка 5:
 ===== Ошибки ===== ===== Ошибки =====
  
-Конечная цель при выполнении макроса -- это получение требуемого для нас отчета. Если отчет выполнился с другим результатом, чем ожидалось, -- это ошибка. Ошибки могут быть явными -- выдается какое-либо предупреждение, и неявными -- сообщений нет, но требуемый результат не достигнут. Возможные ситуации, которые сопровождают ошибки, приведены ниже.+Конечная цель при выполнении макроса - это получение требуемого для нас отчета. Если отчет выполнился с другим результатом, чем ожидалось, это ошибка. Ошибки могут быть явными - выдается какое-либо предупреждение, и неявными - сообщений нет, но требуемый результат не достигнут. Возможные ситуации, которые сопровождают ошибки, приведены ниже.
  
 ==== Отчет выполнился не верно, сообщение в Business Studio ==== ==== Отчет выполнился не верно, сообщение в Business Studio ====
  
-Отчет выполняется не с ожидаемым результатом. При этом в [[ru/manual/interface/main_form|окне системных сообщений Business Studio]] выдается текст вида: +Отчет выполняется не с ожидаемым результатом. При этом в окне системных сообщений Business Studio (см. [[ru/manual/manual]] -> [[ru/manual/interface/main_form]]выдается текст вида: 
-<code text+ 
-17.07.2013 9:07:18 Ошибка при выполнении макроса ПослеВыполненияОтчета: Адресат вызова создал исключение.+<code> 
 +17.07.2013 9:07:18 Ошибка при выполнении макроса ПослеВыполненияОтчета: Адресат вызова создал исключение. 
 Действия не будут выполнены. Действия не будут выполнены.
 </code> </code>
-__Причина__: причины различные. Например, попыткой обработки текстовых переменных арифметическими операциями. 
  
-__Решение__: запустить отчет на выполнение в режиме отладки кода (см. [[#отладка_кода| Отладка кода]]).+__Причина__: причины могут быть различные. Например, попытка обработки текстовых переменных арифметическими операциями. 
 + 
 +__Решение__: запустить отчет на выполнение в режиме отладки кода (см. [[#отладка_кода|Отладка кода]]).
  
 ==== Отчет выполнился не верно, сообщений об ошибках нет ==== ==== Отчет выполнился не верно, сообщений об ошибках нет ====
  
-При просмотре выполненного отчетавидим, что необходимый результат не достигнут. При этом не было никаких сообщений об ошибке.+При просмотре выполненного отчета видим, что необходимый результат не достигнут. При этом не было никаких сообщений об ошибке.
  
 __Причина:__ ошибка в логике кода, не указаны полностью все необходимые действия в коде, ошибочные вводные параметры. __Причина:__ ошибка в логике кода, не указаны полностью все необходимые действия в коде, ошибочные вводные параметры.
  
-__Решение:__ запустить отчет на выполнение в режиме отладки кода (см. [[#отладка_кода| Отладка кода]]).+__Решение:__ запустить отчет на выполнение в режиме отладки кода (см. [[#отладка_кода|Отладка кода]]).
  
 ==== Никаких сообщений, отчет выполняется "вечно" ==== ==== Никаких сообщений, отчет выполняется "вечно" ====
Строка 32: Строка 34:
 __Причина__: Разработчик кода макроса допустил логическую ошибку, задав неверные условия в циклических операциях. __Причина__: Разработчик кода макроса допустил логическую ошибку, задав неверные условия в циклических операциях.
  
-__Решение__: завершить выполнение MS Word (MS Excel) через Диспетчер задач (Alt+Ctrl+Del). Возможно, для работы над отчетом потребуется перегрузить Windows.+__Решение__: завершить выполнение MS Word (MS Excel) через Диспетчер задач Windows (Ctrl+Alt+Del). Возможно, для работы над отчетом потребуется перегрузить Windows.
  
-Далее отчет следует запускать на выполнение при отладке макроса (см. [[#отладка_кода| Отладка кода]]).+Далее отчет следует запускать на выполнение при отладке макроса (см. [[#отладка_кода|Отладка кода]]).
  
 ==== Другие сообщения об ошибках ==== ==== Другие сообщения об ошибках ====
  
-Вариантов и причин ошибок может быть множество. Как правило, характер ошибки пишется в сообщения. И для их исправления необходимо использовать отладку кода.+Вариантов и причин ошибок может быть множество. Как правило, характер ошибки понятен из выводимого сообщения. И для исправления ошибок необходимо использовать отладку кода.
  
 ===== Отладка кода ===== ===== Отладка кода =====
  
-Если путем логических размышлений о причине ошибке исправить её не получается, необходимо детально рассмотреть выполнение макроса -- отладить код. Отладка кода подразумевает определение конкретного проблемного места в коде, который приводит к ошибке, и его исправление для получения желаемого результата.+Если путем логических размышлений о причине ошибки исправить её не получается, необходимо детально рассмотреть выполнение макроса и отладить код. Отладка кода подразумевает определение конкретного проблемного места в коде, который приводит к ошибке, и его исправление для получения желаемого результата.
  
-Для того чтобы "залезть в отладку" и пошагово пройтись по выполнению макроса необходимо первыми строками макроса написать следующие строки: +Для того чтобы "залезть в отладку" и пошагово пройтись по выполнению макросанеобходимо первыми строками макроса написать следующие:
- +
-<code vb>+
  
 +<code>
 'Для отладки 'Для отладки
 Dim  DebugVar As Variant Dim  DebugVar As Variant
 Set DebugVar = 0 Set DebugVar = 0
-'конец "для отладки" +'конец "для отладки"
- +
 </code> </code>
  
Строка 64: Строка 64:
   - Нажать в сообщении "Ок";   - Нажать в сообщении "Ок";
   - Закомментировать указанные ранее строки;   - Закомментировать указанные ранее строки;
-  - Продолжит работу с макросом пошагово или через точки прерывания -- Breakpoint+  - Продолжить работу с макросом пошагово или через точки прерывания -- Breakpoint
   - Найти место ошибки и понять, как ее исправить.   - Найти место ошибки и понять, как ее исправить.
   - Внести исправление в код в среде VBA разрабатываемого отчета.   - Внести исправление в код в среде VBA разрабатываемого отчета.
Строка 70: Строка 70:
 [{{ ru:creating_user_reports:use_macros_in_reports:debug:debug2.png?nolink |Рисунок 2. Комментирование строк, приведших к ошибке [{{ ru:creating_user_reports:use_macros_in_reports:debug:debug2.png?nolink |Рисунок 2. Комментирование строк, приведших к ошибке
 }}] }}]
- 
  
 == Внимание! == == Внимание! ==
- 
 Окно среды VBA, вызванное в ходе перехода к отладке, является окном для отладки конкретного вызываемого отчета и не относится к шаблону отчета Business Studio. Изменения кода в таком окне не будут сохранены в макросе шаблона разрабатываемого отчета. Поэтому окно VBA для отладки лучше использовать для понимания выполнения текущего кода. Изменения же кода необходимо делать в основном окне VBA разрабатываемого отчета. Окно среды VBA, вызванное в ходе перехода к отладке, является окном для отладки конкретного вызываемого отчета и не относится к шаблону отчета Business Studio. Изменения кода в таком окне не будут сохранены в макросе шаблона разрабатываемого отчета. Поэтому окно VBA для отладки лучше использовать для понимания выполнения текущего кода. Изменения же кода необходимо делать в основном окне VBA разрабатываемого отчета.
-====== ======+==== ====
  
-==== Видеть значения переменных ====+==== Видимость значений переменных ====
  
 В ходе отладки макроса необходимо видеть значения некоторых переменных. Возможные пути их получения приведены ниже. В ходе отладки макроса необходимо видеть значения некоторых переменных. Возможные пути их получения приведены ниже.
Строка 91: Строка 89:
 **Значения переменных в сообщениях** **Значения переменных в сообщениях**
  
-Значения необходимых переменных также можно получить путем их вывода в отдельных сообщениях в ходе выполнения макроса. Что и когда выводить определяется непосредственно в коде макроса.+Значения необходимых переменных также можно получить путем их вывода в отдельных сообщениях в ходе выполнения макроса. Что и когда выводитьопределяется непосредственно в коде макроса.
  
 Например, вывести какое-то сообщение можно так: Например, вывести какое-то сообщение можно так:
-<code vb>+<code>
 MsgBox "Текст сообщения" MsgBox "Текст сообщения"
 </code> </code>
  
-Значение переменной типа текст можно вывести так: +Значение переменной типа екстможно вывести так: 
-<code vb>+<code>
 txtVar = "Какое-то значение переменной" txtVar = "Какое-то значение переменной"
 MsgBox "Значение txtVar = " & txtVar MsgBox "Значение txtVar = " & txtVar
Строка 105: Строка 103:
  
 Значение числовой переменной можно вывести так: Значение числовой переменной можно вывести так:
-<code vb+<code> 
 digitalVar = 10 digitalVar = 10
 MsgBox "Значение digitalVar = " & Str(digitalVar) MsgBox "Значение digitalVar = " & Str(digitalVar)
 </code> </code>
  
-Для вывода сообщения в разных строках необходимо использовать вставить Chr(13)+Сообщение в разных строках можно вывести так
-<code vb+<code> 
 MsgBox "Текст первой строки" & Chr(13)  & _ MsgBox "Текст первой строки" & Chr(13)  & _
 "Текст второй строки" "Текст второй строки"
 </code> </code>
 +
 ===== Полезные ссылки ===== ===== Полезные ссылки =====
  
-  *[[http://office.microsoft.com/ru-ru/access-help/HP005186717.aspx|Отладка программ Visual Basic]]  
   *[[https://www.google.ru/search?q=отладка+кода+vba|google.com]]   *[[https://www.google.ru/search?q=отладка+кода+vba|google.com]]
 +
 +
 +
 +
 +
 +[<contextnavigator>]
 +
 +
Актуальные новости, публикации и практики для бизнес-архитекторов и аналитиков
Driven by DokuWiki