Данная глава посвящена основному средству программирования в Access 2002 – языку программирования Visual Basic for Applications (VBA).
Язык Visual Basic для приложений (VBA). Процедуры и функции, их вызов и передача параметров.
Следующие ниже подразделы данного раздела описывают синтаксис языка программирования VBA. | Основными компонентами программы на VBA являются процедуры и функции, Они представляют собой фрагменты программного кода, заключенные между операторами Sub и End Sub или между операторами Function и End Function.
Переменные, константы и типы данных
Как и в других языках программирования, в VBA для хранения временных значений, передачи параметров и проведения вычислений используются переменные. Кратко остановимся на основных особенностях описания и использования переменных в VBA.
Ссылки на объекты
Кроме обычных переменных, в Visual Basic часто встречаются переменные, представляющие собой ссылку на объект. Оказывается, зачастую использование переменных для ссылок на объекты позволяет не только сократить и упростить текст программы, но и существенно ускорить ее работу.
Что такое ключевые поля и индексы в БД Microsoft Access
Массивы
Массив – это переменная, в которой хранится одновременно несколько значений одинакового типа. Формальное определение массива таково: он представляет собой совокупность однотипных индексированных переменных. | Количество используемых индексов массива также может быть различным.
Область действия переменных и процедур
Все процедуры, функции, переменные и константы в VBA имеют свою область действия. Это означает, что они могут использоваться только в определенном месте программного кода – именно там, где они описаны.
Управляющие конструкции
Как и во всех других языках программирования, в VBA имеются различные управляющие конструкции, позволяющие изменять порядок выполнения программы. Если управляющие конструкции не используются, происходит последовательное выполнение операторов языка программирования, начиная с самого первого и кончая последним.
Объектные модели Microsoft Access 2002. Основные понятия.
Язык Visual Basic for Applications является объектно-ориентированным языком программирования. Стандартные объекты Visual Basic представляют собой основное средство манипуляции с данными Microsoft Access и других приложений семейства Microsoft Office.
Объектные модели Microsoft Office 2002
Управление приложениями семейства Microsoft Office 2002 осуществляется интерактивно – с помощью интерфейса пользователя или программно – с помощью объектных моделей. Каждый из компонентов Microsoft Office предоставляет свои объектные модели в виде одноименной библиотеки объектов (файл с расширением .olb), которая может быть использована в других приложениях.
Объектная модель Microsoft Access 2002
Объектная модель Microsoft Access 2002 реализована в виде набора объектов, собранных в библиотеке Access. Основным элементом в иерархии объектов библиотеки Access является объект Application. Он содержит ссылки на все объекты и семейства объектов Microsoft Access.
Как создать таблицы в Microsoft Access за 8 минут
Объектные модели доступа к данным. Объектная модель Microsoft DAO 3.6.
Объекты доступа к данным предназначены для программного доступа и управления данными в локальной или удаленной базе данных, а также для программного управления самими базами данных, их объектами и структурой.
Модель объектов ActiveX для управления данными
Объекты управления данными ActiveX (ADO/ ActiveX Data Objects) предназначены для обеспечения доступа к источникам данных разных видов, от текстовых файлов до распределенных баз данных. ADO представляет собой объектно-ориентированный интерфейс для приложений, использующих OLE DB.
Объектная модель Visual Basic для приложений
Объект | Тип | Описание | Collection | Объект из библиотеки VBA | Упорядоченная совокупность объектов, с которой можно обращаться как с единым объектом | Debug | Объект | Позволяет выводить текущую информацию в окно отладки непосредственно во время выполнения кода на VBA | Dictionary | Объект из библиотеки Scripting | Объект, представляющий пару: ключ и элемент.
Объектная модель Microsoft Office 2002
Иерархия объектов Microsoft Office 2002 представлена на рис. 13.7. | Рис. 13.7. Объектная модель Microsoft Office 2002 | Объекты Microsoft Office используются в иерархической структуре других объектных моделей. В объектной модели Microsoft Office 2002 появилось много новых объектов.
Использование объектов и семейств
Несмотря на разнообразие библиотек объектов, методы работы с объектами в процедурах VBA общие и не зависят от того, к какой библиотеке относится конкретный объект. В данном разделе мы как раз и рассмотрим эти общие методы.
Модули как объекты Access
Среда программирования Access 2002. Окно редактора кода.
Среда программирования в Access 2002 включает все средства, необходимые для написания программ отладки процедур VBA. Самым главным компонентом этой среды является редактор кода Visual Basic Editor (VBE), обладающий богатыми возможностями для облегчения процесса ввода программного кода.
Использование окна просмотра объектов
Окно Object Browser (Обозреватель объектов) позволяет просматривать все объекты, их свойства и методы, доступные для текущего проекта. Объекты могут быть встроенными объектами Access или VBA, объектами, которые вы создали в своем приложении, а также объектами, входящими во внешние библиотеки, на которые имеются ссылки в текущем проекте.
Установка ссылок на объектные библиотеки
При обращении к объекту из процедуры VBA вы можете получить сообщение об ошибке, которое может быть вызвано тем, что не подключена соответствующая библиотека. При установке Access по умолчанию подключаются следующие библиотеки: | Visual Basic for Application; | Microsoft Access 10.0 Object Library;
Инструментальные средства отладки
Помимо интеллектуального редактора текста профессиональная среда программирования обычно содержит инструментальные средства отладки. Инструментальные средства отладки призваны дать разработчику максимально ясное представление о том, как работает его программа.
Программирование в формах и отчетах. События Access.
Программирование в формах и отчетах, как правило, составляет большую часть кода приложения, т. к. именно формы и отчеты являются основой интерфейса пользователя и с помощью программирования этот интерфейс гибко настраивается нужным образом.
Последовательности событий Access
При написании процедур обработки событий очень важно понимать, в каком порядке они происходят, т. к. приложение Access управляется событиями и результат работы зависит от того, в каком порядке эти процедуры будут выполняться.
Создание процедур обработки событий
Теперь рассмотрим, как создавать процедуры обработки событий. Для большинства элементов управления формы, а также самой формы и отчета, стандартный набор действий следующий: | Откройте форму в режиме Конструктора.
Создание перекрестного отчета с изменяющимся числом столбцов
Рассмотрим возможности обработки событий в отчете на примере отчета «Выработка сотрудников». Этот отчет строится на базе перекрестного запроса и показывает выработку сотрудников отдела продаж за год по месяцам. Максимальное число столбцов в отчете – 14.
Использование функций для обработки событий
Обычно для обработки событий в формах и отчетах используют процедуры типа Sub (подпрограммы) или макросы. Однако иногда можно и даже нужно использовать функции. Дело в том, что если в рамках одной формы делается множество однотипных задач, то лучше создать одну процедуру – функцию для выполнения этих задач, описать ее на уровне модуля формы, т. е.
Источник: samoychiteli.ru
Окно редактора кода
Для того чтобы открыть окно редактора, достаточно открыть любой модуль Access (рис. 13.12).
Замечание
Даже в локализованных версиях Access окно редактора кода VBA, а также все другие диалоговые окна, составляющие среду программирования VBA, традиционно не локализуются. Поэтому все рисунки в этом разделе главы, а также экранные термины (названий команд меню, диалоговых окон и т. д.) приводятся в нелокализованном варианте.
Рис. 13.12. Окно редактора кода VBA
Обычно в окне редактора используются три панели (три отдельных окна). На самом деле окон может быть и больше и меньше, и скоро вы узнаете обо всех, но на рис. 13.12 показано только расположение основных окон.
- Project (Панель проекта), располагается в верхнем левом углу редактора. В ней отображается иерархическое дерево модулей приложения. Если это окно неактивно, выполните команду View, Project Explorer либо нажмите комбинацию клавиш +.
- Properties (Панель свойств), находится под панелью проекта. Она позволяет просматривать и изменять свойства различных входящих в проект объектов, отображаемых на панели проекта. Список свойств может отображаться как в алфавитном порядке, так и по категориям.
- Code (Панель редактора кода). Это окно занимает большую часть экрана и является «многодокументным», т. е. можно открыть одновременно несколько окон данного типа для разных модулей. Оно представляет собой высокоинтеллектуальный текстовый процессор, существенно облегчающий написание кода VBA.
Проект приложения состоит из модулей, которые делятся на три категории:
- Microsoft Access Class Objects (Модули классов Access) — включает все модули форм и отчетов;
- Modules (Модули) — стандартные модули;
- Class Modules (Модули классов) — модули пользовательских классов, если они присутствуют в приложении.
Список объектов в окне проекта является иерархическим, кроме модулей самого проекта, он может включать ссылки на объекты из внешних библиотек и список модулей этих библиотек.
В верхней части панели проекта расположены три кнопки:
- View Code (Просмотр кода). При нажатии этой кнопки указатель мыши перемещается в окно кода, в котором отображается код выделенного в иерархии проекта объекта.
- View Object (Просмотр объекта). Эта кнопка доступна только когда в дереве проекта выделен модуль формы или отчета. Тогда она позволяет быстро переключиться на соответствующий модулю объект, т. е. в окно Конструктора формы или отчета.
- Toogle Folders (Переключение видов представления дерева). При нажатой кнопке все элементы в дереве проекта группируются в папках по категориям, при отжатой — они отображаются в алфавитном порядке..
Панель свойств позволяет просматривать и изменять свойства различных объектов, входящих в проект. Для отображения свойств объекта его нужно выделить либо в дереве проекта, либо в окне Конструктора формы (отчета). Во многом эта панель дублирует диалоговое окно Свойства (Properties) в формах и отчетах. И в том и в другом случае изменение свойств объекта статично, поэтому они могут быть использованы для задания начальных или постоянных свойств объекта.
Чтобы изменить значение свойства объекта, необходимо:
- Выделить имя свойства в левой колонке.
- Изменить значение в правой колонке, либо введя его вручную, либо путем выбора из списка.
Для каждого модуля, выбранного на панели проекта, открывается свое окно редактора кода. В данном случае в окне редактора мы видим модуль «Заставка» (Startup) приложения «Борей» (рис. 13.13).
Код в каждом модуле состоит из разделов, переключение между которыми выполняется путем выбора значения из списка Object (Объект), который размещается в левом верхнем углу окна. Список разделов различается для разных типов модулей.
Для модуля формы этот список включает раздел General (Общая область), который содержит объявления переменных, констант, специальных типов, внешних процедур. Данный раздел открывается по умолчанию при открытии окна кода. Для стандартного модуля этот раздел единственный — он содержит описание всех процедур. Модуль класса имеет разделы General и Class.
Модуль формы, кроме раздела General, содержит раздел самой формы и разделы для каждого элемента управления. Модуль отчета включает в себя раздел для объекта Report (Отчет) и разделы для каждой области отчета. Для полей отчета не определены события, поэтому отсутствуют и соответствующие разделы в модуле кода.
Рис. 13.13. Стандартный модуль в окне редактора
Каждый раздел может содержать несколько процедур, выбираемых из списка Procedure в правом верхнем углу окна на рис. 13.13. Список процедур в стандартном модуле содержит Declarations (Описания) и имена всех процедур модуля в алфавитном порядке. Список процедур для модуля формы включает в себя перечень всех событий формы и ее элементов. Для модуля класса список процедур содержит только две процедуры для событий класса: Initialize и Terminate.
С помощью кнопок в левом нижнем углу окна можно выбрать один из видов представления кода в окне.
- Procedure View (Представление процедуры), когда в окне отображается только одна выбранная процедура.
- Full Module View (Представление полного модуля), когда в окне отображается сразу несколько процедур, отделенных друг от друга тонкой линией.
Для настройки параметров редактора используется также диалоговое окно Options (Параметры), которое можно открыть, выбрав команду Options в меню Tools (Сервис) (рис. 13.14). Это окно описывает только параметры редактора кода и вызывается из среды редактора кода.
Рис. 13.14. Диалоговое окно параметров редактора кода
Оно содержит четыре вкладки.
Первая вкладка Editor (Редактор) состоит из двух групп параметров: Code Settings и Window Settings.
- Группа Code Settings (Программирование) содержит шесть флажков, которые позволяют включать и отключать интеллектуальные функции редактора, такие как автоотступ, автоматическая проверка синтаксиса, подсказки при написании пользователем программ.
- Группа Window Settings (Параметры окна) включает в себя три флажка, влияющих на представление кода в окне редактора. Эти флажки позволяют переключаться между представлениями полного модуля и процедуры, выводить или не выводить на экран тонкие линии, разделяющие процедуры, включать или отключать функцию перетаскивания текста, т. е. перемещения выделенного фрагмента кода с помощью мыши.
Вторая вкладка Editor Format (Формат редактора) позволяет определить шрифт, его размер и цвет для разных областей текста. Открыв любой модуль, вы можете убедиться, что текст программ представлен несколькими цветами: по умолчанию комментарии выделяются зеленым цветом, ключевые слова — синим. При отладке программ используются и другие цветовые выделения фрагментов текста: точек останова, текущей команды и т. д. Все эти способы выделения могут быть настроены в соответствии с вашим вкусом в данном окне.
Третья вкладка General (Общая) содержит несколько групп переключателей и флажков.
- Группа Form Grid Setting относится к созданию форм в Microsoft Visual Basic 6.0 и в других компонентах Office и не используется в Access.
- Флажок Show ToolTips позволяет включить или отключить вывод всплывающих подсказок для кнопок на панели инструментов.
- Флажок Collapse Proj. Hides Windows определяет, будет ли скрываться окно редактора при закрытии проекта на панели проекта.
- Флажок Notify Before State Loss определяет, получит ли пользователь сообщение о том, что предпринимаемое действие вызовет потерю состояния текущего проекта.
- Переключатели Error Trapping определяют установки по умолчанию, используемые при обработке ошибок в программах:
- Break on All Errors — любая ошибка, независимо от того, обрабатывается ли она программой, приведет к прерыванию выполнения программы;
- Break in Class Module — любая необработанная ошибка в модулях класса приведет к прерыванию выполнения программы;
- Break on Unhandled Errors — прерывание программы вызывают все необработанные ошибки.
Последняя группа флажков определяет, когда компилируются модули проекта:
- Compile On Demand — определяет, будут ли все модули проекта компилироваться перед началом работы или только по требованию, в первом случае запуск приложения будет более длительным;
- Background Compile — определяет, будет ли компиляция модулей выполняться в фоновом режиме.
На последней вкладке Docking находятся флажки, позволяющие закрепить положение основных окон на экране.
Для того чтобы убедиться, что наши утверждения об интеллектуальности редактора не являются голословными, достаточно попробовать написать даже самую простую программу. Давайте заменим в форме «Клиенты» (Customers) макрос, который открывает форму «Заказы» (Orders) при нажатии кнопки Заказы клиента, процедурой VBA, которая выполняет те же действия. Мы создавали такой макрос в разд. «Назначение макроса событию»гл. 11. Если вы этого не делали, тогда создайте сейчас командную кнопку в области заголовка окна и назовите ее «Заказы клиента» (кнопка Мастера на панели элементов при этом должна быть отжата).
После этого нажмите кнопку Программа (Code) на панели инструментов. Откроется редактор кода VBA, который по умолчанию попытается создать процедуру обработки события Load формы. Выберите из списка слева объект Заказы клиента. Редактор автоматически вставит заголовок и концовку процедуры обработки события Click (рис. 13.15).
Открыв список справа, вы можете увидеть, как много различных событий связано с командной кнопкой, однако наиболее часто используется именно событие Click. Так как с этим событием сейчас не связано никакой процедуры, редактор сразу пытается ее создать.
Начнем писать текст процедуры. Процедура будет состоять из нескольких команд. Нам необходимо открыть форму «Заказы» (Orders) и показать в этой форме только те заказы, которые относятся к определенному клиенту, поэтому придется задать условие для отбора записей в форме «Заказы» (Orders). Обычно для этого используют переменную типа string, которой сначала присваивают нужное значение, а потом подставляют в качестве параметра в макрокоманду Открытьформу (OpenForm). Чтобы использовать такую переменную, ее сначала нужно описать, поэтому первое предложение в процедуре должно быть следующим:
Dim stLinkCriteria As String
Рис. 13.15. Создание процедуры обработки события
Как только вы напишете первые три слова Dim stLinkCriteria As, на экране появится список слов (рис. 13.16), которые могут быть использованы в данном предложении.
Рис. 13.16. Автоматический вывод списка компонентов
Вы набираете следующие буквы — str, после чего курсор в списке устанавливается на слове string. Дальше можно не продолжать, а просто нажать клавишу — конец слова допишется автоматически. Нажмите клавишу , курсор перейдет на новую строку, а текст во введенной строке изменится: все ключевые слова — Dim, As, string — будут выделены синим цветом.
При вводе ключевых слов можно не беспокоиться о том, чтобы слово начиналось с заглавной буквы. Вы можете набирать весь текст строчными буквами — необходимое преобразование будет выполняться автоматически. Но, конечно, названия переменных, элементов управления и других объектов, на которые имеются ссылки в тексте, вы должны вводить сами с использованием нужного регистра, т. к. в них преобразования выполняться не будут.
Следующая строка будет присваивать переменной strLinkCriteria значение: stLinkCriteria = «[КодКлиента]=» ‘» «‘»
Две формы будут связаны по значению поля CustomerID. Первое выражение [КодКлиента] относится к форме «Заказы» (Orders), а второе значение Me! [КодКлиента] — к текущей форме «Клиенты» (Customers), о чем говорит слово Me. Теперь используем макрокоманду Открыть форму (OpenForm) для того, чтобы открыть форму «Заказы» (Orders). Как только набирается docmd, появляется новая подсказка — список макрокоманд (рис. 13.17).
Рис. 13.17. Автоматический вывод методов объекта
Уже известным способом выбираем нужную макрокоманду, нажимаем пробел и опять подсказка — синтаксис макрокоманды Открыть форму (OpenForm) (рис. 13.18).
Рис. 13.18. Автоматический вывод кратких сведений
И это очень кстати, т. к. позволяет не запоминать все аргументы макрокоманды и порядок их следования. Введите имя формы: Заказы (Orders), запятую, и опять появится подсказка с именами возможных констант, которые могут быть указаны в следующем параметре. Выберите константу acNormal и продолжайте ввод. Должна получиться строка:
DoCmd.OpenForm «Заказы», acNormal, , stLinkCriteria
Две следующие подряд запятые говорят о пропущенном параметре — имя фильтра.
Теперь добавим еще одну команду — изменим заголовок формы:
Forms!Заказы.Caption = «Заказ» Заказы»
На примере этой простой программы мы продемонстрировали три очень полезных свойства редактора.
- Автоматическая проверка синтаксиса — ввод команды успешен и все слова выделяются нужным цветом, только когда синтаксис предложения правилен, в противном случае вы услышите звуковой сигнал, текст будет выделен красным цветом и появится сообщение об ошибке.
- Автоматический вывод списка компонентовAuto List Members позволяет избежать ошибок при вводе наименований свойств объектов, встроенных констант, типов переменных. Особенно эта функция полезна при установке свойств, т. к. позволяет не только вспомнить правильное имя свойства, но и увидеть, какие свойства объекта доступны в данный момент.
- Автоматический вывод кратких сведенииAuto Quick Info показывает в виде всплывающей подсказки синтаксис встроенных функций и макрокоманд. По мере ввода параметров очередной параметр выделяется в подсказке жирным шрифтом.
Когда вы уже усвоите язык VBA, такие подсказки могут показаться вам навязчивыми. Тогда вы можете отключить их, сбросив соответствующие флажки в диалоговом окне Options (Параметры) редактора кода (вкладка Editor).
Однако при необходимости вы легко получите требуемую помощь, если воспользуетесь контекстным меню редактора кода (рис. 13.20).
Рис. 13.20. Контекстное меню редактора кода
Кроме описанных выше функций, в контекстном меню присутствуют и другие очень полезные функции, способствующие быстрому написанию кода, — List Constants, Parameter Info, Complete Word, а также две команды, очень упрощающие навигацию среди программных модулей:
- Definition. Если в процедуре выполняется вызов другой процедуры, то, установив курсор на имя вызываемой процедуры и выбрав из контекстного меню команду Definition (а еще быстрее, нажав комбинацию клавиш +), вы сразу попадете в тело вызываемой процедуры;
- Last Position — позволяет после такого перехода вернуться обратно.
Команда Definition позволяет также быстро открыть окно Object Browser и посмотреть описание нужного свойства, метода или объекта приложения. Для этого нужно установить курсор на интересующий объект, свойство, метод и нажать комбинацию клавиш +.
Источник: www.taurion.ru
Пример 61. Создание БД MS Access в программном коде
держать ни одной таблицы. Наполнять базу данных таблицами можно будет впоследствии как из программного кода VB2010, так и используя MS Access. В этом примере технология ADO.NET не использована.
Запускаем VB2010 (загрузочный модуль devenv.exe), щелкаем пункт меню New Project и выбираем шаблон Console Application. В результате на вкладке программного кода Modulel.vb получаем строчки sub Main о и End Sub. Между ними пишем программный код, приведенный в листинге 9.2.
Для добавления в наш проект DLL-библиотеки ADOX выполним следующее. В пункте меню Project выберем команду Add Reference, затем на вкладке СОМ дважды щелкнем на ссылке Microsoft ADO Ext. 2.8 for DDL and Security, тем самым мы добавляем эту библиотеку в текущий проект. Убедиться в том, что теперь существует ссылка на эту библиотеку, можно, выбрав в меню Project пункт Console Application 1 Properties и на вкладке References среди ссылок References обнаружив ссылку Interop.ADOX.dll. Теперь мы можем ссылаться на это имя в программном коде.
Далее, чтобы во время выполнения программы не появлялось черное окно DOS, в пунктах меню Project | Console Application 1 Properties на вкладке Application в раскрывающемся списке Application type выберем Windows Forms Application. Чтобы был доступен объект MessageBox для вывода сообщений (хотя для вывода сообщений пользователю можно воспользоваться функцией MsgBox из VB6), добавим в проект еще одну DLL-библиотеку. Для этого, как и в предыдущем случае, укажем пункты меню Project | Add Reference и на вкладке.NET дважды щелкнем ссылку System.Windows.Forms.dll, а в тексте программы выше строки Module Moduiei напишем:
Теперь эту библиотеку можно увидеть на вкладке Project | ConsoleAppli-cationlProperties | References. Ключевое слово imports используется для импортирования пространства имен, которое содержит класс MessageBox»
Программа работает следующим образом: создаем экземпляр класса
adox.catalog, одна из его функций Create способна создавать базу данных, если на ее вход подать строку подключения. Заметим, что в строку подключения входит также и полный путь к создаваемой БД. Функция Create заключена в блоки Try. Catch, которые обрабатывают исключительные ситуации. После запуска этого приложения получим сообщение о создании базы данных (рис.
9.11).
Если тут же запустим наше приложение еще раз, то получим сообщение о том, что такая база данных уже существует (рис. 9.12), поскольку БД new_BD.mdb только что создана.
Рис. 9.11. Сообщение о создании базы данных
Рис. 9.12. База существует
Данное сообщение генерировалось обработчиком исключительной ситуации.
Программный код этой программы можно посмотреть, открыв решение Sozd_BD2.sln в папке Sozd_BD2.
Пример 62. Запись
Источник: poisk-ru.ru