Главная страница

Краткое содержание 29 Об этих стрелках 30 о сочетаниях клавиш 32 о щелчках кнопкой мыши 33 Примеры 33


Скачать 19.64 Mb.
НазваниеКраткое содержание 29 Об этих стрелках 30 о сочетаниях клавиш 32 о щелчках кнопкой мыши 33 Примеры 33
АнкорAccess_2007.doc
Дата16.03.2017
Размер19.64 Mb.
Формат файлаdoc
Имя файлаAccess_2007.doc
ТипКраткое содержание
#3862
страница44 из 65
1   ...   40   41   42   43   44   45   46   47   ...   65
Глава 16
Автоматизация выполнения задач средствами языка Visual Basic

Макросы — это конечно замечательная вещь, но они могут только то, что могут. Если нет заранее подготовленной макрокоманды, которая делает то, что вам нужно, применить мак­рос не удастся. Таких ограничений лишен мир программ на языке Visual Basic (VB), в кото­ром можно выполнять практически все, что угодно (если провести достаточное количество ночных часов за клавиатурой компьютера).

Далее приведены примеры задач, которые можно выполнять с помощью программ, но не с помощью макросов:

  • изменить группу записей одновременно;

  • выполнить интеллектуальную обработку ошибок так, чтобы программа Access не выво­дила на экран малопонятные сообщения;

  • выполнить сложные вычисления, например, можно вычислить код подтверждения заказа с помощью секретного алгоритма или преобразовать строку текста в Pig Latin ("поросячью латынь");

  • написать более сложные процедуры верификации, блокирующие некорректные данные.

В этой (и следующей) главе не ставится задача сделать из вас профессиональных про­граммистов. Если вы мечтаете об этом, придется продолжить обучение и прочесть специ­альные книги о программировании в Access. Данная глава стремится научить вас основам программирования в Access. Другими словами, вы узнаете достаточно особенностей про­граммирования на VB, чтобы использовать популярные практические приемы программи­рования, обсуждаемые в следующей главе. Вы также заложите мощный фундамент для дальнейшего изучения.

Примечание

Версия языка Visual Basic, применяемая в программе Access и других приложениях пакета Of­fice, называется VBA (Visual Basic for Applications, Visual Basic для приложений).

Редактор Visual Basic
Несмотря на то, что программный код на Visual Basic хранится в вашей БД, вы должны применять специальное средство для его -просмотра и редактирования. Оно называется ре­дактором Visual Basic.

Редактор Visual Basic работает во взаимодействии с программой Access, но открывается в отдельном окне. Для перехода в редактор Visual Basic выберите на ленте Работа с базами данных Макрос Visual Basic (Database Tools Macros Visual Basic). Программа Access запустит отображенное на рис. 16.1 самостоятельное окно, снабженное старомодны­ми меню и панелью инструментов.




Примечание

Закрыть редактор Visual Basic можно в любой момент. Если этого не сделать, программа Ac­cess сама закроет его во время завершения работы программы.


Рис. 16.1. В первый момент работы в редакторе Visual Basic все его разделы пусты. В окне Project нет программных модулей и не отображается никакой программный код (пока)
Редактор Visual Basic разделен на три основные области. Вверху слева окно Project (проект) отображает все модули вашей БД. (Каждый модуль — это контейнер для одной или нескольких программных процедур.) Сначала окно Project (проект) почти пусто, поскольку еще не создано никакого кода. На рис. 16.1 в окне Project (проект) всего один элемент (названный BoutiqueFudge в соответствии с именем текущей БД). Но в этом проекте нет программных модулей.
Примечание

Если в программе Access недавно решались определенные задачи, в окне Project (проект) может выводиться проект со странным именем acwzrtool. Это надстройка программы Access, которая предназначается для мастеров, применяемых в программе. Не пытайтесь просмотреть код в этом проекте, Access не разрешит вам сделать это.

