Разработка интерфейса приложения


При создании распространяемой версии необходимо исключить доступ пользователей к объектам БД в режиме разработки. Если этого не сделать, то БД может быть легко повреждена при неквалифицированных действиях пользователей или даже случайно. Для этого в первую очередь необходимо отключить появление окна БД, содержащего список всех объектов БД и предоставляющего доступ к ним в режиме разработки. Работа с базой данных должна быть организована через интерфейс пользователя. Создание удобного и интуитивно понятного интерфейса, предоставляющего доступ ко всем объектам БД и автоматизирующего выполнение основных задач, является неотъемлемой частью разработки любой БД, даже если вы ее не планировали ее распространять. Интерфейс пользователя в Access реализуется с помощью форм, панелей инструментов и меню. Поскольку Access является СУБД и предоставляет полный набор операций, доступных через меню и встроенные панели инструментов, то создание пользовательского меню и панелей инструментов не является первоочередной задачей. Гораздо более важно научиться создавать удобные в работе и богатые функциональными возможностями формы. Если разрабатываемая БД небольшая и фактически предназначена для выполнения одной или небольшого количества взаимосвязанных задач, то достаточно создать одну главную форму, автоматически вызываемую при открытии БД, и ряд вспомогательных форм, открываемых обычно с помощью командных кнопок, размещенных на главной форме. Закрытие этой формы можно связать с закрытием всего приложения. Если же разрабатываемая БД большая и предназначена для выполнения ряда задач, то не обойтись без создания главной переключательной формы, которая автоматически вызывалась бы при открытии БД и оставалась открытой все время работы приложения. Создать такую форму можно самостоятельно в режиме конструктора или с помощью мастера создания переключательных форм, а задать ее автоматическое появление на экран наряду с заданием названия приложения, значка приложения и т.п. можно с помощью диалогового окна Параметры запуска, вызываемого по одноименной команде меню.

Автоматизация приложения в Access достигается за счет обработки событий, происходящих в формах и отчетах с помощью макросов и модулей. Макросы и программы, написанные на языке VBA и входящие в состав модулей, позволяют выполнить ряд запрограммированных действий и изменять состояние любого объекта БД. Из макросов и модулей можно ссылаться на любой объект, читать и менять его свойства.

Ссылки на объекты

При связывании, проведении вычислений и автоматизации форм и отчетов часто приходится ссылаться на саму форму/отчет или на какой-нибудь элемент управления в ней, чтобы просмотреть или установить его свойства или значение. Доступ к объектам БД в Access можно получить, вначале указав имя коллекции, а затем через восклицательный знак имя объекта в коллекции. Помимо операции “!” можно указать в скобках индекс или имя объекта. Индекс является порядковым номером открытой формы и начинается с нуля. Коллекции форм и отчетов являются глобальными и к объекту такой коллекции можно обращаться напрямую. Например: Reports![Годовой отчет], Forms!Заказы (иначе Forms(0) или Forms("Заказы")).

Для указания ссылки на свойство объекта используется операция “.”, за которой следует имя свойства Forms![Catalog Item].Visible

Получив ссылку на объект или свойство, можно считать ее значение или, напротив, присвоить ссылке некоторое допустимое значение. Например:

frm = Forms![Catalog Item],

Forms![Catalog Item].Visible = False

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

Forms![Заказы]![код_заказа] и Forms![Заказы]![код_заказа].Visible

Несколько сложнее дело обстоит со ссылками на подчиненные формы или отчеты. Когда форма внедряется внутрь другой формы, то она будет являться элементом управления Подчиненная форма для основной формы (то есть ссылка к самой подчиненной форме или к ее свойствам ничем не будет отличаться от ссылки, скажем, на элемент Поле).

Forms![Заказы]![Подчиненная Заказы].Visible

