4273

Отладка приложений Access

Контрольная

Информатика, кибернетика и программирование

Отладка приложений Access. Использование средств отладки MicrosoftAccess и методик отладки, описанных в данной статье, позволяет сэкономить очень много времени, требующегося для разработки. Время, затраченное на изучение этих средств и методик...

Русский

2012-11-15

178 KB

30 чел.

Отладка приложений Access.

Использование средств отладки Microsoft Access и методик отладки, описанных в данной статье, позволяет сэкономить очень много времени, требующегося для разработки. Время, затраченное на изучение этих средств и методик, с лихвой окупит себя в дальнейшей перспективе.

Не следует полагать, что данные средства отладки нужны только для создания сложных приложений. Даже в самых простых приложениях возникают совершенно нетривиальные программные ошибки, обнаружить которые нелегко. Программные ошибки должны быть немедленно обнаружены и исправлены. Хотя некоторые ошибки практически не вызывают проблем, другие могут привести к повреждению базы данных или к худшим последствиям.

Исключение логических ошибок

Следствием логических ошибок является то, что выполнение кода не приводит к ожидаемому результату. Причиной является либо дефект в самой логике, либо некорректное выполнение программ. При выполнении кода и появлении неожиданных результатов следует задуматься о возможном наличии логических ошибок. Большая часть времени, затрачиваемая на отладку приложения, уходит на обнаружение и исправление логических ошибок. В данной статье описаны средства и методы, позволяющие решить связанные с этим проблемы.

Логические ошибки могут происходить по следующим причинам:

• Процедура пытается использовать поле базы данных, не содержащее значений (нулевое значение)

• Неправильные математические расчеты

• Обработка операции в коде в неверном порядке

Работа в среде разработки Visual Basic (IDE)

Среда разработки в Access 2000 претерпела радикальные изменения. В настоящее время в Access включена Integrated Development Environment (IDE) (интегрированная среда разработки) Visual Basic, имеющиеся также в Visual Basic 5/6, Word 97 и других программных продуктах Office 97/2000. Эта среда редактирования включает стандартные средства разработки приложений для различных программных продуктов. Методики отладки, описанные в данной статье, с одинаковым успехом могут использоваться как в разработках Access, так и в разработках Visual Basic и Microsoft Office. Чтобы открыть IDE, находясь в режиме конструктора, необходимо в меню выбрать команду View | Code (Вид | Код). Среда IDE включает различные окна, которые можно открывать и закрывать, например, окно Project (Проект), окно Properties (Свойства), окно Immediate (Отладка) и др. Чтобы открыть окно в IDE, необходимо выбрать данное окно в меню View. Закрыть окно можно, щелкнув на кнопке закрытия окна в верхнем правом углу окна. При следующем запуске IDE все окна будут отображены в том же состоянии, в котором они находились в момент выхода из среды IDE. Когда в окне Design (Конструктор) открыта форма, можно работать с элементами управления и свойствами, как и в предыдущих версиях Access. Однако для просмотра кода формы необходимо открыть IDE Visual Basic (рис. 1). На самом деле это совершенно отдельное от Access приложение.

РИСУНОК 1. Интегрированная среда разработки (IDE) Visual Basic.

Хотя IDE Visual Basic является отдельным приложением, оно работает вместе с Access. Если IDE Visual Basic открыта, при выходе из Access она закрывается. Чтобы закрыть IDE Visual Basic, необходимо в меню выбрать пункты File | Close | Return to Microsoft Access (Файл | Закрыть | Вернуться в Microsoft Access).

Рассмотрим окна IDE Visual Basic.

Project Explorer

Project Explorer (Проводник проектов) отображает список форм, отчетов и модулей класса в данном приложении Access (рис. 2). Для просмотра кода необходимо щелкнуть правой кнопкой мыши на каком-либо из этих объектов или перейти в режим конструктора формы. Чтобы открыть Project Explorer, необходимо в меню выбрать команду View | Project Explorer (Вид | Проводник проектов) или использовать комбинацию клавиш Ctrl+R.

РИСУНОК 2. Окно Project Explorer.

Окно Code

