|
Программирование >> Проектирование интерфейса пользователя
объект Err, а она, в свою очередь, обращается к процедуре Операция добавления записи выполняется приватной процедурой DoW- riteEntry, вызываемой в строке 14. Оставшаяся часть кода процедуры WriteEntry связана с обработкой возможных ошибок. Если ошибка произошла по причине отсутствия в базе данных таблицы LOG, вызывается процедура CreateTable, рассмотренная в листинге 23.2, и управление вновь передается строке, породившей ошибку (строки 32-33). Если причина ошибки заключается в другом, вызывается стандартный метод Raise объекта Err. В строках 10-19 выполняется поиск таблицы EOG в коллекции AllTables. Самая важная часть работы возложена на процедуру - об этом го- ворит префикс Do ее названия. Строки обработки ошибок отделены от кода, выполняющего собственно операцию пополнения таблицы, с целью упростить обе процедуры. Код подпрограммы DoWriteEntry достаточно прозрачен и не нуждается в подробных комментариях - создается объект класса DAO.Recordset, с его помощью в таблицу добавляется новая запись, ее полям присваиваются значения, переданные процедуре в виде аргументов, а затем внесенные изменения сохраняются в базе данных командой Update. Чтобы протестировать рассмотренный выше код, создайте новый модуль и поместите в него процедуру, приведенную в листинге 23.4, или ей подобную. (Я обычно стараюсь сохранять тестовый код в отдельных модулях, не смешивая его с кодом, непосредственно решающим задачу, - то же рекомендую делать и вам.) Листинг 23.4. Тестовая процедура для проверки кода модуля LogUtilities 1: Sub Test ( ) 2 : On Error GoTo Except 3: Call Err.Raised, EogUtilities , Test , No Help , 0) 4: Exit Sub 5: Except: 6: Call WriteErrorEntry (Err) 7 : End Sub Il Тестовый код действует следующим образом: в строке 3 с помощью при-1 нудительного вызова Err.Raise имитируется возникновение ошибки и провоцируется выполнение кода обработчика исключений, который, обращаясь к процедуре WriteErrorEntry, сохраняет информацию об ошибке в таблице LOG базы данных. Теперь, снабдив любую из реальных программ конструкциями обработки ошибок, содержащими обращения к процедурам WriteErrorEntry или WriteEntry, вы получите надежный код и удобное средство анализа ошибок. В случае возникновения любого сбоя вы без труда восстановите картину происшедшего, просмотрев содержимое соответствующей записи таблицы LOG. В следующем разделе мы обсудим способы оперативного включения/отключения функций ведения протокола ошибок и просмотра содержимого журнальной таблицы. Интерфейс просмотра ошибок Диспетчер настроек, вызываемый из мен ки (ToolsOAdd-Ins) используют для добавления внешних ссылок на базы данных, которые необходимо инкорпорировать в текущий проект. Добавив с помощью диспетчера надстроек (вы ознакоми- тесь с ним чуть позже) ко . mda в базу даннгх, вы получите доступ к средствам, которые предлагает эта надстройка. Включение механизма ведения протокола обеспечивается вызовом любой из процедур, либо Ниже приведен код, дающий возможность просмотра содержимого журнала ошибок. После установки надстройки в среде Access в меню СервисНадстройки добавляется новый элемент. Щелчок на нем приводит к срабатыванию определенной процедуры или функции в модуле надстройки - в данном случае в этой роли выступает функция, открывающая таблицу LOG для просмотра. (Вы можете развить мою мысль и придумать что-то еще.) Код функции просмотра содержимого журнальной таблицы приведен в листинге 23.5. Листинг 23.5. Функция просмотра содержимого таблицы LOG, выполняемая при выборе соответствующего элемента меню Сервис=>Надстройки 1: Function EntryPoint ( ) 2: Call DoCmd. ОрепТаЫе ( LOG , 3 : End Function acViewNormal, acReadOnly) Как видите, код листинга 23.5 нельзя назвать особенно сложным. В строке 2 используется обращение к методу для откры- тия указанной таблицы в режиме просмотра. Если ошибок в тестируемой программе не было, значит, таблица LOG в базе данных еще не создана и при выполнении строки 2 откроется окно с сообщением об интерфейсной ошибке - это вполне нормально. Функцию Entry-Point также следует включить в состав модуля LogUtilities. Тестирование кода надстройки Подобно любому программному коду, процедуры и функции из состава надстройки должны быть подвергнуты всестороннему тестированию. Поскольку мы имеем в виду надстройку в виде базы данных Access, никаких принципиальных инноваций вы не встретите. Как и ранее, откройте модуль в окне редактора VBA, поместите текстовый курсор в пределах процедуры, которую хотите выполнить, и нажмите клавишу <F5> или <F8>. Гораздо легче протестировать процедуры надстройки заблаговременно, перед инсталляцией ее в среде Access. Еще один способ тестирования внешнего кода связан с построением ссылки из одной, рабочей, базы данных на другую. Чтобы добавить ссылку на базу данных Log.mda (или произвольную базу), выполните следующие действия. в которой необходимо создать Откройте новую или существующую базу данных, ссылку. Выберите в строке меню окна Access команду СервисМакрос=>Редактор Visual Basic (Tools=>Macros=>Visual Bacis Editor). 3. В строке меню окна редактора Microsoft Visual Basic выберите команду Tools=>References. 4. В диалоговом окне References щелкните на кнопке Browse. 5. Откроется диалоговое окно Add Reference. В раскрывающемся списке Тип фа1шов (Files ofType) выберите опцию Надстройки (*.mda) (Add-lns). 6. С помощью средств навигации окна отыщите файл и щелкните на кнопке Открыть (Open), а затем на кнопке ОК в диалоговом окне References. 7. Изменения в структуре проекта вы сможете увидеть, если откроете дочернее окно Project Explorer средт Microsoft Visual Basic (рис. 23.1). &1S ln rt- Iй..*йt-yЛ:.sн CD i contact* (contscts) Kan J 1>Я51*1л1кг, ) upzL<a Соа{п£ bitbah Sub Teat!) End Sub PuC 1. Создав ссылку, вы сможете использовать в новом проекте ранее составленный код После построения ссылки код адресуемой базы данных становится доступным для решения задач, связанных с текущей базой. Это удобный способ повторного использования кода (в том числе, кода надстроек), исключающий необходимость выполнения операций экспорта и импорта модулей. Установка и отключение надстроек После создания и тестирования кода надстройки вы можете установить его в среде Access. Откройте базу данных Log.mda и откомпилируйте код модуля LogUtilities - его полный текст приведен в листинге 23.6. Листинг 23.6. Полный текст модуля LogUtilities 1: Option Compare Database 2 : Option Explicit 4: Function EntryPointO 5: Call DoCmd. ОрепТаЫе ( LOG 6 : End Function 8 acViewNormal, acReadOnly)
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |