Одной из причин, почему Access завоевал такую большую популярность во всем мире как средство разработки приложений баз данных, является скорость, с которой разрабатываются подобные приложения по сравнению с другими средствами. Причем, это признают и программисты, занимающиеся разработкой баз данных при помощи других пакетов. В этой статье я расскажу о некоторых особенностях Access, которые и способствуют такой «акселерации».
Формы и отчеты.
Как известно, основная часть приложения состоит из диалоговых окон, или просто форм. Обычно у каждой формы есть свой источник данных – таблица или запрос. Часто начинающие разработчики Access даже не задумываются об этом, а вот программистам, использующим другие средства разработки, не ориентированные специально на базы данных, это хорошо известно. Им приходится создавать подключение к источнику данных (обычно через ADO), цеплять этот источник к форме, потом цеплять к каждому контролу соответствующее ему поле таблицы. В Access все это сделано по умолчанию, что и позволяет значительно ускорить проектирование приложений.
Еще большей скорости можно добиться, если использовать шаблоны – заготовки форм по умолчанию. Действительно, если Вам не нравится стандартный вид формы и контролов, предлагаемый Access по умолчанию, и Вы все время изменяете высоту полей, стиль оформления, шрифты и т. д., то можно это сделать один раз, сохранить заготовку формы и объявить ее как шаблон. Теперь при создании новой формы параметры контролов в ней будут установлены по умолчанию.
Итак, заходим на вкладку формы, жмем «создать в режиме конструктора». Вызываем в конструкторе панель свойств формы (двойным щелчком по форме или жмем кнопку «Свойства»). Разворачиваем панель элементов, если ее нет, то жмем кнопку «Панель элементов» - та, что с «молотками»). Теперь на панели элементов выбираем элемент, например «Надпись» и задаем параметры элемента (в форме настроек) – шрифт, высоту шрифта, выравнивание и т. д. То же самое проделывает с другими элементами. В результате получаем пустую форму, в которой заданы пользовательские параметры контролов. Чтобы убедиться в этом, закидываем какой-нибудь котрол на форму, и смотрим, какие у него параметры – как видно, те, которые задавались в настройках. Теперь, чтобы эти параметры контролов были заданы для всех будущих форм, а не только для этой, нужно созданную форму указать как шаблон.
Сначала сохраним ее, например под именем «ФормаШаблон». Затем жмем Сервис – Параметры – Формы и отчеты и указываем в поле «Шаблон формы» имя нашего шаблона – «ФормаШаблон». Таким же образом можно создать шаблон настроек отчета, сохранить его и указать в поле «Шаблон отчета».
Эти настройки сохраняются только для текущего проекта. В новом проекте опять появятся стандартные – тип «Обычный». Чтобы применить пользовательский шаблон в новом проекте, импортируем его в проект и укажем его имя. При создании форм, часто приходится выравнивать элементы. Чтобы дело пошло быстрее, можно выравнивать их все сразу: выделяем группу элементов (окном или удерживая Shift), затем правой кнопкой – и выбираем стиль выравнивания: по левому краю, по правому и т. д. Такой способ удобен, когда нужно сдвинуть группу контролов, которые разбросаны по форме – сдвигаем один «как надо», а остальные выравниваем по нему.
Запросы.
В Access есть отличный мастер создания запросов. Мне лично больше всего нравится, что запрос можно редактировать в графическом режиме, что намного нагляднее, к тому же вероятность ошибки в синтаксисе SQl сведена практически к минимуму – ведь пишет мастер. Как правило, в 90% случаев его хватает, руками приходится писать только совсем уж заумные вещи, да и те обычно предварительно создаются в мастере.
Как работать с мастером, думаю, нет нужды рассказывать. Остановлюсь лишь на таком моменте: иногда приходится прописывать строку SQl в модуле формы. Очевидно, чтобы избежать ошибок, а заодно ускорить процесс создания, лучше «нащелкать» запрос в мастере, проверить его, затем переключиться в режим SQL, скопировать полученные «кракозябры» в буфер и вставить в текст модуля. Такой способ позволяет, даже не понимая практически ничего в SQl, создавать достаточно сложные запросы, к тому же скорость создания запросов на порядок выше, чем вручную. Правда, синтаксис в VBA несколько отличается от того, что пишет мастер в конструкторе. Вот некоторые особенности:
- вместо «;» (точка с запятой) в VBA следует писать просто «,» (запятая)
- в конструкции WHERE для полей типа «дата» должна быть дата в «буржуйском» формате. SQL по другому не поймет. То есть 22.02.04 должно выглядеть как 02/22/07. Для этого удобно использовыть функцию 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.
|