Текст книги "Access 2002. Самоучитель"
Автор книги: Павел Дубнов
Жанр:
ОС и Сети
сообщить о нарушении
Текущая страница: 7 (всего у книги 16 страниц) [доступный отрывок для чтения: 7 страниц]
Возникает естественный вопрос: почему при конвертации данных в dBase нельзя установить для полей дат соответствующий формат, а не цифровой, который был использован в нашем примере? К сожалению, в dBase задано жесткое ограничение на длину поля Дата – 8 байт. Если вы считаете необходимым использовать четырехзначные символы для указания года (вспомните «проблему 2000 года»), то в отведенный лимит явно не укладываетесь: поля дат получатся просто пустыми, что вас, разумеется, не устроит.
Однако, объяснив этот печальный факт, вы не избавились от необходимости исправить положение. Чтобы сделать это, воспользуйтесь операцией замены-вставки. Сначала выделите столбец Дата ЧЭС, щелкнув кнопкой мыши по его имени. Теперь в меню Access 2002 откройте таблицу Fiie1 в режиме конструктора (см. рис. 7.8). Активизируйте меню Правка и выберите Найти. Можно, не входя в меню, просто применить комбинацию клавиш Ctrl+F. В результате на экране появится окно Поиск и замена (рис. 7.9).
Рис. 7.9
Теперь откройте вкладку Замена и установите следующие значения полей:
• Образец – /2093 (часть поля в столбце, которая подлежит замене);
• Заменить на – /1994 (год, устанавливаемый в порядке замены);
• Совпадение (данная опция задается стрелкой прокрутки);
• Просмотр – Все. Задается стрелкой прокрутки.
После этого следует щелкнуть по кнопке Заменить все. Затем повторить описанную процедуру для столбца Дата сообщения. В ходе операции поиска-замены по всем полям этих двух столбцов значение года – 2093 – будет заменено на 1994. Итоговый вид таблицы после внесенных исправлений представлен на рис. 7.10.
Рис. 7.10
Но и это еще не все. Если сравнить сообщение о ЧЭС, полученное из исходной базы данных в среде Clarion, и его изображение после конвертации в Access 2002, то можно обнаружить одно различие, свойственное всем записям. Состоит оно в том, что в новой базе данных даты всех событий сдвинуты на один день вперед по сравнению с исходной базой данных. Если, согласно информации в исходной базе данных, авария на магистральном трубопроводе произошла 23.03.95, то в новой БД этому событию соответствует другая дата – 24.03.95. В чем тут дело? Детальная проверка объясняет причину такого сдвига во времени: в разных СУБД заложены разные установки насчет того, как представлять дату 29.02 в високосном году. Это и проявляется при преобразовании базы данных. Там за несколько лет накапливаются большие массивы информации, и в каждом високосном году 29 февраля происходит своеобразная «мутация»: в преобразованных записях все даты отличаются от исходных на +1 день. Через 4 года сдвиг увеличивается еще на 1 день, и т. д. Как видите, здесь необходима корректировка, и осуществить ее технически несложно; потребуются лишь внимательность и методичность. Просто сравните выбранные вами контрольные записи в исходной БД с их отображением в новой, итоговой базе данных и определите границы подмассива с конкретным значением сдвига (например, + 1). Теперь исправьте данные этого подмассива с помощью операции поиска-замены так, как было показано выше. Сортировка записей
И наконец, последняя операция: таблицу базы данных желательно, хотя и не обязательно, отсортировать. Операция сортировки записей в Access 2002 очень проста. В окне конструктора (см. рис. 7.10) выделите тот столбец, по которому требуется сортировать записи. Сама сортировка производится с помощью одной из двух кнопок:

или

