![](/user_photo/8997_nLds_.jpg)
Хомоненко А.Д., Цыганков В.М., Мальцев М.Г. - Базы данных. Учебник для высших учебных заведений (6-е изд.) - 2009
.pdf10. СУБД Access 2002 |
3 0 3 |
жение или многоточие «...». Если логическое выражение в строке макрокоманды истинно, то выполняется эта макрокоманда и все последующие, в поле У с л о в и е ( C o n d i t i o n s ) которых стоит многоточие. В случае ложности логического выражения пропускается текущая макрокоманда и все непосредственно следующие за ней макрокоманды, содержащие многоточие в поле
в и е ( C o n d i t i o n s ) .
Для удобства хранения связанные по смыслу макросы можно объединять в группы. Полное имя макроса из группы включает в себя имя группы и отделенное от него точкой имя макроса. Макрокоманды в макросах представляют собой операции с параметрами из фиксированного в СУБД списка.
Все множество макрокоманд Access по функциональному принципу можно условно разделить на следующие группы:
•открытие и закрытие таблиц, форм и отчетов;
•вывод данных;
•выполнение запроса;
•проверка истинности условий и управление выполнением макрокоманд;
•установка значений;
•поиск данных;
•построение специального меню и выполнение команд меню;
•управление выводом на экран и фокусом;
•сообщение пользователю о выполняемых действиях;
•переименование, копирование, удаление, импорт и экспорт объектов;
•запуск других приложений.
Ввод макрокоманд пользователем максимально облегчен, поскольку названия самих макрокоманд, а также значения многих аргументов можно не только вводить с клавиатуры, но и выбирать из списка (в ячейке столбца М а к р о к о м а н д а ( A c t i o n ) или поля аргумента макрокоманды). Выражения в области аргументов и условий выполнения макрокоманд можно непосредственно вводить с клавиатуры или использовать Построитель выражений. Процесс ввода (выбора из списка) макрокоманд и их аргументов сопровождается подсказкой в правой нижней части окна создания макроса (рис. 10.17). Это существенно облегчает ввод макрокоманд. Для добавления в макрос других макрокоманд нужно в области ввода макрокоманд перейти на следующую строку. Макрокоманды выполняются в порядке их расположения в бланке.
Замечание.
Существует прием быстрого создания макроса, выполняющего действия над конкретным объектом. Он состоит в выборе объекта (таблицы, формы, макроса и пр.) в окне базы данных и перемещении его с помощью мыши в ячейку макрокоманды в окне макроса. При переносе макроса в ячейку макро-
304 |
Часть 3. Современные СУБД и их применение |
команды вводится макрокоманда, запускающая этот макрос, а при переносе других объектов — в макрос добавляется макрокоманда открытия объекта.
Завершая создание макроса, требуется задать его имя. Макрос с именем AutoExec запускается автоматически при открытии базы данных. Временно отменить автоматический запуск этого макроса можно с помощью удержания клавиши <Shift> в момент открытия БД. Используя возможности автозапуска макроса, удобно выполнять различные подготовительные операции над БД после ее открытия. К таким операциям относятся вывод заставки (например, формы с картинкой) и открытие главной управляющей кнопочной формы.
Созданные и хранимые в БД макросы могут запускаться пользователем либо вызываться из других макросов или программ на Visual Basic, а также при возникновении определенных событий в БД. Событие — это любое распознаваемое объектом действие, на которое можно задать реакцию. События возникают в результате действий пользователя, выполнения инструкций Visual Basic или генерируются системой Access. Типичными событиями в Microsoft Access являются, например, нажатие кнопки мыши, изменение данных, а также открытие/закрытие формы или отчета.
Автоматический вызов макросов производят в случае наступления событий в таких объектах БД, как формы и отчеты. Всего существует около 40 событий. По функциональному назначению события можно разделить на следующие группы:
•события данных (Data Events) возникают при вводе, удалении или изменении данных в форме или элементе управления, а также при перемещении фокуса с одной записи на другую;
•события клавиатуры (Keyboard Events) возникают при вводе с клавиатуры, а также при передаче нажатий клавиш с помощью макрокоманды «КомандыКлавиатуры» (SendKeys) или инструкции SendKeys;
•события ошибки и таймера (Error and Timing Events) используются при обработке ошибок и синхронизации данных в формах;
•события мыши (Mouse Events) возникают при действиях с мышью, например при нажатии кнопки мыши или при удержании кнопки в нажа-
том положении;
•события фильтра (Filter Events) возникают при создании или применении фильтра в форме;
•события печати (Print Events) возникают при печати отчета или при его форматировании для печати;
•события фокуса (Focus Events) возникают, когда форма или элемент управления теряют/получают фокус, а также в момент, когда они становятся активными/неактивными;
•события окна (Window Events) возникают при открытии, изменении размеров или закрытии формы или отчета.
10. СУБД Access 2002 |
305 |
Для обработки событий в БД Access можно использовать макросы или процедуры обработки событий (на языке Visual Basic для приложений). Чтобы организовать обработку события, нужно в ячейке свойства этого события объекта (формы, отчета или элемента управления) ввести имя макроса или выбрать элемент [ П р о ц е д у р а о б р а б о т к и с о б ы т и й ] и нажать кнопку |щ Построителя (рис. 10.17). В последнем случае в соответствующем окне можно написать нужную VBA-программу.
Форма |
|
|
Макет | Данные |
События | Другие | Все } |
|
Текущая запись |
6 |
|
До вставки |
||
|
||
После вставки |
. . . |
|
До обновления |
|
После обновления |
|
Удаление |
|
До подтверждения Del |
|
После подтверждения Del ..... |
|
Открытие |
'Процедчрэ обработки событий |
Загрузка |
|
Изменение размера |
|
Выгрузка |
|
Закрытие |
|
Рис. 10.17. Создание процедуры обработки события
Различные объекты БД имеют свой перечень событий, которые могут возникать в процессе работы с ними в различных режимах. Каждое действие может явиться причиной ряда других событий, возникающих в определенной последовательности. Понимание того, когда и в какой последовательности возникают события, существенно, поскольку порядок событий определяет условия и очередность выполнения макросов и процедур обработки событий.
Название свойства, как правило, происходит от имени события или даже совпадает с ним. Так, форма или отчет имеют свойство О т к р ы т и е ( О п О р е п ) , позволяющее задать макрос или процедуру обработки события при возникновении события Открытие (Open). Имя макроса или процедуры обработки события является значением свойства.
Для изменения процедуры обработки события нужно выполнить следующее: 1. В режиме Конструктора формы/отчета открыть окно свойств объекта
или его элемента и выбрать вкладку События (Events).
2.Выбрать свойство события, в ответ на которое должна выполняться процедура, и нажать кнопку Построителя рядом с ячейкой свойства. Откро-
ется окно диалога П о с т р о и т е л ь (Builder) .
3 06 |
Часть 3. Современные СУБД и их применение |
3. Выбрать д в о й н ы м щелчком |
кнопки мыши элемент П р о г р а м м ы |
( P r o g r a m s ) . В окне модуля откроется процедура (если пользователь не создавал ее ранее — заготовка процедуры, содержащая инструкции Sub
и E n d S u b ) .
4.Ввести текст программы, которая должна выполняться в ответ на событие.
Создание модулей
Для автоматизации выполнения некоторых действий в простейших приложениях используют макросы. В некоторых случаях обойтись макросами не удается и приходится прибегать к написанию VBA-программ. К примеру, использование программирования может помочь в решение следующих задач:
•обработка ошибок в приложении;
•создание собственной функции обработки, например, округления значения;
•получение прямого доступа к функциям Windows API;
•создание приложения с высокой производительностью (программы компилируются и выполняются быстрее, чем макросы);
•создание новых объектов БД во время работы приложения.
VBA-программы хранятся в модулях БД, которые бывают двух видов:
• стандартные — создаются пользователем и видны во вкладке БД М о д у -
л и ( M o d u l e s ) ;
•модули форм/отчетов — создаются автоматически и являются частью этих объектов (форм/отчетов).
Программы на языке VBA составляются в виде процедур двух типов: функций (описатель Function) и подпрограмм (описатель Sub). Процедура может иметь параметры, через которые ей передаются значения. Основное отличие функции от подпрограммы состоит в том, что первая может в точку вызова вернуть единственное значение, вторая — значений, не возвращает. Кроме того, функцию можно вызывать из различных мест, в том числе из макросов и выражений, используемых в запросах, таблицах (в условиях на значение (Validation Rule)) или формах. Подпрограмму можно вызвать из функции или как процедуру обработки события в форме или отчете.
Стандартные модули используются для создания и хранения процедур, вызываемых из различных объектов БД. Модули форм/отчетов предназначены для создания и хранения процедур, используемых в форме/отчете. В каждом модуле формы/отчета в БД содержатся заготовки процедур обработки событий, которые вызываются в ответ на события, возникающие в форме
10. СУБД Access 2002 |
3 0 7 |
или отчете. Пользователь может создавать собственные процедуры обработки событий, добавляя тексты VBA-программ в эти заготовки.
Для создания стандартного модуля требуется в окне открытой базы дан-
ных (рис. 10.5) выбрать вкладку Модули (Modules) и нажать кнопку Создать
( N e w ) . Начать создание модуля можно также, задав в пункте В с т а в к а ( I n s e r t ) главного меню Access команду М о д у л ь ( M o d u l e ) .
Для редактирования модуля формы/отчета в окне открытой БД нужно выделить мышью соответствующий объект или перевести его в режим Конструктора. Затем в меню В и д ( V i e w ) выбрать пункт П р о г р а м м а ( C o d e ) или нажать кнопку панели инструментов. Ввод и редактирование текстов программ стандартного модуля или модуля формы/отчета производится в окне модуля (рис. 10.18).
Рис. 10.18. Окно модуля
В верхней части окна модуля находятся следующие два раскрывающихся списка: список объектов (слева) и список процедур (справа).
1. Список объектов. При редактировании модуля формы/отчета в этом списке можно выбрать форму/отчет (целиком), необходимый раздел или элемент управления, способный генерировать событие. Для выбора раздела описания имеется элемент [ О б щ а я о б л а с т ь ] ( [ G e n e r a l ] ) . Стандартный модуль в списке О б ъ е к т содержит только элемент [ О б щ а я о б л а с т ь ] .
2. Список процедур — есть список процедур выбранного объекта из первого списка, которые можно редактировать. Выбранная в этом списке процедура выводится в текстовой области окна модуля. На рис. 10.19 приведена процедура funl подачи звукового сигнала.
Сохранить введенные тексты программ можно командой С о х р а н и т ь ( S a v e ) пункта меню Ф а й л (File), с помощью кнопки сохранения панели инструментов или закрытием окна модуля с последующим подтверждением о сохранении.
3 0 8 Часть 3. Современные СУБД и их применение
Созданные и находящиеся в файле базы данных VBA-программы при первом обращении к ним автоматически компилируются Access, после чего вызываются на выполнение. Для ускорения работы приложения VBA-програм- мы можно заранее откомпилировать и сохранить в базе данных вместе с исходными текстами. Для этого нужно открыть любой модуль в БД и выполнить команду О т л а д к а | К о м п и л и р о в а т ь ( D e b u g | C o m p i l e ) . После этого, находясь в окне модуля (рис. 10.19), нужно сохранить результат компиляции с помощью команды Ф а й л | С о х р а н и т ь ( F i l e | S a v e ) . Платой за ускорение вызова VBA-программ БД является увеличение размера mdbфайла базы данных.
10.5. Работа с гиперссылками
В числе возможных типов полей таблиц Access 2002 имеется сравнительно недавно появившийся, но в то же время весьма полезный тип данных — Г и п е р с с ы л к а ( H y p e r l i n k ) . Он позволяет хранить в поле простые или сложные ссылки на файлы, документы и другие объекты, находящиеся как в базе данных, так и вне нее.
Характеристика гиперссылки
Гиперссылки могут содержать URL-адрес в сети Internet или intranet или сетевой маршрут в формате UNC к файлу на сервере локальной сети или на диске локального компьютера. Ссылка может указывать на файл в формате HTML или в формате, поддерживаемом приложением OLE или ActiveX, установленном на компьютере.
Поле гиперссылки по структуре хранимой информации является текстовым и может содержать до 2048 символов. Текст гиперссылки можно считать ее значением. Оно включает в себя до трех частей: описание (необязательное), основной адрес гиперссылки и дополнительный адрес (необязательный). Составные части отделяются друг от друга символом числа (#). Описание представляет собой текст, отображаемый в поле или элементе управления, кроме режима редактирования гиперссылки. Адрес гиперссылки — это URLили UNC-адрес (например: http:// home.netsca])e.com/comprod/index.html или \\Serv\Market\Reclama.doc). Дополнительный адрес задает именованный объект внутри файла (например, диапазон ячеек в рабочем листе Excel или закладка в документе Word).
По технике работы поле гиперссылки аналогично полю О б ъ е к т O L E ( O L E O b j e c t ) . В операциях создания и редактирования оно имеет сходство с обычным текстовым полем. Поля гиперссылок, как и другие поля, создаются в таблицах, а затем размещаются в других объектах базы данных: формах, запросах и отчетах. Чтобы увидеть поле гиперссылки в режиме просмотра таблицы, откроем таблицу Поставщики учебной базы «Борей» и сделаем видимой ко-
10. СУБД Access 2002 |
309 |
лонку Основная страница (рис. 10.19). В этой колонке имеются гиперссылкиТ— текст с подчеркиванием.
Н П о с т а в щ и к и : т а б л и ц а |
|
|
|
|
|
и г а п |
|||
|
|
|
|
|
|
|
|||
Область |
Индекс |
| * Страна |
Телефон |
"Факс |
Основная страница А |
||||
L A |
70117 |
|
США |
(100) 555-4822 |
|
Cajun.htm |
|
|
|
Ml |
48104 |
|
США |
(313) 555-5735 |
(313) 555-3349 |
|
|
|
|
|
100 |
|
Япония |
(03) 3555-5011 |
|
|
|
|
|
Asturias |
33007 |
|
Испания |
(98) 598 76 54 |
|
|
|
|
|
|
545 |
|
Япония |
(06)431-7877 |
|
Mavumi (на Web) |
|
|
|
Victoria |
3058 |
|
Австралия |
(03) 444-2343 |
(03) 444-6588 |
|
|
|
|
|
M14 GSD |
|
Великобритания |
(161)555-4448 |
|
|
|
|
|
|
S-345 67 |
|
Швеция |
031-987 65 43 |
031-987 65 91 |
|
|
|
|
|
5442 |
|
Бразилия |
(11)555 4640 |
|
|
|
|
|
|
101785 |
|
Россия |
(095) 998-4510 |
|
|
|
|
|
|
60439 |
|
Германия |
(069) 992755 |
|
Plutzer (на Web) |
|
|
|
|
27478 |
|
Германия |
(04721)8713 |
(04721)8714 |
|
|
|
|
|
48100 |
|
Италия |
(0544)60323 |
(0544) 60603 |
Formaggi.htm |
|
|
|
|
1320 |
|
Норвегия |
(0)2-953010 |
|
|
|
|
|
OR |
97101 |
|
США |
(503) 555-9931 |
|
, ..... |
|
... |
i |
| Запись: к 1 4 |
|
• 1 и 1**1 из-29 |
П Д 1 АР. С 7 |
|
|
Zi |
|||
1 |
|
|
J |
, |
± |
Л |
|||
|
J.I |
|
|
|
Рис. 10.19. Гиперссылки в таблице
Некоторые HTML-доку менты, на которые имеются ссылки из поля гиперссылки таблицы Поставщики, размещаются в той же папке, что и база данных «Борей». Еще один пример использования гиперссылки в этой базе данных — кнопка Просмотр списка товаров в форме Товары.
Замечание.
В случае, если у вас установлена учебная база данных Northwind.mdb, в освоении приемов работы с гиперссылками вам поможет таблица Suppliers (поле Home Page).
Основные операции по работе с гиперссылками можно выполнить, используя контекстное меню поля гиперссылки. Для этого надо установить указатель мыши на поле гиперссылки, вызвать контекстное меню и выполнить команду Г и п е р с с ы л к а ( H y p e r l i n k ) . В число команд входят команды, позволяющие открыть ссылочный документ, копировать гиперссылку в буфер обмена, добавить гиперссылку в папку И з б р а н н о е ( F a v o r i t e s ) , изменить гиперссылку или ее описание.
Создается поле гиперссылки при описании или изменении структуры таблицы БД. Для этого типа поля требуется в области указания типа поля ввести или выбрать из списка слово Г и п е р с с ы л к а ( H y p e r l i n k ) . Рассмотрим, как активизировать, вставить и редактировать значение поля гиперссылки.
310 |
Часть 3. Современные СУБД и их применение |
Активизация гиперссылки
Активизация гиперссылки представляет собой переход по адресу, заданному выбранным значением поля гиперссылки. Для активизации гиперссылки можно подвести указатель мыши к значению поля гиперссылки и щелкнуть левой кнопкой или, выделив значение поля с помощью клавиш управления курсором (например, клавиши <ТаЬ>) и нажать клавишу <Enter>. В результате Access запускает соответствующее приложение и передает ему основной и дополнительный адреса. Если проделать это со значением гиперссылки в верхней записи таблицы (рис. 10.19), то будет вызван Internet Explorer. После завершения операций с объектом, на который был выполнен переход, происходит возврат в точку вызова.
Вставка гиперссылки
Чтобы начать вставку гиперссылки в пустое поле, нужно, прежде всего, установить текущим поле гиперссылки нужной записи таблицы, для чего переместить курсор в это поле (клавишами управления курсором или мышью). После этого можно выполнить следующее:
•начать непосредственный ввод адреса гиперссылки, опуская описательную часть. Это простой, но не всегда удобный способ, особенно если точно адрес не известен;
•с помощью контекстного меню или команды меню Вставка | Гиперссылка (Insert | Hyperlink) вызвать диалоговое окно Добавить гиперссылку (Insert НурегНпк)(рис. 10.20).
Insert Hyperlink |
|
|
|
|
|
Link to: |
Text to display: JiFriends Live Browse |
ScreenTfe... |
| |
||
Easting File or |
Look in: |
|
Samples |
|
|
|
|
Analyze Sales.htm |
|
|
|
Web Page |
Current |
|
Bookmark,. |
|
|
|
|
EMPID1.BMP |
|
|
|
|
Folder |
|
|
|
|
|
^ |
EMPID2.BMP |
|
|
|
|
|
|
|
||
Object in This |
|
|
EMPID3.BMP |
|
|
Browsed |
^ |
EMPID4.BMP |
|
|
|
Database |
|
|
|||
|
Pages |
^ |
EMPID5.BMP |
|
|
|
|
^ |
EMPID6.BMP |
|
|
Create New |
Recent |
^ |
EMPID7.BMP |
|
|
££ EMPID8.BMP |
|
|
|||
Page |
Files |
|
|
||
•41 EMPID9.BMP |
|
|
|||
|
|
|
|
||
Л |
Addrgss: |
wsapi/ifBrowse. dll?type=L&kw=Sports+Talk&catwords=5earch |
• |
|
|
|
|
|
|
|
|
Е-maH Address |
|
|
OK |
Cancel |
|
|
|
|
|
Рис. 10.20. Диалоговое окно вставки гиперссылки
10. СУБД Access 2002 |
311 |
В появившемся диалоговом окне с помощью списка слева следует сначала выбрать тип гиперссылки: существующий файл или страница в Интернете (Existing File or Web Page), объект этой базы данных (Object in This Database), страница доступа к данным, создаваемая тут же (Create New Page), либо адрес электронной почты (E-mail Address). После этого в центральной части окна необходимо уточнить параметры вставляемой гиперссылки в зависимости от ее типа.
Так, в первом случае это может быть имя файла в текущей папке (Current Folder). Если же ссылочным документом является база данных Access, то в качестве возможных объектов могут выступать все ее объекты: таблицы, запросы, формы, отчеты, страницы доступа к данным, макросы и модули. Сохранение создаваемой гиперссылки в таблице происходит при нажатии кнопки ОК.
Редактирование гиперссылки
Для перехода к редактированию гиперссылки можно поступить следующим образом.
1.Щелкнуть мышью на соседнем слева поле в области просмотра таблицы
инажать клавишу <ТаЬ>. Гиперссылка будет выделена.
2.Нажать клавишу <F2>. Произойдет переход к режиму посимвольного редактирования текста гиперссылки. В поле гиперссылки появится текстовая строка, доступная для редактирования (рис. 10.21).
m П о с т а в щ и к и : т а б л и ц а |
|
|
|
|
М З Е З |
||
Область | |
Страна |
| Телефон |
| |
Основная |
страница |
[± |
|
|
Россия |
(095) 325-2222 |
|
|
|
|
|
LA |
США |
|
(100) 555-4822 |
Cajun.htm |
|
|
|
Ml |
США |
|
(313) 555-5735 |
|
|
|
—J |
|
Япония |
(03) 3555-5011 |
Таблица1 #.А. Д. ,\test1 \db11. mdb#Table Таблица11 |
||||
Asturias |
Испания |
(98) 598 76 54 |
|
|
|
|
|
|
Япония |
(06) 431-7877 |
Mayumi (на Web) |
|
|
||
Victoria |
Австралия |
(03) 444-2343 |
|
|
|
|
|
|
Великобритания (161) 555-4448 |
|
|
|
|
||
|
Швеция |
031-987 65 43 |
|
|
|
|
|
|
Бразилия |
(11)555 4640 |
|
|
|
|
|
|
Россия |
(095) 998-4510 |
|
|
|
|
|
|
Германия |
(069) 992755 |
Plutzer (на Web) |
|
Ч |
||
j Запись: И 1 4 |
4 . |
• I И !•*! из 29 |
<l |
|
I |
Л/, |
|
|
Л |
|
|
Рис. 10.21. Редактирование гиперссылки
Далее редактированием можно изменить содержимое текста гиперссылки. Как видно из рис. 10.21, описание гиперссылки находится в начале строки и отделено от основного адреса символом «#».
3 12 |
Часть 3. Современные СУБД и их применение |
|
10.6. Использование языка SQL |
Для построения и выполнения произвольной запросной функции в Access очень удобным и доступным является язык запросов по образцу QBE, поддержанный мощным интерфейсом пользователя. Язык SQL в некотором роде скрыт от пользователя, хотя весьма важен при составлении VBA-программ в приложениях Access. В этом подразделе опишем, как используется язык SQL в различных объектах БД Access. Краткая справочная информация по реализованному в Access диалекту SQL приводится в Приложении 2.
Особенности |
применения запросов SQL |
Напомним, что запросом |
SQL называют запрос, создаваемый с помощью |
инструкции SQL. Примерами запросов SQL являются запросы на объединение, запросы к серверу, управляющие и подчиненные запросы.
Запрос па объединение — это такой запрос, в котором объединяются поля (столбцы) одной или нескольких таблиц или запросов в одно поле или столбец в результирующем наборе записей. Например, шесть продавцов каждый месяц представляют руководству описи имеющихся товаров. Создав запрос на объединение, можно объединить эти описи в результирующем наборе записей, а затем разработать запрос на создание таблицы, основанный на запросе на объединение.
Запрос к серверу выполняет передачу через ODBC команд SQL-серверу, например, Microsoft SQL Server. Запросы к серверу позволяют непосредственно работать с таблицами на сервере вместо их присоединения. Результатом выполнения запроса к серверу может быть загрузка записей или изменение
данных |
|
|
Управляющий |
запрос |
создает или изменяет объекты базы данных, такие как |
таблицы Access или SQL Server. |
||
Подчиненный |
запрос |
состоит из инструкции S Q L S E L E C T , находящейся |
внутри другого запроса на выборку или запроса на изменение. Эти инструкции вводятся в строку «Поле» бланка запроса для определения нового поля или в строку «Условие отбора» для определения условия отбора поля. Подчиненные запросы используются для выполнения следующих действий:
•проверка в подчиненном запросе существования некоторых результатов
спомощью зарезервированных слов E X I S T S или N O T EXISTS;
•поиск в главном запросе любых значений, которые равны, больше или меньше значений, возвращаемых в подчиненном запросе (с помощью зарезервированных слов ANY, IN или ALL);
•создание подчиненных запросов внутри подчиненных запросов (вложенных подчиненных запросов).
Язык SQL в Access может применяться при разработке экранных форм, отчетов, а также при создании макрокоманд и программ на VBA.