Сразу под окном Project находится окно Properties (свойства), отображающее парамет­ры выделенного в данный момент в окне Project элемента, которые можно изменять. В нижней части окна находится окно Immediate (отладка) — средство быстрого тестирова­ния, позволяющее выполнить код до помещения его в вашу БД. Все остальное свободное пространство используется для отображения файлов с программным кодом, после того, как вы создали их. Эта область первоначально пуста.

В следующих разделах вы узнаете самый простой способ создания фрагмента программ­ного кода.

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

  2. Затем в этом модуле вы напишите процедуру с простейшим кодом.

  3. Наконец, вы выполните ваш код, чтобы посмотреть на него в действии.

Когда с этим будет покончено, вы узнаете, как код можно включить в формы и отчеты, которые уже есть в вашей БД. (Именно здесь начнется самое интересное.)

Добавление нового модуля
Обычно вы будете создавать программные процедуры, которые присоединяются к формам и запускаются, когда возникают определенные события (см. разд. "Присоединение макросов к формам" главы 15). Но в этой главе не будем спешить и создадим самостоятельную про­цедуру, которая запускается по вашему требованию.

Прежде всего, нужно добавить новый модуль для вашего кода. В меню редактора Visual Basic выберите команды Insert Module (Вставка Модуль). На рис. 16.2 пока­зан результат.

Когда добавляется новый модуль, редактор Visual Basic автоматически открывает окно с кодом, отображающее содержимое данного модуля. (Если в вашей БД несколько модулей, можно открыть нужный вам модуль двойным щелчком мышью его имени в окне Project.) Первоначально у новоиспеченного модуля одна строка кода, которая выглядит следующим образом: Option Compare Database

Это инструкция, определяющая, как с помощью языка Visual Basic обработать операции сравнения текстовых фрагментов. Исходно у языка Visual Basic есть собственные правила обработки текста, но приведенный оператор требует вместо них использовать установочные параметры программы Access.

Параметры Access зависят от локализации текущей БД (например, использует ли ваша версия ОС Windows язык Английский (США) (U.S. English) или Японский иероглифиче­ский шрифт (Japanese kanji script)). Окончательный результат приведенной строки кода — возможность для англоязычных пользователей применять сравнения без различения строч­ных и прописных букв. Это означает, что слово "помадка" считается равной слову "пОмАдкА", что аналогично способу обработки текста программой Access при написании вами запросов.

Прежде чем вы начнете писать код, который действительно выполняет какие-то дейст­вия, следует в начало вашего кода добавить еще одну инструкцию. Сразу после (или до) строки Option Compare Database вставьте следующую строку:

Option Explicit

Эта инструкция заставляет Visual Basic применять более строгую проверку ошибок, спо­собную выявлять часто встречающиеся ошибки при использовании переменных (см. разд. "Хранение информации в переменных" главы 17).
Р
ис. 16.2.
Когда ваш проект включает хотя бы один модуль, окно Project отображает группу Modules. Программа Access присваивает новым модулям невыразительные имена, например, Module1, Module2 и т. д. Для задания чего-то более осмысленного, выделите модуль в окне Project и в окне Properties, расположенном сразу под ним, измените свойство Name. DataCleanupCode (код очистки данных) — подходящее имя для модуля
Подсказка

Вы можете потребовать от Visual Basic автоматически добавлять строку Option Explicit во все новые файлы с кодом. Для этого выберите Tools Options (Сервис Параметры), ус­тановите флажок Require Variable Declarations (требовать объявления переменных) и затем щелкните мышью кнопку ОК. Специалисты Access всегда применяют эту установку.

Как и в случае других объектов БД Access, при закрытии редактора Visual Basic про­грамма Access напоминает о необходимости сохранить вновь созданные модули. Если вы не хотите ждать так долго, выберите последовательность команд File Save [DatabaseName] (Файл Сохранить [ИмяБазыДанных], где [DatabaseName] — имя файла вашей БД).

Примечание

После того как модуль сохранен, его можно увидеть в области переходов окна программы Ac­cess. Если используется режим отображения Таблицы и связанные представления, ваш

модуль выводится в категории Несвязанные объекты, если применяется режим вывода Тип объекта, модуль появляется в категории Модули. Если модуль в области переходов щелкнуть дважды кнопкой мыши, программа Access откроет его в редакторе Visual Basic.