Посредством первой из них вы располагаете записи по возрастанию: для цифровых символов – от 0 до 9, для текстовых – от A до Z. Вторая кнопка, соответственно, используется для сортировки записей по убыванию. Щелкните по одной из кнопок.
Теперь оглянемся назад и посмотрим, что уже сделано и что еще предстоит выполнить.
Вы преобразовали и импортировали в Access 2002 один файл (Fiie1) базы данных БД ЧЭС из СУБД, созданной в среде Clarion. Но, во-первых, вы импортировали только часть информации (данные лишь за один год), а в БД ЧЭС накоплены записи с 1990 года. Во-вторых, в БД ЧЭС есть еще несколько словарных файлов, которые тоже нужно перенести в новую базу.
Что касается первой части вопроса, то можно, конечно, пополнить базу данных новыми записями точно так же, как данными одного года. Впрочем, для осуществления этой типовой операции вполне достаточно обычного SQL-запроса на присоединение, о чем будет рассказано в главе 11. (Правда, вам все равно придется заниматься устранением временного сдвига.)
Импорт словарных файлов производится так же, как перемещение файла File1. Поскольку файлы подобного типа не содержат полей даты и времени, никаких дополнительных проблем здесь не возникает.
В завершение работы надо привести базу данных в привычный вид. Ограничения на длину имени поля практически отсутствуют, поэтому дайте всем полям в файлах русскоязычные названия. Вы уже начали делать это немного раньше – в разделе «Поля даты и времени» – с помощью поля Имя поля конструктора таблиц. В своем заключительном варианте таблица Fiie1 представлена на рис. 7.11, а окно базы данных – на рис. 7.12.
Рис. 7.11
Рис. 7.12
Импорт базы данных Контроль ЧС
Технология импорта базы данных Контроль ЧС в основном та же, что и в предыдущем случае. Как вы помните, исходная база данных существует в среде FoxPro. Поскольку в программном обеспечении Access 2002 отсутствует конвертер формата FoxPro, на первом этапе надо импортировать файлы данных в Access 97 (где нужный конвертер есть), а уже затем, на втором этапе работы – из среды Access 97 в Access 2002. Снова подробно рассмотрим эти преобразования на наиболее показательном примере – на файле ES_oper.dbf, одном из тех, где сосредоточена вся основная фактическая информация.
Первый этап: импорт данных из FoxPro в Access 97
Как выглядит исходная запись базы данных Контроль ЧС в формате DBF среды FoxPro, показано на рис. 7.13.

Рис. 7.13
Последовательность действий при конвертации указанного файла практически полностью совпадает с первым этапом импорта базы данных БД ЧЭС. Еще раз перечислим необходимые шаги, но очень кратко:
1. Откройте окно базы данных в Access 97. В принципе можно было использовать любую БД в Access 97, так как импортируемый файл в ней долго не задержится. Но ради чистоты эксперимента все же откройте новую базу данных в Access 97 и назовите ее db1.mdb, как и будущую БД в Access 2002. Однако поместите открытую вами базу данных в другую (по сравнению с db1.mdb в Access 2002) папку, чтобы программа Windows не возражала, так как одновременное присутствие на одном жестком диске Access 97 и Access 2002 может вызывать конфликты. Окно этой пустой базы данных показано на рис. 7.14.
Рис. 7.14
2. Войдите в меню базы данных и задайте ряд команд: Файл Внешние данные Импорт.
3. Найдите файл ES_oper.dbf в исходной БД (см. рис. 7.15). Не забудьте указать в этом окне тип выбранного файла.
Рис. 7.15
4. Щелкните по кнопке

5. В ответ на сообщение Выполнен импорт ES_oper щелкните по кнопке OK.
6. В окне базы данных появится новая таблица ES_oper.
Если вы теперь откроете таблицу ES_oper (см. рис. 7.16), то увидите, что даты в исходной и в импортированной базах данных совпадают и отображаются в правильном формате, а поля времени вообще отсутствуют. Можно вздохнуть свободно: проблем, которые пришлось решать при импорте предыдущей БД, в этом случае не будет. Переходите ко второму этапу конвертации.

Рис. 7.16
Второй этап: импорт данных из Access 97 в Access 2002
Импорт файлов на втором этапе происходит практически так же, как и на первом, однако стоит отследить имеющиеся различия. Итак, второй этап включает в себя следующие шаги:
1. Откройте окно базы данных в Access 2002 (см. рис. 7.12).
2. Войдите в меню базы данных, а выполните ряд команд:
Файл → Внешние данные → Импорт.
3. Найдите файл.dbf в исходной базе данных (см. рис. 7.15). Чтобы файлы с таким расширением были видимыми, предварительно укажите в этом окне соответствующий тип файла (или Все файлы).
4. Щелкните по кнопке