Окно Code (Код) отображает код для форм, модулей и модулей класса (рис. 3). Разработчики обычно проводят много часов, вводя и модифицируя код в окне Code. Чтобы открыть окно Code, необходимо в меню выбрать команду View | Code (Вид | Код) или нажать клавишу F7. В верхней части окна Code имеется два раскрывающихся списка. Список с левой стороны используется для выбора объекта, например, формы или элемента управления в форме. Список с правой стороны используется для выбора процедуры данного объекта.

РИСУНОК 3. Окно Code.

Окно Properties Window

Окно Properties (Свойства) используется для установки и просмотра свойств форм, отчетов или элементов управления в формах и отчетах (рис. 4). Чтобы открыть окно Properties, необходимо в меню выбрать пункты View | Properties Window (Вид | Окно свойств) или нажать клавишу F4.

РИСУНОК 4. Окно Properties.

Окно Immediate

Окно Immediate (Отладка) можно использовать для оценки и установки переменных, запуска процедур и вывода для выражений Debug.Print. Чтобы открыть окно Immediate, необходимо в меню выбрать команду View | Immediate Window (Вид | Окно отладки) или нажать Ctrl+G. Подробнее окно отладки описано далее в данной статье.

Окно Locals

Окно Locals (Переменные) отображает выражения, значения и типы всех переменных текущей области действия. Чтобы открыть окно Locals, необходимо в меню выбрать команду View | Locals Window (Вид | Окно переменных). Более подробно окно переменных рассматривается далее в этой статье.

Окно Watch

Окно Watch (Наблюдение) используется для оценки выражений во время выполнения приложения. Чтобы открыть окно Watch, необходимо в меню выбрать пункты View | Watch Window (Вид | Окно наблюдения). Более подробно окно наблюдения рассматривается далее в этой статье.

Object Browser

Чтобы открыть Object Browser (Браузер объектов), необходимо в меню выбрать пункты View | Object Browser (Вид | Браузер объектов) или нажать клавишу F2. Браузер объектов используется для просмотра объектов, свойств и методов (рис. 5).

РИСУНОК 5. Браузер объектов.

Окно Call Stack

Окно Call Stack (Вызов стека) отображает ранее вызванные процедуры. Чтобы открыть окно стека, необходимо в меню выбрать команду View Call Stack (Вид | Вызов стека) или нажать Ctrl+L). Более подробно окно вызова стека рассматривается далее в данной статье.

СОВЕТ

Как рассматривалось ранее, в IDE можно отобразить достаточно большое количество окон. В IDE гораздо удобнее работать, если установить разрешение экрана 1024х768 или выше. Еще лучше воспользоваться функцией поддержки нескольких мониторов Windows 98/Windows 2000.

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

Работа с объектом Debug

Объект Debug содержит два метода, которые могут оказаться полезными при отладке приложений:

Debug.Print и Debug.Assert.

Метод Debug.Print

С помощью метода Debug.Print можно выводить информацию в окне Immediate. Данный метод можно использовать либо в самом окне Immediate, либо при работе с кодом.

СОВЕТ

Для вывода информации в окне Immediate необходимо в коде использовать метод Debug.Print. При тестировании выражений или выполнении функций в окне Immediate не обязательно вводить Debug.Print. Вместо этого достаточно ввести знак вопроса ?, что приводит к тому же результату.

В окне Immediate можно протестировать встроенные функции, значения в наборе записей и др. (рис. 6). Например, на рис. 6 показаны результаты тестирования встроенной функции Len.

Если использовать метод Debug.Print в коде, значения и другая информация будут выводиться в окне Immediate. При выполнении следующего кода значение состояния будет выведено в окне Immediate

Sub Demo ( )

Debug.Print rat.States

Select Case rst.States

Case "Washington”

MsgBox "Washington"

Case "Oregon”

MsgBox "Oregon"

Case "California"

MsgBox "California

End Select

End Sub

РИСУНОК 6. Использование метода Debug.Print для тестирования встроенных функций.

В окне Immediate не производится перенос текста на следующую строку, поэтому объем выводимой информации по возможности следует сократить. Удалять операции Debug.Print из кода нет необходимости, поскольку пользователь никогда не увидит окно Immediate. Однако, если количество операторов окажется слишком большим, это может несколько повлиять на производительность.

Метод Debug.Assert

Метод Debug.Assert приостанавливает выполнение отдельной строки кода в зависимости от поставленного условия. Например, если оператор кода считывает Debug.Assert False, код приостанавливает выполнение данной строки. Это позволяет выполнять код по шагам и отладить ошибки.