Одним из свойств элемента управления Подчиненная форма является свойство Форма (Form), которое позволяет ссылаться в свою очередь на подчиненную форму и на элементы управления в ней Forms![Заказы]![Подчиненная Заказы].Form![Код_заказа]. Для ссылки на свойство элемента управления внутри подчиненной формы остается добавить еще точку и имя свойства. При работе с макросами и модулями необходимо иметь в виду, что доступ возможен только к элементам управления открытых форм или отчетов. Если же есть желание иметь доступ к элементам управления, но не видеть форму открытой, то можно просто установить свойство Visible этой формы в False, то есть скрыть ее.

Объекты в Access могут иметь свойство, используемое по умолчанию. Это свойство применяется в том случае, когда имя свойства в ссылке явно не указано. Например, у элемента управления Поле по умолчанию используется свойство Значение (Value), поэтому ссылка Forms!Товары!Цена позволяет получить доступ к значению, отображенному в текстовом поле Цена. Следовательно, можно просто присвоить некоторое значение элементу управления Поле, а вместе с ним тому полю базового набора, с которым этот элемент управления связан. Например, Forms!Товары!Цена = 100 или наоборот, price = Forms!Товары!Цена.

События в Access

Событие – это распознаваемое изменение состояния любого объекта MS Access или операционной системы. Может представлять любое действие, инициируемое пользователем или самой системой. Такие действия, как открытие окна, состоят из нескольких последовательно происходящих событий. Поскольку автоматизация приложения происходит за счет обработки событий, то конечный результат будет зависеть не только от умения правильно обрабатывать отдельные события, но и от знания последовательности их выполнения. Большое количество действий, например, вставка либо удаление записи, имеют по два события для их обработки. Первое происходит непосредственно перед выполнением действия, второе – сразу после него. События, происходящие перед выполнением некоторого действия, зачастую можно отменять. Отмена события фактически отменяет выполнение самого действия. Определить, является ли событие отменяемым, можно по наличию в списке его аргументов параметра Cancel. Тогда для отмены события достаточно установить его в True. Здесь мы рассмотрим основные события (весь список можно найти в справочной системе), условно разделив их на следующие группы:

· События данных. Происходят при изменении данных в элементе управления или в форме и при переходе от записи к записи:

- Текущая запись. Происходит при обращении к источнику данных формы/отчета. Возникает как при открытии формы, так и при переходе от записи к записи.

- Удаление. Происходит непосредственно перед реальным удалением записи.

- До подтверждения Del. Используется для отмены появления окна запроса на подтверждение удаления и самого удаления.

- После подтверждения Del. Используется для проверки статуса удаления записи.

- До вставки. Происходит сразу перед вставкой записи (ввод первого символа в любое поле). Может использоваться для проверки, разрешена ли вставка записи.

- После вставки. Происходит сразу после вставки записи.

- До обновления. Возникает при обновлении данных как в самой записи, так и в элементе управления. Используется обычно для проверки условий целостности.

- После обновления. Возникает сразу после обновления данных в записи или элементе управления. При обработке события можно восстановить старые данные, сохраняемые в свойстве Old Value элемента управления.

- Изменение. Событие редактора. Возникает при вводе/удалении каждого символа.

- Внесены изменения. Позволяет проверить, были ли изменения в записи.

- Отсутствие в списке. Возникает в поле со списком при вводе значения, отсутствующего в списке.

· События окна. Происходят при открытии и закрытии форм и отчетов и при изменении их размеров:

- Открытие. Происходит непосредственно перед отображением первой записи.

- Закрытие. Происходит непосредственно перед тем, когда форма будет удалена из экрана.

- Загрузка. Происходит после события Открытие при загрузке данных в форму.

- Выгрузка. Происходит перед событием Закрытие при выгрузке данных.

- Изменение размера. Происходит при изменении размеров формы/отчета, а также при их открытии.

· События фокуса. Происходят при получении и потери фокуса и при активации/деактивации элемента управления или самой формы:

- Вход.

- Выход.

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

- Потеря фокуса. Происходит, когда форма или элемент управления теряет фокус.

- Включение. Возникает, когда форма/отчет становится активной. Применяется для связывания появления панели инструментов или т.п. с появлением формы.

- Отключение. Возникает, когда активной становится другая форма/отчет.

