...

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

Формы и отчеты.

Как известно, основная часть приложения базы состоит из диалоговых окон, или просто форм. Обычно у каждой формы есть свой источник данных – таблица или  запрос. Часто начинающие разработчики Access даже не задумываются об этом, а вот программистам, использующим другие средства разработки, не ориентированные специально на базы данных, это хорошо известно. Им приходится создавать подключение к источнику базы данных (обычно через ADO), цеплять этот источник к форме, потом цеплять к каждому контролу соответствующее ему поле таблицы. В Access все это сделано по умолчанию, что и позволяет значительно ускорить проектирование приложений.

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

Итак, заходим на вкладку формы, жмем «создать в режиме конструктора». Вызываем в конструкторе  панель свойств формы (двойным щелчком по форме или жмем кнопку «Свойства»). Разворачиваем панель элементов, если ее нет, то жмем кнопку «Панель элементов» - та, что с «молотками»). Теперь на панели элементов выбираем элемент, например «Надпись» и задаем параметры элемента (в форме настроек) – шрифт, высоту шрифта, выравнивание и т. д. То же  самое проделывает с другими элементами. В результате получаем пустую форму, в которой заданы пользовательские параметры контролов. Чтобы убедиться в этом, закидываем какой-нибудь котрол на форму, и смотрим, какие у него параметры – как видно, те, которые задавались в настройках. Теперь, чтобы эти параметры контролов были заданы для всех будущих форм, а не только для этой, нужно созданную форму указать как шаблон.

Сначала сохраним ее, например под именем «ФормаШаблон». Затем жмем Сервис – Параметры – Формы и отчеты и указываем в поле «Шаблон формы» имя нашего шаблона – «ФормаШаблон». Таким же образом можно создать шаблон настроек отчета, сохранить его и указать в поле «Шаблон отчета».

Эти настройки сохраняются только для текущего проекта базы данных. В новом проекте опять появятся стандартные – тип «Обычный». Чтобы применить пользовательский шаблон в новом проекте, импортируем его в проект и укажем его имя.
При создании форм, часто приходится выравнивать элементы. Чтобы дело пошло быстрее, можно выравнивать их все сразу: выделяем группу элементов (окном или удерживая Shift), затем правой кнопкой – и выбираем стиль выравнивания: по левому краю, по правому и т. д. Такой способ удобен, когда нужно сдвинуть группу контролов, которые разбросаны по форме – сдвигаем один «как надо», а остальные выравниваем по нему.

Запросы.

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

Как работать с мастером, думаю, нет нужды рассказывать. Остановлюсь лишь на таком моменте: иногда приходится прописывать строку SQl в модуле формы. Очевидно, чтобы избежать ошибок, а заодно ускорить процесс создания, лучше «нащелкать» запрос в мастере, проверить его, затем переключиться в режим SQL, скопировать полученные «кракозябры» в буфер и вставить в текст модуля. Такой способ позволяет, даже не понимая практически ничего в SQl, создавать достаточно сложные запросы, к тому же скорость создания запросов на порядок выше, чем вручную. Правда, синтаксис в VBA несколько отличается от того, что пишет мастер в конструкторе. Вот некоторые особенности:

вместо «;» (точка с запятой) в VBA следует писать просто «,» (запятая)

в конструкции WHERE для полей типа «дата» должна быть дата в «буржуйском» формате. SQL по другому не поймет. То есть 22.02.11 должно выглядеть как 02/22/11. Для этого удобно использовыть функцию Format. Для текущей даты он должен выглядеть так: Format(Date(), "\#MM\/DD\/YY\#")

Модули.

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

Часто начинающие разработчики Access не спешат «разбираться» с VBA, предпочитая пользоваться мастерами. Тем не менее, можно создавать достаточно сложные программы … практически не разбираясь в программировании! И делается это при помощи макросов.

Макрос в Access представляет собой структуру, состоящую из одной или нескольких макрокоманд, которые выполняются либо последовательно, либо в порядке, заданном определенными условиями. С помощью макросов можно выполнить практически все действия над объектами Access. Каждая макрокоманда имеет определенное имя и, возможно, один или несколько аргументов, которые задаются пользователем. Например, при использовании макрокоманды ОткрытьФорму (OpenForm) в качестве аргументов необходимо задать, по крайней мере, имя открываемой формы и режим вывода ее на экран.

Я бы назвал использование макросов как очередной шаг на пути к профессиональному программированию в Access. Использование макросов оправдано тем, что их легко создавать, и для этого не нужно изучать синтаксис языка программирования. К тому же в русской версии Access все макрокоманды переведены на русский язык, что еще более упрощает их применение. Если Вы решили, что стандартных возможностей мастеров Access Вам уже не достаточно, а разбираться в тонкостях VBA не собираетесь, или пока не собираетесь, и в то же время, хотите сделать свое приложение более профессиональным – то макросы помогут Вам в этом. Однако использование макросов имеет и некоторые недостатки:

Возможности макрокоманд ограничены по сравнению с возможностями языка VBA, поэтому в ряде случаев без программирования на VBA не обойтись

Макросы можно использовать практически везде, где применяются процедуры VBA, однако процедуры VBA, как правило, выполняются быстрее

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

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

Есть еще одна причина, по которой начинающим разработчикам стоит присмотреться к макросам: при помощи макросов можно… изучать VBA. Поясню на примере.

Допустим, Вы хотите написать процедуру экспорта запроса в Excel, и как водится, не знаете, как это сделать. Заходим на вкладку Макросы, жмем «создать». В поле Макрокоманда выбираем «ВывестиВФормате». В аргументах макрокоманды устанавливаем параметры: тип объекта – запрос, имя объекта – (имя запроса), формат вывода - Microsoft Excel (*.xls), имя файла – (например D:/Таблица.xls), автозагрузка – нет. Сохраняем макрос. Теперь, чтобы посмотреть, как все это выглядит в VBA, выделяем в окне проекта макрос, выбираем Сервис – Макрос – Преобразовать макросы и далее по диалогу. В результате появится модуль, в котором среди прочего будет:

DoCmd.OutputTo acQuery, "", "MicrosoftExcelBiff8(*.xls)", "", False, "", 0

Таким образом, можно создавать процедуры что называется «по кусочкам», изучая заодно VBA.

Автор: vbpro@omsktele.com