Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие.doc
Скачиваний:
153
Добавлен:
02.05.2014
Размер:
1.63 Mб
Скачать

3.3. Программирование в Access

3.3.1. Вводные замечания

Для программирования в Access используется процедурный язык Visual Basic for Applications (Visual Basic для приложе­ний - VBA) с добавлениями объектных расширений и элементов SQL. VBA является стандар­тным подмножеством Visual Basic, поддерживающим в основном такие же объекты, свойства, методы и другие языковые элементы. Кроме того, VBA — расширяемый язык, который можно обогащать подключением внешних библиотек. Хотя создать полезные приложения в Access можно и без программирования, все же в большинстве случаев придется написать, по крайней мере, несколько строк кода, чтобы конкретизировать поведение объектов и компонентов приложе­ния. Если же разработчик приступает к формированию мощного, высоко функционального продукта, знание основ программирования в соединении с понима­нием объектной модели будет весьма кстати.

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

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

Так как программирование на Visual Basic базируется на объектах, структура кода близка к модели физического представления объектов на экране. По определению, объекты содержат данные и код. Форма, которую пользователь видит на экране, — представление свойств, определяющих ее вид и поведение. Для каждой формы и отчета в приложении Access имеется модуль, который содержит ассоциированный, описывающий их программный код.

Программные модули — важнейший компонент приложений Access. Существует два типа модулей: модули класса и стандартные модули. Модуль класса используется для создания объектов, которые могут вызываться из процедур приложения. В отличие от стандартного модуля, который содержит только код, модуль класса содержит и код, и данные. Новый объект, созданный в модуле класса, может включать пользовательские свойства и методы. Модуль класса можно рассматривать как элемент управления без физического представления.

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

Код общих процедур, который не связан с определенной формой, элементом управления или другим объектом, а также часто используемые процедуры, которые могут быть запущены из любого окна базы данных, могут быть помещены в модуль другого типа — стандар­тный модуль. Процедуру, которая должна использоваться в ответ на события в нескольких различных объектах, целесообразней поместить в стандартный модуль, вместо дублирования кода в процедурах каждого объекта. Стандартные модули — контейнеры для процедур и объявлений общего доступа для других модулей приложения. Они могут содержать глобальные (доступные из всех окон базы данных Access) или уровня модуля объявления переменных, констант, типов, внешних и глобальных процедур. Код, который внесен в стандартный модуль, не обязательно связан с конкретным приложением; если в модуле нет обращений к формам или элементам управления по именам, стандартный модуль может многократно использоваться в различных приложениях.

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

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

При создании формы или отчета в Microsoft Access автоматического назначения связан­ного с ними модуля не происходит. Модуль создается после нажатия кнопки Программа на панели инструментов, которая служит для открытия окна редактора кода модуля формы или отчета. Создание модуля возможно также путем установления значения Да для свойства формы Наличие модуля.

Значение этого свойства указывает на наличие или отсутствия модуля, связанного с формой или отчетом. Так как модуль формы или отчета не создается, пока не возникает необходимость добавления в них программного кода, в проекте содержится меньшее количество модулей. Это приводит к повышению производительности. Формы и отчеты без модулей загружаются значительно быстрее форм и отчетов с модулями.

Проекты Visual Basic для приложений. Каждая база данных Access, библиотечная база данных или надстройка, содержа­щаяся в файле .mde, включает проект Visual Basic, который представляет собой набор всех модулей в проекте, включая стандартные модули и модули классов.

Имя базы данных и имя проекта могут не совпадать. Имя базы данных определяется именем файла .mdb (.mda или .mde), а имя проекта — параметром Имя проекта во вкладке Другие диалогового окна Параметры, которое выводится при выборе команды Параметры из меню Сервис. При созда­нии базы данных ее имя и имя проекта по умолчанию совпадают. Однако при переименова­нии базы данных имя проекта не изменяется автоматически. Аналогично, изменение имени проекта не влияет на имя базы данных.

В одной базе данных Microsoft Access из проекта Visual Basic может устанавливаться ссылка на проект в другой базе данных, библиотечной базе данных или надстройке, содержащейся в файле .mde. После установки ссылки становится возможным запуск процедур Visual Basic из адресуемого проекта. Можно создать ссылку на проект базы данных из проекта текущей базы данных, после чего вызывать его функции так же, как если бы они были описаны в текущей базе данных.

Для создания ссылки на проект из другого проекта необходимо:

1. Открыть окно модуля.

2. Выбрать в меню Сервис команду Ссылки и выбрать нужную базу данных, библиотеку в списке или нажать кнопку Обзор в диалоговом окне Ссылки.

3. Выбрать элемент с расширением имени, соответствующим базе данных (*.mdb, *.mda, *.mde) в поле со списком Тип файла.

4. Найти требуемый файл и нажать кнопку ОК. Файл будет добавлен в список ссылок, выводящихся в диалоговом окне Ссылки.

5. Установить флажок возле элемента списка.

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

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

При установке ссылки на проект или библиотеку типов из Microsoft Access и последующем переносе файла, который содержит этот проект или библиотеку, в другую папку Access попытается найти файл и переопределить ссылку. Если в системном реестре Windows имеется запись RefLibPaths, то поиск начнется с этого пути. Если такой записи в реестре нет, то поиск будет проводиться сначала в текущей папке, а затем во всех папках на диске. Запись RefLibPaths создается с помощью редактора реестра Windows в разделе \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\8.0\Access.