Написание процедуры с простейшим программным кодом
Внутри всех модулей (за исключением пустых) находится одна или несколько процедур на языке Visual Basic. Процедура — это именованный блок кода, выполняющий определенную задачу. В языке VB процедуры начинаются словом Sub, за которым следует имя процедуры. Завершаются процедуры оператором End Sub. Далее приведен пример процедуры, которая названа довольно неоригинально MyCodeRoutine:

Sub MyCodeRoutine ()

' Здесь располагается ваш код End Sub

Этот маленький фрагмент кода на VB иллюстрирует два важных правила. Во-первых, он показывает, как начинать и заканчивать любую процедуру (с помощью операторов Sub и End Sub). В этом коде также показано, как создавать комментарии. Комментарии — это специальные операторы, которые программа Access полностью игнорирует. Они не что иное, как заметки для вас самих (например, объяснение на обычном английском (или русском), что на самом деле делает следующая или предыдущая строка кода). Для создания коммен­тария в начало строки вставляется знак апострофа ( ' ).
Подсказка

Редактор Visual Basic отображает все комментарии зеленым цветом, поэтому легко отличить код от комментариев.
Сейчас процедура MyCodeRoutine ничего не выполняет. Для того чтобы сделать ее посообразительнее, следует добавить операторы кода между Sub и End Sub. Следующая чрез­вычайно простая процедура отображает поле сообщения:

Sub MyCodeRoutine ( )

' Следующий оператор отображает поле сообщения

MsgBox "Свидетельство силы моего кода." End Sub

Этот код действует, потому что язык Visual Basic включает команду, названную MsgBox. (См. примечание "Малоизвестная или недооцененная возможность. Справка по VisualBasic" далее в этом разделе для получения рекомендаций по применению команд, которые есть в вашем распоряжении.) Эта команда применяется для вывода на экран стандартного окна с выбранным вами сообщением. Само сообщение — это текстовый фрагмент (или строка на языке программистов), который как все текстовые значения в языке VB должен быть за­ключен в кавычки. Таким образом, программа Access знает, где он начинается и где заканчи­вается. (Access заставляет вас применять те же правила, что и при использовании текста в выражении.)

Как только вы ввели эту команду (начинайте — действуйте!), вы готовы к выполнению вашей программной процедуры. Для этого поместите курсор где-нибудь внутри тела про­цедуры, это дает знать редактору Visual Basic, какой код вас интересует. Затем на панели

инструментов Visual Basic щелкните мышью кнопку Run (Выполнить) (которая выглядит как кнопка воспроизведения на панели управления видеомагнитофона), или в меню выбе­рите Run Run Sub/UserForm (Выполнить Выполнить процедуру/пользовательскую форму). На рис. 16.3 показан результат.





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

Помните о том, что программа Access считает код VB потенциально опасным, поэтому не вы­полняет его в ненадежной БД. Иначе говоря, если вы увидите предупреждение системы безо­пасности (см. разд. "Как Access обрабатывает опасные макросы" главы 15), следует щелкнуть мышью кнопку Параметры для отображения диалогового окна Параметры безопасности Mi­crosoft Office, выбрать переключатель Включить это содержимое и затем щелкнуть мышью кнопку ОК. Или можете создать надежное расположение для файлов вашей БД. В разд. "Задание надежного расположения" главы 15 приводится подробное описание.

Малоизвестная или недооцененная возможность.

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

  1. В меню редактора Visual Basic выберите последовательность команд Help Справка: Microsoft Visual Basic (Справка Справка языка Microsoft Visual Basic)1.

  1. Вы увидите список ссылок, обещающих рассказать вам больше о языке VB.

  2. Щелкните кнопкой мыши Visual Basic for Applications Language Reference

(Руководство по языку Visual Basic для приложений).

  1. На экране появятся дополнительные темы, касающиеся многочисленных подробностей VB.

  2. Щелкните кнопкой мыши Visual Basic Language Reference (Руководство по языку
    Visual Basic), чтобы проникнуть глубже.

1 Справка приводится на английском языке. — Пер.

  1. Теперь вы увидите темы, касающиеся непосредственно языка VB. Эти основы относятся к версии Visual Basic в любой программе пакета Office.

  2. Щелкните мышью строку Functions (Функции), чтобы увидеть команды Visual Basic, включая MsgBox. (Щелкните кнопкой мыши любую функцию для отображения страницы с подробной справкой об этой функции.)

Справка программы Access — замечательный способ узнать больше о Visual Basic, но по­сле того, как вы познакомились с основными элементами языка. Если вы углубитесь в ее изучение слишком быстро, то можете обнаружить, что объяснения так же прозрачны, как суп из протертого гороха. Но когда вы закончите работу с примерами кода, приве­денными в данной книге, вы будете достаточно подготовлены к ее использованию и по­полнению ваших знаний.

Помещение кода в форму
Непосредственное выполнение процедуры слегка неудобно. Явно запустить макрос, по крайней мере, можно из области переходов или с помощью удобной кнопки на ленте (см. разд. "Запуск макроса" главы 15). Ни один из этих вариантов не предусмотрен для кода VB. Вместо этого необходимо открыть редактор Visual Basic, выбрать подходящий модуль, пе­рейти к нужной процедуре и затем щелкнуть кнопкой мыши команду Run (Выполнить). В реальной жизни никто так не поступает, поскольку это слишком трудоемко.

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

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

1. Откройте форму в Конструкторе.

Самый быстрый способ — щелкнуть форму в области переходов правой кнопкой мыши и выбрать Конструктор (Design View).

2. Добавьте новую кнопку.

Для этого выберите на ленте Инструменты конструктора форм | Конструктор Эле­менты управления Кнопка (Forms Tools | Design Controls Button) и затем нари­суйте кнопку в рабочей области формы.

3. Когда запустится Мастер кнопок, нажмите клавишу , чтобы отказаться от его выполнения.

Вам не нужно создавать макрос для кнопки. Эта кнопка будет снабжена чистым кодом VB.

4. Если Окна свойств нет на экране, выберите Инструменты конструктора форм | Конструктор → Сервис → Страница свойств (Forms Tools | Design Tools Property Sheet).

5. В Окне свойств выберите вкладку Другие (Other), а на ней свойство Имя (Name) для
того, чтобы задать кнопке подходящее имя.

Программа Access использует имя кнопки для именования процедуры для вашей кноп­ки. Гораздо легче запомнить, что делает кнопка CommitOrder_Click (щелчок для под­тверждения заказа), чем кнопка Command42_Click (щелчок для выполнения коман-ды42). Сейчас также подходящее время задать текст, отображаемый на кнопке (свойство Подпись (Caption)), если это еще не сделано.

6. В Окне свойств выберите вкладку События (Event) и выделите событие Нажатие кнопки (On Click).

Когда вы щелкните кнопкой мыши внутри поля Событие (Event), в нем появится на­правленная вниз стрелка.

7. Щелкните кнопкой мыши направленную вниз стрелку, расположенную рядом с событием Нажатие кнопки, а затем выберите строку [Процедура обработки событий] ([EventProcedure]).

Этот шаг сообщает программе Access о том, что вы вместо макроса предоставите код VB для обработки события.

8. В поле события Нажатие кнопки щелкните мышью кнопку с многоточием (...)

Этот шаг открывает редактор Visual Basic и создает программную процедуру для вашей кнопки. Если процедура уже создана, программа Access переходит к имеющемуся коду, и, таким образом, его можно редактировать.

Когда код вставляется в форму впервые, программа Access создает для этой формы но­вый модуль. Этот модуль именуется с использованием имени формы и помещается в окне Project в специальную группу, называемую Microsoft Office Access Class Objects (объекты классов Microsoft Office Access) (рис. 16.4). Если в ту же форму вставляется дополнитель­ный код независимо от того, относится он к тому же элементу управления или к другому, Access включает новую процедуру в существующий для этой формы модуль.
1   ...   40   41   42   43   44   45   46   47   ...   65


написать администратору сайта