СОВЕТ

Никогда не используйте в коде зарезервированное слово Stop. Следует учитывать, что, если оставить это ключевое слово, выполнение кода остановится при запуске приложения пользователем. Рекомендуется всегда использовать Debug.Assert False, поскольку данный оператор всегда удаляется компилятором.

Использование окна отладки

Чтобы открыть окно Immediate, необходимо запустить редактор Visual Basic и выбрать в меню команду View | Immediate Window (Вид | Окно отладки) или нажать клавиши Ctrl+G. Окно отладки можно использовать для оценки и установки переменных, запуска функций и подпрограмм, а также для вывода результатов выражения Debug.Print.

Оценка переменных

Для оценки переменных в окне Immediate необходимо ввести знак вопроса с именем переменной, например, ? strName. Следует также помнить, что значение переменной можно определить, задержав курсор мыши над переменной в режиме прерывания.

Изменение значения переменной

Для изменения значения переменной в окне Immediate необходимо ввести имя переменной со знаком равенства и новым значением, например, inti = 10.

Оценка встроенных функций

Для оценки встроенных функций в окне Immediate необходимо ввести знак вопроса и имя встроенной функции, например, ? Now.

Выполнение пользовательских функций

Для запуска пользовательских функций в окне Immediate необходимо ввести знак вопроса, имя функции и соответствующие параметры, например, ? MyFunction.

Выполнение пользовательских подпрограмм

Для выполнения пользовательских подпрограмм в окне Immediate необходимо ввести имя подпрограммы и соответствующие параметры, например, MySubProcedure. Перед именем подпрограммы знак вопроса не ставится.

СОВЕТ

При запуске подпрограммы или функции в окне Immediate необходимо ввести имя подпрограммы или функции (знак вопроса перед именем подпрограммы не используется). Если подпрограмма или функция находится в модуле формы, перед именем процедуры следует ввести имя формы (например, frmTest. MySubProcedure).

Полезные советы

Поскольку значительную часть времени разработчик проводит в работе с окном Immediate, приведенные ниже советы могут оказаться полезными.

Выполнение операторов в окне Immediate

Для выполнения оператора кода в окне отладки необходимо поместить курсор где-нибудь в операторе. Курсор не обязательно должен находиться в начале или в конце оператора кода.

Если в окне Immediate отображается несколько операторов кода, не обязательно удалять операторы, находящиеся после требуемого оператора. Достаточно поместить курсор где-нибудь в операторе кода, который необходимо выполнить, и нажать клавишу Enter.

Перемещение в окне отладки

Для передвижения курсора используются мышь и клавиши со стрелками. С помощью клавиши Home можно передвинуть курсор к началу текущей строки кода, а с помощью клавиши End — к концу строки.

Клавиши Page Up и Page Down позволяют переместиться на страницу вверх и вниз соответственно. Для установки курсора в начало окна Immediate необходимо нажать клавиши Ctrl+Home. Для перехода в конец окна отладки используется комбинация клавиш Ctrl+End.

Удаление кода в окне отладки

Для быстрого выделения всего кода в окне отладки в целях последующего удаления используется комбинация клавиш Shift+Ctrl+Home, если курсор находится в конце кода в окне Immediate. Весь код будет выделен, и можно нажать клавишу Delete для его удаления.

Если курсор находится в начале кода в окне Immediate, необходимо использовать комбинацию клавиш Shift+Ctrl+End для выделения всего кода. Затем можно нажать клавишу Delete.

Использование отладчика

В Access 2000 очень просто заниматься отладкой приложений. Для этого нужно просто остановить выполнение кода в определенных местах и, выполняя его шаг за шагом, наблюдать за ходом выполнения.

Установка прерываний

Прерывание останавливает выполнение кода. Для установки точки прерывания необходимо поместить курсор на оператор и в меню редактора Visual Basic выбрать команду Run | Toggle Breakpoint (Выполнить | Переключить прерывания) или нажать клавишу F9. Следует помнить, что нельзя установить прерывание на пустой строке, строке комментария или строке кода, содержащей оператор Dim. Еще один способ установки прерывания — щелкнуть на сером левом поле окна кода рядом с соответствующей строкой кода. При этом на левой границе появится большая красная точка, которая указывает на установленную точку прерывания.

При запуске программы выполнение приостанавливается на том операторе, где установлено прерывание (рис. 7). Автоматически открывается модуль кода, и оператор кода будет выделен желтым цветом. Можно шаг за шагом проходить по коду, просматривать или менять значения переменных и т.п.

РИСУНОК 7. Выполнение кода приостановлено на точке прерывания

Для удаления точки прерывания необходимо в меню выбрать команду Run | Clear All Breakpoints (Выполнить | Убрать прерывания) или нажать клавиши Ctrl+Shift+F9.

Выполнение кода в пошаговом режиме

Когда выполнение кода приостанавливается из-за прерывания, выражение кода, выделенное желтым цветом, не выполняется. Продолжить выполнение кода можно несколькими способами.

Step Into

Для выполнения одного оператора кода одновременно необходимо в меню редактора Visual Basic выбрать команду Debug | Step Into (Отладка | Построчно) или нажать клавишу F8. Построчное выполнение кода — самый эффективный способ наблюдения за выполнением программы и значениями переменных в коде.

СОВЕТ

Некоторые разработчики предпочитают пользоваться панелью инструментов Debug. Чтобы открыть панель инструментов, необходимо в меню выбрать команду View | Toolbars | Debug (Вид | Панели инструментов | Отладка).  Л

Step Over

Иногда одна процедура вызывает другие процедуры. Вызываемая процедура может быть абсолютно надежной (иными словами, полностью протестированной и свободной от ошибок). Для выполнения вызванной процедуры целиком, без пошагового перехода от строки к строке, необходимо в меню выбрать команду Debug | Step Over (Отладка | Выполнение блока) Shift+FS.

После того как вызванная процедура завершится, снова произойдет останов. С этого места можно продолжить построчное выполнение кода.

Step Out

Предположим, в пошаговом режиме выполняется процедура, вызывающая другую процедуру. Находясь в вызванной процедуре, можно быстро закончить выполнение оставшегося кода и возвратиться в исходную процедуру. Для этого в меню необходимо выбрать пункты Debug | Step Out (Отладка | Выход из блока) или нажать клавиши Ctrl+Shift+F8. Такая опция зачастую бывает достаточно полезной.

Run to Cursor

При пошаговом выполнении кода можно выполнить блок кода целиком до того места, где находится курсор. Такая опция полезна при работе в пошаговом режиме, когда необходимо перейти к следующему разделу кода. Одним из примеров может служить цикл. Проверив цикл несколько раз в пошаговом режиме, чтобы убедиться в его правильной работе, можно перевести курсор в конец цикла и выбрать в меню команду Debug | Run to Cursor (Отладка | Выполнить до курсора) или нажать клавиши Ctrl+F8.

Set Next Statement

При пошаговом выполнении кода можно установить следующий оператор, который необходимо выполнить. Для этого нужно щелкнуть правой кнопкой мыши на той строке кода, которую необходимо выполнить следующей. Затем в контекстном меню следует выбрать пункт Set Next Statement (Установить следующий оператор).

Продолжение выполнения кода

После тестирования кода в пошаговом режиме можно продолжить выполнение кода с нормальной скоростью. Для этого в меню необходимо выбрать команду Run | Continue (Выполнить | Продолжить) или нажать клавишу F5.

Повторное выполнение кода

После обнаружения и исправления ошибки в пошаговом режиме можно выполнить код повторно, не останавливаясь и не перезапуская приложение. Желтая стрелка на левой границе показывает, какой оператор кода будет выполнен следующим. Можно щелкнуть на желтой стрелке, перетащить се вверх к предыдущей строке кода и выполнить код повторно.

Определение значений переменных

При отладке приложения значение переменной можно определить, если задержать указатель мыши над соответствующей переменной, находясь в режиме прерывания (рис. 8).

РИСУНОК 8. Определение значения переменной в режиме прерываний.

Для получения значения переменной можно также воспользоваться окном Immediate. Например, следующий текст, введенный в окне отладки, возвращает значение переменной с именем strName:

? strName

Использование технологии IntelliSense при отладке