Создание модулей. Новый модуль можно создать, находясь в любом окне базы данных Access. Для этого необходимо:

1. Выбрать команду Модуль или Модуль класса в меню Вставка либо в списке кнопки Новый объект. Откроется окно пустого модуля.

2. Добавить в модуль необходимые процедуры и описания.

3. Для сохранения модуля нажать кнопку Сохранить на панели инструментов и задать имя модуля в диалоговом окне Сохранение.

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

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

Прежде чем начать писать программный код. Возможно, наиболее важной (и часто недооцениваемой) частью процесса программирова­ния на Visual Basic для приложений является фаза проектирования. В то время как очевид­но, что необходимо проектировать пользовательский интерфейс приложения, не всегда учитывается, что в тщательном проектировании нуждается также программная структура. Структура приложения может оказывать существенное влияние, как на производительность работы, так и на удобство сопровождения кода.

Программный код в приложении Access организован иерархическим способом. Типичное приложение содержит один или больше модулей: модуль для каждой формы и отчета приложения, необязательные стандартные модули для глобального кода и необязательные модули классов. Каждый модуль содержит одну или больше процедур, которые содержат код: процедуры обработки событий, процедуры Sub или Function и процедуры Property.

Использование редактора кода. Редактор кода Visual Basic (окно модуля) — окно, в котором составляется текст программ­ного кода. Это высоко специализированный текстовый процессор с рядом возможностей, упрощающих написание кода Visual Basic.

Ограничения, связанные с программным кодом.

1. Модуль любого типа может содержать не более 55534 строк кода.

2. Строка кода может содержать до 1023 символов.

3. Фактическому тексту в строке может предшествовать не более 255 пробелов.

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

За символом продолжения строки в той же строке не может следовать комментарий, и одна логическая строка кода не может содержать более 25 символов продолжения строки.

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

Добавление комментариев к коду. При чтении программного текста часто можно встретить символы или ключевые слова комментария (в Visual Basic это апостроф (') и ключевое слово Rem). Эти символы указыва­ют компилятору Visual Basic игнорировать последующие слова данной строки. Эти слова — замечания, помещаемые в код для удобства разработчика, а также других программистов, которым понадобится работать с текстом программы впоследствии.

Комментарии могут следовать за инструкцией в той же строке или могут занимать всю строку. Следует помнить, что коммен­тарий не может следовать за символом продолжения строки на той же самой строке.

Соглашения именования в Visual Basic. При написании кода Visual Basic объявляется много языковых элементов (процедуры Sub и Function, переменные, константы и т. д.). Имена объявляемых элементов должны отвечать следующим требованиям:

• они должны начинаться с буквы;

•они не могут содержать внедренные пробел, точку (.), восклицательный знак (!) или символы объявления типа (специальные символы, которые специфицируют типы данных);

• они могут содержать не более 255 символов. Имена элементов управления, форм, классов и модулей не должны превышать 54 символов. Эти имена могут включать любую комбинацию букв, цифр, пробелов и специальных символов за исключением точки (.), восклицательного знака (!), надстрочного символа (') и прямых скобок ([ ]);

• имя должно быть уникальным внутри своего контекста (области определения). Напри­мер, для локальной переменной это процедура, в которой она объявлена;

• как правило, не следует использовать имена, совпадающие с названиями функций, инструкций и методов языка Visual Basic.

Если формы и элементы управления именовать ключевым словом, то при обращении к ним элемент управления необходимо либо квалифицировать (например, принадлежностью к некоторому контейнеру), либо заключить имя в квадратные скобки [ ].

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

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

Языковые компоненты. В процедурах Visual Basic при выполнении вычислений часто требуется сохранить некото­рые временные значения — вычислить несколько значений, сравнить их и, в зависимости от результата сравнения, выполнить с ними различные операции. Например, может пона­добиться запомнить значения продаж и совокупных расходов, чтобы использовать их при вычислении совокупного дохода. Хранить значения можно в свойствах объектов, однако это сужает возможности программиста и не всегда возможно. В языке Visual Basic, как и в большинстве языков программирования, временные значения чаще всего хранятся в пере­менных.

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

Константы также хранят значения, но, как видно из названия, эти значения остаются постоянными в течение всей работы приложения. Использование констант может делать код более читабельным, так как с их помощью, вместо чисел, можно манипулировать мнемоническими именами. В Visual Basic имеется ряд встроенных констант, однако разра­ботчик может создавать также пользовательские константы.

Типы данных определяют внутреннюю структуру данных Visual Basic. По умолчанию, Visual Basic использует тип данных Variant. Имеется также ряд других типов данных, которые позволяют гибко оптимизировать код по скорости выполнения и размеру.

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

Встроенные и пользовательские процедуры. Visual Basic поддерживает процедуры Sub (подпрограммы) и Function (функции). Функции выполняют вычисления и возвращают ре­зультат. Они могут выполнять любое количество вычислений с числовыми, текстовыми, логическими значениями или чем-либо еще, но им не позволяется воздействовать на их среду. В отличие от функций, Sub-процедуры могут изменять среду, но они не возвращают значение. Процедуры обычно работают с одним или большим количеством параметров, которые специ­фицируются при вызове процедуры, хотя некоторые процедуры не требуют никаких пара­метров.

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

Соседние файлы в предмете Базы данных