· События клавиатуры. Происходят при нажатии на клавиши клавиатуры:

- Клавиша вниз. Происходит при нажатии клавиши. Имеет два параметра KeyKode и Shift. По значениям этих параметров можно определить, что было нажато.

- Клавиша вверх. Происходит при отпускании клавиши. Имеет те же параметры.

- Нажатие клавиши. Генерируется непрерывно, когда клавиша нажимается и остается нажатой.

· События мыши. Происходят при нажатии клавиш мыши или при ее перемещении:

- Нажатие кнопки. Происходит при нажатии левой клавиши мыши. Это событие вызывается также автоматически при нажатии клавиши Enter для имеющей фокус кнопки или выборе элемента из списка.

- Двойное нажатие кнопки. Происходит после двойного нажатия клавиши мыши.

- Перемещение указателя. Генерируется непрерывно, пока происходит перемещение мыши. Система определяет границы объектов и генерирует это событие поочередно для всех объектов, в которые попадает указатель мыши. Имеет параметры Button, Shift, X и Y. Параметры Button и Shift служат для определения состояния нажатых кнопок мыши и клавиш Alt, Shift, Ctrl.

- Колесико мыши, Кнопка вниз и Кнопка вверх. Дополнительные события мыши.

Если форма имеет хотя бы один доступный элемент управления, то при ее открытии возникает следующая последовательность событий: Открытие ® Загрузка ® Изменение размера ® Включение ® Текущая запись ® Вход (э)® Получение фокуса (э). Буква э в скобках означает, что событие относится к элементу управления, а не к форме. В следующих примерах буква ф в скобках будем обозначать событие, происходящее для самой формы, если это и так не ясно из контекста. Соответственно, при закрытии формы: Выход (э)® Потеря фокуса (э) ® Выгрузка ® Отключение ® Закрытие. При переключении между двумя открытыми формами цепочка событий следующая: Потеря фокуса (э1) ® Отключение (ф1)® Включение (ф2)® Вход (э2)® Получение фокуса (э2), а при переключении между двумя элементами управления одной формы: Выход (э1) ® Потеря фокуса (э1) ® Вход (э2)® Получение фокуса (э2).

При изменении данных в элементе управления при каждом нажатии клавиши клавиатуры возникает следующая цепочка событий: Клавиша вниз ® Нажатие клавиши ® Внесены изменения ® Изменение ® Клавиша вверх. При последующем переходе к другому элементу управления дополнительно происходят: До обновления ® После обновления ® Выход ® Потеря фокуса.

При добавлении записи в форму (производится ввод первого символа в поле пустой записи) цепочка событийследующая: Текущая запись ® Вход (э)® Получение фокуса (э)® До вставки® Изменение (э) ® До обновления (ф) ® После обновления (ф)® После вставки. При удалении: Удаление ® До подтверждения Del ® После подтверждения Del ® Текущая запись ® Вход (э)® Получение фокуса (э). Последние три события происходят вследствие того, что при удалении фокус переходит на следующую запись.

Макросы

Макрос представляет собой набор из одной или более макрокоманд, которые выполняются либо последовательно, либо в порядке, заданном определенными условиями. Каждая макрокоманда имеет собственное имя и один или несколько аргументов. Использование макросов оправдано тем, что для их создания нет необходимости в серьезном изучении языка программирования. Использование макрокоманд интуитивно понятно, поскольку название макрокоманды фактически совпадает с выполняемым ей действием. Например, ЗадатьЗначение, ОткрытьФорму. Но программирование с помощью макросов имеет ряд серьезных ограничений. Набор макросов ограничен, макросы не могут возвращать значения, с их помощью невозможна обработка ошибок и т.д.

С помощью макросов можно выполнять следующие действия:

1. Открывать и закрывать любые объекты вашей БД в любом режиме. Для форм дополнительно можно ограничивать число выводимых записей по некоторому условию. Для отчетов можно запускать их на печать и экспортировать в формате TXT, RTF, XLS и HTML;

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

3. Запускать другие макросы и процедуры VBA, прерывать выполнение макросов и отменять событие, вызвавшее макрос, и даже выходить из приложения;