При возникновении программной ошибки и обнаружении некорректной строки кода можно проверить синтаксис с помощью IntelliSense. Технология IntelliSense упрощает разработку, предлагая возможные свойства и методы объектов по мере ввода кода. Например, после ввода имени объекта (например, Recordset или Application) можно ввести точку и проверить, использовано ли правильное имя и написание данного свойства или метода. Если в раскрывающемся списке свойство или метод не отображается, возможно, это говорит о том, что синтаксис не верен.

Использование окна Locals

Окно Locals (Переменные) отображает выражения, значения и типы всех переменных, находящихся в области видимости (рис. 9). Чтобы открыть окно переменных, необходимо в меню выбрать команду View Locals Window (Вид | Окно переменных).

РИСУНОК 9. Окно Locals отображает переменные в текущей области видимости

СОВЕТ

Окно Locals можно использовать для изменения значения переменных. Для этого необходимо дважды щелкнуть на значении переменной и ввести новое значение.

Использование окна Watch

Окно Watch (Наблюдение) можно использовать для оценки выражений во время выполнения приложения. Например, если необходимо увидеть все места, где меняется значение переменной strName, можно воспользоваться окном наблюдения.

Сначала необходимо выбрать в меню пункты Debug | Add Watch (Отладка | Добавить для просмотра). В диалоговом окне Add Watch необходимо ввести выражение, за которым нужно установить наблюдение (например, strName = "Smith"). Кроме того, в диалоговом окне нужно указать, следует ли оценивать данное выражение в определенных процедурах, модулях или во всем приложении (рис. 10). Здесь же нужно указать Watch Type (Тип наблюдения):

Watch Expression — отслеживать выражение

Break When the Value is True — остановить выполнение кода в режиме прерываний, если выражение истинно

Break When Value Changes — остановить выполнение кода в режиме прерываний, когда значение выражения изменяется

РИСУНОК 10. Использование Оии-югового окна Add Watch для установки наблюдения за выражением.

Для быстрой установки наблюдения за выражением можно выделить выражение в тексте кода. Затем в меню необходимо выбрать команду Debug | Quick Watch (Отладка | Быстрый просмотр) или нажать клавиши Shifi+F9. В диалоговом окне Quick Watch необходимо щелкнуть на кнопке Add (Добавить) (рис. 11)

РИСУНОК 11. Использование диалогового окна Quick Watch

Просмотр в окне Call Stack

Приложение может включать процедуры, которые вызывают другие процедуры, а те, в свою очередь, вызывают третьи процедуры и т.д. При отладке приложения можно попасть в безвыходную ситуацию или запутаться в списке выполненных процедур. В таких случаях можно воспользоваться окном Call Stack (Вызов стека).

Окно вызова стека можно представлять себе следующим образом. При выполнении кода точка наблюдения передвигается в будущее. Call Stack представляет собой окно истории. Оно показывает, какие процедуры уже были выполнены (рис. 12). Чтобы открыть окно Call Stack, необходимо в меню выбрать команду View | Call Stack (Вид | Вызов стека) или использовать комбинацию клавиш Ctrl+L.

РИСУНОК 12. Окно Call Stack используется для отображения списка выполненных процедур

СОВЕТ

Для перехода к определенной процедуре можно выбрать ее в окне Call Stack и щелкнуть на кнопке Show (Показать) (или просто дважды щелкнуть на процедуре).

Использование условной компиляции

Работа с единственной версией приложения представляется гораздо более удобным подходом, чем создание нескольких версий. Предположим, имеется приложение, которое используется несколькими отделами. Большая часть приложения является общей и может использоваться всеми отделами, но небольшие блоки кода должны быть приспособлены под нужды каждого отдела. Если принято решение создать несколько версий, обновление и поддержка всех версий может оказаться непосильной задачей. Каждый новый блок общего кода необходимо добавлять во все версии. Кроме того, большое количество версий усложняет работу с приложением и затрудняет его распространение.

Гораздо удобнее создать единственную версию приложения, которая по-разному выполняется при разных обстоятельствах. Можно выбрать, какая часть кода в приложении компилируется или выполняется в зависимости от обстоятельств.

В качестве примера допустим, что в Лос-Анджелесском отделении предприятия должна выполняться некоторая часть кода, которая не выполняется ни в одном из других отделений. Во-первых, необходимо выбрать константу для данного отделения, например, LA. Константу нужно ввести как аргумент условной компиляции для приложения. В редакторе Visual Basic в меню необходимо выбрать команду Tools | Apllication's Properties (Сервис | Свойства приложения). Откроется диалоговое окно Project Properties (Свойства проекта). Нужно выбрать вкладку General (Общие). В поле Conditional Compilation Arguments (Аргументы условной компиляции) необходимо ввести LA = -I. Данное выражение позволяет установить константу равной True.

Теперь можно ввести код, который выполняется только для версии LA приложения. Для этого необходимо записать код в конструктив условной компиляции. Например:

#If LA Than

' Данный код выполнятся в IA-версии приложения.

#End If

Кроме того, условная компиляция может оказаться полезным средством отладки. Если необходимо часто комментировать разделы кода, нужно установить аргумент условной компиляции fComment = -1. Данный флаг комментария теперь можно использовать в конструктиве условной компиляции для комментирования разделов кода:

#If fComment Then

' Выполняется данный код.

#End If

Создание надежного кода

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

Объявление переменных в отдельных строках кода

Гораздо проще проверить, объявлена ли переменная, просматривая переменные, записанные в отдельных строках кода, а не в одной длинной текстовой строке. Кроме того, данный подход позволяет избежать проигрыша в скорости.

СОВЕТ

Кроме того, группировка объявляемых переменных по типу данных также упрощает обращение к переменным.

Объявление переменных в минимальной области действия

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

Использование специфических типов данных

Рекомендуется всегда объявлять тип данных и использовать наименьший по занимаемому объему тип данных. Если тип данных не объявлять, используется тип Variant. Это не только неэффективно из-за дополнительных требований к ресурсам, но и может стать причиной появления программных ошибок, поскольку любой тип данных можно присвоить переменной типа Variant. Например, если переменная должна хранить только числа и при этом использован тип Variant, может возникнуть ошибка, когда с переменной используются данные, отличные от чисел, или объекты.

Разрушение объектных переменных

Разрушение объектных переменных позволяет уменьшить вероятность ошибок ресурсов. Если существует объектная переменная с именем objWord, необходимо разрушить ее в конце процедуры с помощью выражения Set objWord = Nothing.

Использование зарезервированного слова TypeOf

Часто можно передавать элементы управления в общую процедуру. Например, можно передать список и поле со списком в общую процедуру, которая загружает значения с помощью метода Addltem. Если передавать элемент управления, который не является ни списком, ни полем со списком (например, командная кнопка), возникнет ошибка, поскольку данный элемент управления не содержит метод Addltem. В процедуре для проверки типа элемента управления и устранения ошибки используется зарезервированное слово TypeOf.

Использование ключевого слова Me вместо Screen.ActiveForm и Screen.ActiveControl

При отладке приложения ключевым окном является окно Immediate. Таким образом, методы Screen.ActiveForm и Screen.ActiveControl не будут работать. Вместо них для обращения к текущей форме используется ключевое слово Me.

Использование обработчика ошибок

При возникновении ошибки обработчик ошибок может помочь сэкономить время и обнаружить оператор, ставший причиной сбоя, выдать информацию о типе ошибки, номере строки и т.д. Более подробная информация об обработчике ошибок приведена в статье «Профессиональная обработка ошибок».

Использование Option Explicit

Рекомендуется производить явное объявление всех переменных, использовав опцию Option Explicit в начале каждого модуля. По умолчанию эту опцию можно установить, выбрав опцию программы Require Variable Declaration (Требовать объявления переменных). Объявляя все переменные, можно избежать ошибок, связанных с неправильным написанием имен переменных.

Отсчет с 0 или 1?

В VBA для одних элементов отсчет начинается с 0, а для других — с I. Например, массивы начинают отсчет с 0, а множества — с 1. Если неизвестно, с какого значения начинается нумерация, это необходимо обязательно выяснить. Неправильная догадка может стать причиной ошибки.

Немедленное исправление ошибок

При разработке приложения часто возникает искушение проигнорировать ошибку. Например, разработчик создает новые свойства приложения и наталкивается на ошибку в другой части приложения. Лучше всего остановиться и исправить ошибку. Это достаточно тяжело, потому что основное внимание занято новой разработкой. Однако позже данную ошибку будет труднее обнаружить и воспроизвести. Необходимо взять за железное правило — при нахождении ошибки немедленно исправлять ее.

