Преобразование макроса в VB-код
Если хотите узнать больше о языке Visual Basic и объекте DoCmd, можно взять существующий макрос и преобразовать его в чистый программный код, подпрограмму. Далее приведены необходимые действия.
1. В области переходов выберите макрос, который хотите использовать.
2. Выберите на ленте Работа с базами данных → Макрос → Преобразовать макросы(Database Tools → Macro → Convert Macros to Visual Basic). Можно также преобразовать внедренный в форму макрос, открыв форму и выбрав на ленте Работа с базами данных → Макрос →Преобразовать макросы формы(Database Tools → Macro → Convert Form's Macros to Visual Basic).
На экране появится окно с двумя параметрами для выбора (рис. 17.9).
Рис. 17.9.Вы увидите это окно, если попросите программу Access преобразовать макрос FindHayEater
3. Если хотите добавить базовую обработку ошибок, убедитесь в том, что флажок Добавить программу обработки ошибок(Add error handling to generated functions) установлен.
Немного обработки ошибок никогда не помешает.
4. Если хотите включить комментарии макроса в комментарии VB, убедитесь в том, что установлен флажок Добавить примечания макросов(Include macro comments).
Если вы потратили время на добавление пояснительного текста, стоит сохранить его.
5. Щелкните мышью кнопку Преобразовать(Convert).
Программа Access создаст новый модуль для преобразованного кода и даст ему имя, подобное имени Преобразованный макрос-[ИмяВашегоМакроса] (Converted Macro-[YourMacroName]). Внутри модуля Access создаст функцию с именем как у вашего макроса. Если преобразуется группа макросов (см. разд. "Группы макросов" главы 15), Access вставит по одной подпрограмме для каждого макроса в группе.
После завершения процесса преобразования программа Access откроет ваш модуль в редакторе Visual Basic, чтобы вы могли просмотреть код.
В следующем примере показан результат преобразования макроса из главы 15 (приведенного в разд. "Поиск записи" главы 15), который ищет определенный текст в таблице AnimalTypes:
Function FindHayEater ( )
On Error GoTo FindHayEater_Err
DoCmd.OpenForm "AnimalTypes", acNormal, " ", " ", , acNormal
DoCmd.GoToControl "Diet"
DoCmd.FindRecord "=""hay""", acAnywhere, False, , _
False, acCurrent, False
FindHayEater_Exit : Exit Function
FindHayEater_Err:
MsgBox Error$
Resume FindHayEater_Exit End Function
Вы заметите, что в преобразованном коде интенсивно используется объект DoCmd — действительно почти в каждой строке кода встречается объект DoCmd. Сначала он применяется в методе OpenForm для открытия формы, затем — в методе GoToControl для перехода в поле Dietи, наконец, он ищет первую запись, в которой встречается текст "hay". Эта строка выглядит причудливо, поскольку в ней удваиваются знаки кавычек (""). В языке Visual Basic знаки кавычек имеют особый смысл (они показывают, где начинается и заканчиваетсятекст). Если в текстовом фрагменте вы хотите на самом деле использовать кавычки, нужно поместить знаки кавычек дважды, одни за другими. Стрнно, но правильно.
Завершается код процедурой обработки ошибок, названной FindHayEater__Err, которая просто сообщает о проблеме в окне сообщения и затем завершает работу.
Примечание
Когда макрос преобразуется в программный код, программа Access всегда генерирует функцию, а не процедуру. Но функция не возвращает результат, т. к. этого не требуется. (По-видимому, Access действует таким образом, чтобы дать вам возможность позже воспользоваться возвращаемым результатом.)