4. Устанавливать значения любых свойств любого элемента управления формы или отчета;

5. Осуществлять поиск записей в базовой таблице или запросе форм и отчетов и переходить к любой из них;

6. Переопределять либо создавать системное меню и выполнять любую команду меню Access;

7. Перемещать, изменять размеры, сворачивать, скрывать и т.д. формы и отчеты внутри рабочего окна Access. Можно также передавать фокус любой форме и любому элементу управления в ней;

8. Выводить на экран информационные сообщения либо выдавать звуковые сигналы;

9. Переименовывать, удалять, импортировать/экспортировать объекты и внешние данные;

10. Запускать другие приложения, осуществлять обмен информацией с помощью механизма DDE или буфера обмена. Можно даже передать последовательность нажатий клавиш в открытое приложение.

Макросы создаются с помощью конструктора макросов (Рис. 7.12). Макросы можно также объединить в группы для уменьшения их общего числа и лучшей ориентации среди них. Для создания группы макросов необходимо вывести столбец Имя макроса в окне конструктора макросов с помощью соответствующей команды меню. Чтобы сослаться на макрос, входящий в группу, требуется указать имя группы макросов и через точку имя макроса. Можно задать условие на выполнение определенных макрокоманд. Для этого необходимо добавить столбец Условие в окне конструктора макросов с помощью соответствующей команды меню. Создание условий ничем не отличается от задания условий на значения для форм и таблиц.

Рис.7.11. Окно конструктора макросов

Если условие действует на группу макрокоманд, то чтобы не повторять одно и то же условие для нескольких последовательно идущих макрокоманд, можно вместо условия поставить многоточие “…”. Если условие принимает значение Истина, то Access запускает макрокоманду в этой строке и все макрокоманды в расположенных ниже строках, которые имеют многоточие вместо условия. Затем продолжается выполнение дополнительных макрокоманд внутри данного макроса, пока не встретится макрокоманда с другим условием, другой макрос или конец группы макросов. Если условие принимает значение Ложь, то Access игнорирует макрокоманду данной строки и всех следующих за ней макрокоманд с многоточием и переходит к строке, содержащей новое условие или не содержащей условий вообще. Для макросов невозможно задание альтернативного ветвления, поэтому для создания макроса с альтернативным ветвлением необходимо вначале определить группу макрокоманд с одним условием, а затем сразу же другую группу с альтернативным условием.

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

Существует зарезервированное имя макроса AutoExec для автоматического выполнения при открытии базы данных. То есть если присвоить это имя какому-либо макросу, то он начнет выполняться сразу же после запуска БД. Если же необходимо отключить его выполнение, то при открытии БД надо удерживать нажатой клавишу Shift. При одновременном определении параметров запуска и макроса AutoExec вначале происходит обработка действий, определенных в окне Параметры Запуска, а затем макроса AutoExec.

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

Модули

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

· Обработка ошибок;

· Возврат и передача параметров;

· Создание общих функций;

· Динамическое (во время работы) создание новых объектов БД;

· Вызов функций Windows или обмен данными через OLE;

· Функциональность, недостижимая с помощью макросов;

· Производить действия более чем с одной БД одновременно.

Входящие в модуль процедуры/функции объединены общей областью декларации. В ней устанавливаются определения и правила, являющиеся общепринятыми для модуля, а также переменные, общие для всех процедур/функций модуля. Процедуры и функции могут иметь аргументы. Отличием функции от процедуры является то, что первая может в точку вызова вернуть некоторое значение, а вторая – нет. Функции и процедуры, записанные в модулях, доступных через закладку Модули окна базы данных (стандартные или общедоступные модули), являются доступными для всех объектов БД. Их можно использовать в следующих местах:

· во всех процедурах и других функциях вашей БД;

· в выражениях вычисляемых полей в формах, объектах и запросах;

· в выражениях, определяющих условия выполнения макрокоманд в макросах.

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

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



Дата добавления: 2016-10-26; просмотров: 2548;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.019 сек.