Использование комментариев

По прошествии нескольких месяцев, недель или даже дней после создания кода очень сложно вспомнить все детали относительно той или иной процедуры. Рекомендуется как можно чаще пользоваться комментариями для упрощения последующей работы с кодом. Комментарии не замедляют выполнение кода, поскольку они удаляются компилятором. Для создания комментария необходимо проставить одинарную кавычку перед текстом. В окне кода закомментированные строки отображаются зеленым цветом.

СОВЕТ

Для комментирования блока кода и удаления комментария используйте команды Comment Block (Комментировать блок) и Uncomment Block (Раскомментировать блок) из панели инструментов Edit (Справка) в IDE.

Использование символа конкатенации строк

Очень сложно рассматривать код, если необходимо прокручивать экран вправо, когда код не умещается на одном экране. Следует убедиться, что весь код отображается на одном экране в окне кода, и по необходимости использовать символ конкатенации строк (_). Такие строки обрабатываются как одна строка. Ниже приводится обычный пример SQL-оператора:

Dim strSQL as String

strSQL = "SELECT * FROM tbIErrorLog" & _

"ORDER BY tbIErrorLog.ErrorLogID;"

Использование небольших процедур

Большие процедуры тяжелы для понимания и отладки. Рекомендуется разбивать процедуры на малые логические блоки. Следует взять за правило — если нельзя распечатать процедуру на одном листе бумаги, ее необходимо разбить на более мелкие процедуры.

Использование стандартных соглашений о наименовании

Использование соглашений о наименовании способствует пониманию и упрощению отладки кода. Очень часто разработчики жалуются, что тяжело понять работу приложения, созданного другим разработчиком. Использование соглашений о наименовании объектов и переменных значительно упрощает процесс отладки.

Никогда не используйте Stop

Не рекомендуется использовать в коде Stop для входа в режим прерываний. Как упоминалось выше, вместо этого следует использовать метод Debug.Assert. Правильный синтаксис метода — Debug.Assert False.

Если забыть удалить Stop перед распространением приложения, приложение не будет работать корректно. Метод Debug.Assert удаляется из кода при компиляции приложения.

Отладка с помощью окон сообщений

Раньше при отладке часто использовались окна сообщений. Идея заключается в том, чтобы разместить в окне кода окна сообщений для более легкого способа обнаружения ошибки:

Sub Demo()

MsgBox 1

Select Case rst.States

MegBox 2

Case "Washington"

MsgBox 3

MsgBox "Washington"

MsgBox 4

Case "Oregon"

MsgBox 5

MsgBox "Oregon"

MsgBox 6

Case "California"

MsgBox 7

MsgBox "California"

MsgBox 8

End Select

MsgBox 9

End Sub

Наблюдая за тем, какое окно сообщений появляется перед сбоем, разработчик может определить строку кода, содержащую ошибку. Гораздо более удобный подход — установить точку прерывания и выполнять код в режиме прерываний. Установка точки прерывания более удобна, потому что:

• Установить прерывание гораздо быстрее, чем вводить массу окон сообщений.

• Окна сообщений модальны, поэтому нельзя переключиться в окно кода для просмотра.

• При выполнении кода в режиме прерываний можно наблюдать значения переменных, изменять их и т.д.

• После исправления ошибки не нужно удалять окна сообщений.

• Можно не беспокоиться о случайном распространении приложения с оставшимися окнами сообщений.

Тестирование приложения

Перед распространением приложения Access необходимо полностью его протестировать. Более подробная информация относительно тестирования приведена в статье «Планирование процесса разработки».

Методики отладки

Код данный главы включает примеры, которые предоставляют возможность попрактиковаться в отладке приложений, используя методики, описанные в данной статье (рис. 13).

РИСУНОК 13. Использование методик отладки на примерах кода.

Резюме

Access 2000 содержит мощные средства отладки. Изучение работы данных средств является обязательным для любого разработчика Access. В данной статье приведены советы и подсказки по использованию интегрированной среды разработки (IDE), окна отладки, окна переменных и окна наблюдения. Рассматриваются отладчик и различные методики отладки. Кроме того, рассмотрена условная компиляция и приведены советы по написанию надежного кода. Использование информации и методик, изложенных в данной статье, упрощает и ускоряет процесс создания приложения и работу с ними.