5. На появившееся сообщение Файл ES_oper успешно импортирован следует ответить OK.
6. В окне базы данных появится новая таблица ES_oper.
Пока все в порядке, но не забывайте, что вы импортировали только один файл, хотя и самый большой – ES_oper. Однако в базе данных Контроль ЧС содержится еще много словарных файлов. Проведите для каждого из них аналогичную двухэтапную процедуру импорта.
Опустим промежуточные детали, подробно рассмотренные на примере файла ES_oper. На рис. 7.17 представлено окно новой базы данных в Access 2002, в которой собраны наконец все файлы – как свои, «родные», так и импортированные.
Рис. 7.17
В заключение надо русифицировать имена полей в файлах, подобно тому как это было показано на рис. 7.11 для файла File1 из базы данных БД ЧЭС. Посвящать изменениям каждого файла по отдельному рисунку нет смысла – файлов слишком много. Кроме того, эти изменения будут рассмотрены в последующих главах, когда речь пойдет о программировании в базе данных.
Резюме
1. По мере появления новых, более совершенных СУБД все актуальнее становится проблема использования данных, которые накоплены в информационных банках предыдущих, в том числе и морально устаревших версий.
2. В решении этой проблемы на сегодняшний день наметились два основных направления:
– применение конвертеров, которые преобразуют данные из одного формата в другой. Наборы таких конвертеров, хотя и не всегда достаточно полные, есть практически во всех СУБД, и пока это основной путь решения проблемы;
– использование технологии ODBC (Open Database Connectivity). Это открытый интерфейс доступа к базам данных из прикладных программ. Он позволяет работать с документами «чужих» для конкретной БД форматов.
В настоящей главе рассмотрен первый способ решения проблемы.
3. Как показывает опыт, при конвертировании баз данных, кроме собственно преобразования форматов СУБД, могут возникнуть еще две трудности:
– несовпадение кодов словарей;
– различие между форматами даты и времени в разных БД.
4. В процессе конвертирования, который описан в настоящей главе, необходимо преобразовать в программную среду Access 2002 базу данных БД ЧЭС, сформированную в среде Clarion 3.0, и базу данных Контроль ЧС, разработанную в программной среде FoxPro 2.5. Третья БД в этом интегрированном банке данных – Контрольно-измерительные приборы – создана непосредственно в среде Access 2002. В результате все эти базы данных должны функционировать совместно.
5. При переносе файлов из одной СУБД в другую необходимы повышенные осторожность и внимание, так как различие в исходных установках, положенных в основу той или иной СУБД, может привести к самым неожиданным коллизиям.
Глава 8 Проекты Microsoft Access
Одним из направлений существенного совершенствования Access, которое происходит с появлением каждой новой версии этого программного продукта, является то, что в новой версии программа превратилась в распределенную систему. Это произошло в основном за счет развития и внедрения идеологии, связанной с проектами Microsoft Access.
Проект Microsoft Access (с расширением. adp) является файлом данных Microsoft Access, обеспечивающим эффективный доступ к базам данных Microsoft SQL Server с помощью архитектуры компонентов OLE DB [9] .
Используя проект Microsoft Access, можно создавать приложения в архитектуре клиент/сервер так же легко, как приложения файлового сервера. Такое приложение в архитектуре клиент/сервер может быть традиционным решением, основанным на формах и отчетах, или решением на базе Internet, использующим страницы доступа к данным, либо сочетать в себе весь спектр возможностей. Проект Microsoft Access можно подключить к удаленной базе данных Microsoft SQL Server, локальной базе данных Microsoft SQL Server или к локальной установке Microsoft SQL Server 2000 Desktop Engine (MSDE).
Этот проект назван так потому, что содержит только программные или HTML-объекты базы данных: формы, отчеты, имена и местоположения страниц доступа к данным, макросы и модули. Объекты базы данных используются для создания приложений. В отличие от базы данных Microsoft Access проект Microsoft Access не содержит объекты, основанные на данных или на определениях данных: таблицы, представления [10] , схемы базы данных, сохраненные процедуры [11] , или определяемые пользователем функции [12] . Вместо этого перечисленные объекты базы данных хранятся в базе данных Microsoft SQL Server.
Поддерживаемые базы данных Microsoft SQL Server
Допускается подключение к одной из следующих баз данных Microsoft SQL Server:
• Microsoft SQL Server 2000 в операционных системах Microsoft Windows 2000 и Microsoft Windows 98 или более поздних версий;
• Microsoft SQL Server 2000 Desktop Engine в операционных системах Microsoft Windows 2000 и Microsoft Windows 98 или более поздних версий;
• Microsoft SQL Server 7.0 в операционных системах Microsoft Windows NT 4.0 или более поздней версии (с пакетом Microsoft Windows NT Service Pack версии 4 или более поздней) и Microsoft Windows 95 или более поздней версии;
• Microsoft Data Engine (MSDE) в Microsoft Windows NT версии 4.0 или более поздней версии и Microsoft Windows 95 или более поздней версии;
• Microsoft SQL Server 6.5 в Microsoft Windows NT 4.0 или более поздней версии (с пакетом SQL Server Service Pack 5 или более поздней версии).
...
При установке соединения с именованным сервером Microsoft SQL Server 2000 необходимо, чтобы на компьютере-клиенте была установлена версия 2.6 программного обеспечения компонентов доступа к данным Microsoft Data Access Components (MDAC). MDAC 2.6 можно установить с помощью Microsoft SQL Server 2000 Personal Desktop Edition из папки MSDE2000, находящейся на компакт-диске Microsoft Office XP.
Работа с проектом Microsoft Access
Работа с проектом Microsoft Access очень похожа на работу с базой данных Microsoft Access. Процесс создания форм, отчетов, страниц доступа к данным, макросов и модулей практически не отличается от используемого при создании базы данных Microsoft Access. Подключившись к базе данных Microsoft SQL Server, можно просматривать, создавать, изменять и удалять таблицы, представления, сохраненные процедуры, определяемые пользователем функции и схемы баз данных с помощью конструктора баз данных, конструктора таблиц, конструктора запросов, построителя запросов и текстового редактора SQL. Хотя пользовательский интерфейс для работы с этими объектами базы данных отличается от эквивалентных объектов баз данных в базе данных Microsoft Access, он настолько же прост. В проекте Microsoft Access содержится много мастеров, таких же, как в базе данных Microsoft Access, например мастер форм, мастер отчетов, мастер страниц и мастер масок ввода. Они помогают пользователю быстро создать прототипы или простые приложения, а также упрощают разработку сложных приложений.
Расширенные свойства
Если проект Microsoft Access подключен к базе данных Microsoft SQL Server 2000, то появляется возможность использования преимуществ расширенных свойств. Такие свойства сохраняют сведения о дополнительных атрибутах объектов базы данных Microsoft SQL Server, которые находятся в базе данных Microsoft SQL Server и обеспечивают в проекте Microsoft Access следующие дополнительные возможности:
• создание подстановок в столбце;
• отображение текста условий на значения в удобном виде для пользователя;
• форматирование данных и определение масок ввода;
• использование подтаблиц, сохранение порядка сортировки и фильтров, а также форматов режима таблицы для представлений, сохраненных процедур и встроенных определяемых пользователем функций.
Некоторые расширенные свойства, используемые Microsoft Access, не являются видимыми в проекте Microsoft Access, например свойство, устанавливающее ширину столбца в режиме таблицы. Другие расширенные свойства доступны в окнах свойств в конструкторе базы данных, таблицы и запроса для представлений, сохраненных процедур с одной инструкцией (за исключением свойств столбца), а также встроенных функций. Поскольку сохраненные процедуры с несколькими инструкциями, а также табличные и скалярные определяемые пользователем функции редактируются в текстовом редакторе SQL, они не поддерживают расширенные свойства.
По умолчанию Microsoft SQL Server не поддерживает наследование расширенных свойств. Столбец в представлении автоматически не получает одинаковые свойства со столбцом в базовой таблице. Однако при создании столбцов в представлении или функции путем копирования столбцов из таблицы и при копировании расширенных свойств из столбцов таблицы в свойства элемента управления формы и отчета проект Microsoft Access поддерживает наследование расширенных свойств.
...
Изменения в расширенных свойствах таблиц, представлений, сохраненных процедур и встроенных функций обнаружат все пользователи базы данных, поскольку такие свойства сохраняются в базе данных Microsoft SQL Server. Это означает, что при изменении формата подтаблицы он изменяется для всех пользователей, которые будут открывать ее в режиме таблицы
Возможные варианты использования проектов Microsoft Access
Существует несколько способов развертывания проекта Microsoft Access.
Использование проектов Microsoft Access в многопользовательской среде
В многопользовательской среде каждому пользователю часто необходима его собственная копия файла проекта Microsoft Access, подключенная к общей базе данных Microsoft SQL Server. Два или несколько пользователей не могут изменять объекты, такие как формы или отчеты, в одном и том же файле проекта Microsoft Access.
Проект Microsoft Access всегда открывается в монопольном режиме. При попытке открыть проект Microsoft Access, уже открытый другим пользователем, программа выводит предупреждение о том, что этот файл открыт в монопольном режиме, и предлагает воспользоваться копией, доступной только для чтения. В этом случае в проекте Microsoft Access невозможно изменение объектов.
При запуске приложения для совместной работы каждому пользователю предоставляется копия файла проекта Microsoft Access, то есть собственная копия форм, отчетов, страниц доступа к данным, макросов и модулей.
Независимо от того, имеет ли пользователь личную копию проекта Microsoft Access или нет, база данных Microsoft SQL Server, а также расположенные в ней таблицы, запросы и диаграммы фактически являются общими. Таким образом, в многопользовательской среде важно обеспечить достаточную защиту совместно используемых объектов базы данных, чтобы их целостность не нарушалась.
При использовании Microsoft Windows Terminal Server каждый пользователь может иметь личную область данных, определенную профилем пользователя на Terminal Server. Можно создать копию проекта в папке данных текущего приложения каждого пользователя, и при входе пользователя в Terminal Server ему будет предоставлена личная копия файла проекта Microsoft Access.
Совместное использование базы данных Microsoft SQL в Internet
Существует возможность создания страниц доступа к данным или вывода одного или нескольких объектов базы данных в генерируемый сервером файл HTML или статический файл HTML. Затем можно отобразить Web-страницы в обозревателе Microsoft Internet Explorer и получить доступ к данным через эти страницы.
Создание автономных приложений данных
Не всегда удается иметь доступ к базам данных организации. Однако часто требуется получить некоторые сведения в автономном режиме (то есть загрузить данные на удаленный компьютер, например на переносной или домашний), просмотреть и обновить их, а затем согласовать изменения при непосредственном доступе к базе данных. Используя набор продуктов Microsoft, разработчик и администратор базы данных могут создать приложение, которое позволит пользователям иметь автономный доступ к данным.
Использование файла проекта Microsoft Access и базы данных разными пользователями
Многие проекты приложений с одним файлом базы данных могут использовать несколько копий базы данных для разработки, тестирования и распространения. В течение всего срока использования производственной базы данных изменения и исправления сначала вносятся в базу для разработки, затем распространяются на тестовую базу данных и только после этого на производственную базу данных.
Может потребоваться создание проекта Microsoft Access и, после его подготовки к тестированию или производству, отключение от базы данных Microsoft SQL Server. Например, можно создать приложение проекта и подключить его к базе данных Microsoft SQL Server после распределения копий. Можно распределить файл проекта по пользователям, снабдить их инструкциями по открытию файла, а после этого выбрать в меню Файл команду Подключение для подключения к серверу, на котором расположена база данных.
Для создания баз данных, доступных пользователям, можно также применять команды Копировать файл базы данных или Перенести базу данных, макрокоманды или методы. Кроме того, создать базу данных Microsoft SQL Server можно с помощью файла сценария.
Использование разработчиками мастера развертывания из пакета Microsoft Office XP
При использовании Microsoft Office XP возможно применение мастера упаковки и развертывания для создания программы инсталляции, которая установит оба приложения проекта Microsoft Access и Microsoft SQL Server 2000 Desktop Engine.
Репликация базы данных Microsoft SQL Server
При использовании двух компьютеров, например стоящего в офисе и переносного, имеется возможность создавать реплики базы данных Microsoft SQL Server и поддерживать их синхронизацию. При этом находящиеся в разных местах пользователи могут одновременно работать каждый со своей копией основной реплики, а затем синхронизировать их по сети через удаленное подключение или Internet.
Резюме
1. В последней версии Access превратилась в распределенную систему. Это произошло в основном за счет развития и внедрения идеологии, связанной с проектами Microsoft Access.
2. Проект Microsoft Access является файлом данных Microsoft Access, обеспечивающим эффективный доступ к базам данных Microsoft SQL Server.
3. Используя проект Microsoft Access, можно создавать приложения в архитектуре клиент/сервер так же легко, как приложения файлового сервера. Такое приложение в архитектуре клиент/сервер может быть традиционным решением, основанным на формах и отчетах, или решением на базе Internet, использующим страницы доступа к данным, либо сочетать в себе весь спектр возможностей. Проект Microsoft Access можно подключить к удаленной базе данных Microsoft SQL Server, локальной базе данных Microsoft SQL Server или к локальной установке Microsoft SQL Server 2000 Desktop Engine (MSDE).
4. Проект Microsoft Access допускает подключение к определенному набору баз данных Microsoft SQL Server.
5. Работа с проектом Microsoft Access очень похожа на работу с базой данных Microsoft Access. Процесс создания форм, отчетов, страниц доступа к данным, макросов и модулей практически не отличается от используемого при создании базы данных Microsoft Access. Подключившись к базе данных Microsoft SQL Server, можно просматривать, создавать, изменять и удалять таблицы, представления, сохраненные процедуры, определяемые пользователем функции и схемы баз данных с помощью конструктора баз данных, конструктора таблиц, конструктора запросов, построителя запросов и текстового редактора SQL.
6. Несколько способов развертывания проекта Microsoft Access рассматривались в этой главе.
Глава 9 Общие вопросы программирования в Access 2002
Сравнительная характеристика языков программирования в Access
Access пользователь может работать с несколькими языками программирования:
• SQL (Structured Query Language) – структурированным языком запросов. Это формальный стандартизованный язык высокого уровня, содержащий средства непроцедурной (не требующей программирования) спецификации запросов;
• макросами;
• VBA (Visual Basic for Applications) – объектно-ориентированным языком программирования.
• XML (Extensible Markup Language) – расширяемым языком разметки, представляющим собой удобный способ сбора, адаптации и совместного использования данных в неограниченном числе приложений и форматов.
Язык SQL
Язык SQL – это внутренний язык Access 2002, на котором, в частности, формулируются запросы. В принципе SQL используется не только в среде Access 2002; он вообще широко применяется в работе с реляционными базами данных. Поскольку сегодня подавляющее большинство БД относится именно к этому классу, язык SQL значительно облегчает пользователю работу с различными СУБД.
Запросы – основной способ получения сведений из базы данных. С помощью запроса вы можете отобрать определенную информацию и рассортировать ее по значениям полей. Очень важно, что запросы позволяют фильтровать данные, то есть выбирать именно ту информацию, которая удовлетворяет определенным, заранее заданным условиям. Запросы можно применять при создании форм, отчетов, страниц доступа к данным. Использовать запросы удобно при разработке таблиц и добавлении новых записей в уже существующие таблицы, при удалении записей, поиске дублирующихся данных и т. д. Работая с языком SQL, вы исходите из существующей организации БД и более или менее стандартного набора операций, хотя структура самого запроса иногда бывает достаточно сложной. Правда, в запросе нежелательно использовать слишком разветвленные логические выражения: формального запрета на них нет и запрос построить можно, однако получившаяся структура будет громоздкой и неудобной. (Для подобных случаев в Access есть средства программирования.) Чтобы запустить запрос, следует создать событие – команду, которая распознается формой, элементом управления формы или отчета. Таким событием может стать, например, щелчок по какой-либо конкретной кнопке. Однако пользователь должен еще задать область применения запроса, так как он не запускается автоматически даже при возникновении события.
Макросы
Макросы, или макрокоманды, представляют собой заранее созданные списки действий – программы, которые выполняются после щелчка пользователя по кнопке или после других определенных действий (возникновение ошибки, открытие, закрытие элемента управления и т. д.). Каждое действие макроса выполняет определенную операцию: например, установку значения, открытие или закрытие формы, диалогового окна и др. Макрос предназначен для объединения нескольких различных действий, представляемых макрооператорами, в одну процедуру, которая легко может быть вызвана. В отличие от SQL макрооператоры тесно связаны с командами данного программного продукта, в частности Access.
В макросах все команды обычно выполняются по очереди. Исключением является ситуация, когда в макрос введено конкретное логическое условие, которое может изменить последовательность операций.
Макрос в среде Access состоит из перечня действий, которые в пошаговом режиме выполняются в случае наступления определенного события. Допустим, макрос запускается, когда пользователь щелкает по командной кнопке, закрывает форму или активизирует панель управления текстовым документом, открывшимся в окне. Макрос может выполняться также при выполнении тех или иных условий. Например, условные макросы могут отображать окно сообщения, если вводимые в поле данные имеют определенное значение. Макросы создаются в специальном окне макросов – Построитель макросов.
Сопоставляя возможности макросов и языка SQL, отметим, что макросы могут использоваться для ситуаций, привязанных к событиям [13] , возникающим независимо от пользователя, для выполнения разветвляющихся операций (например, в условных логических выражениях). Макросы удобны для простых ответов на события, но имеют свои ограничения и не всегда помогают пользователю справляться с разнообразным сложностями, возникающими в реальной практике, особенно если речь идет об Access. Например, нельзя использовать макрос для того, чтобы задать обработку события или выполнить цикл действий по записи транзакций. Макрос не возвращает значение, поэтому не может применяться для извлечения введенной пользователем информации, рассчитанного значения или результата сравнения.
Следует сказать, что отмеченные ограничения в Access 2002 надо рассматривать не как жесткое разделение областей применения с четко очерченными границами, а скорее как некую тенденцию, которая может соблюдаться отнюдь не всегда, и эти границы размываются. Так, в ряде случаев язык SQL может быть использован безотносительно к запросу, для решения каких-то вспомогательных служебных задач, например для того, чтобы внести какие-либо новые функции, изменить настройку элементов управления и т. д. Примеры таких применений будут показаны далее. При этом достаточно широко может использоваться тот же аппарат событий, к которому «привязаны» макросы.
Теоретически нет препятствий к тому, чтобы включить в макрос также и процедуру VBA. Однако на деле все обстоит скорее наоборот: макросы используются как составная часть этих программ, тем более что любой макрос легко конвертировать или включить в процедуру VBA.
Процедуры VBA
Как уже отмечалось, макросы обычно представляют собой только линейную последовательность действий. Но на практике этого недостаточно – требуется весь арсенал средств программирования: ветвления и циклы, вызов вспомогательных процедур и передача параметров, организация диалога с пользователем, проверка и изменение состояния различных элементов документа и т. д.
По сравнению с SQL и макросами язык VBA является более современным, развитым и сложным, поэтому может использоваться для выполнения любых действий в ходе работы приложения. Данный язык включает в себя объекты, семейства, события, методы, процедуры, операторы и свойства. Программа VBA – это процедура, которая выполняет определенную операцию или рассчитывает и возвращает значение. Кроме того, очень важно, что VBA-язык программирования, управляемый событиями. Иначе говоря, с помощью программы VBA можно установить необходимую реакцию объекта Access на определенное событие. Итак, язык VBA позволяет сделать все, что выполняют макросы, и даже существенно больше. В принципе с помощью VBA можно создавать и запросы. Однако специализированный язык, каким является SQL, приспособлен для этого значительно лучше. (Ниже будет показано, что использование языка SQL в самом деле заметно упрощает построение запросов.)
Существуют два вида процедур VBA: подпрограммы (subprocedures) и функции.
Подпрограммы выполняют одну или больше операций, однако не возвращают значение. Функции не только выполняют операции, но и возвращают значение. В справочной системе Access вы найдете множество примеров процедур событий. Эти процедуры можно скопировать и связать со свойствами события элемента управления. Затем вы можете изменить код и имена переменных, чтобы они соответствовали вашему приложению. Для создания собственных процедур используйте построитель программ (см. главу 12).



























