access 2000. Проектирование баз данных-ocr

271
Вием П. С ( ля

Upload: sapiraa

Post on 22-Jan-2016

708 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Access 2000. Проектирование баз данных-OCR

Вием П. С

(

ля

Page 2: Access 2000. Проектирование баз данных-OCR

Дубнов П. Ю.

Access 2 0 0 0 Проектирование баз данных

Москва, 2000

Page 3: Access 2000. Проектирование баз данных-OCR
Page 4: Access 2000. Проектирование баз данных-OCR

ББК 32.973.26-018.2 Д79

Дубнов П. Ю. Д79 Access 2000. Проектирование баз данных. - М.: ДМК, 2000. - 272 с : ил.

ISBN 5-89818-091-5

В книге рассматривается широкий круг вопросов, связанных с использо­ванием программной среды Access 2000, которая является составной час­тью пакета Office 2000 и предназначена для создания банка данных.

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

Детально обсуждаются вопросы создания интегрированной базы данных в среде Access 2000: формирование БД с нуля, конвертирование в программ­ную среду баз данных, созданных в ином программном окружении - Clarion, FoxPro.

Представлены возможности формирования разнообразных запросов к ин­тегрированной базе данных Access 2000 с использованием языка SQL и мак­росов.

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

ББК 32.973.26-018.2

Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав.

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

ISBN 5-89818-091-5 © Дубнов П. Ю., 2000 ©ДМК, 2000

Page 5: Access 2000. Проектирование баз данных-OCR

Содержание

Введение 9

Глава I Постановка проблемы 11

Режимы функционирования банка данных в производственных условиях 11

Пользовательские запросы к банку данных 12 Проблемы, связанные с выбором СУБД 12 Вопросы, рассмотренные в настоящей книге 15

Резюме 15

Глава II Предпроектная структуризация информации 16

Состав информации 17

Что понимать под структуризацией информации 17 Показатели 18 Необходимость структуризации 19 Технология структуризации 20 Пример структуризации данных 21

Проектирование логической структуры.бозы данных 23 Распределение полей по файлам 24 Файлы и связи между ними 24

Резюме 26

Глава III Создание таблиц новой базы данных 27

Варианты создания таблиц 27

Формирование таблицы в режиме ввода 29 Ввод данных 29

Page 6: Access 2000. Проектирование баз данных-OCR

4 Access 2000

Создание таблицы в режиме конструктора 31 Окно конструктора таблиц 31 Типы данных и их свойства 32 Свойства полей 35 Установка значений свойств Input Mask и Format 35

Создание и использование полей подстановки 41 Подстановка в режиме конструктора таблиц 42 Подстановка в режиме таблицы 45

Организация связей между таблицами 46 Создание связей между таблицами 46 Вложенные таблицы данных 50 Мастер печати связей 52

Резюме 54

Глава IV Создание форм новой базы данных 55

Использование автоформы 56

Создание формы с помощью мастера форм 58

Работа в режиме конструктора 64 Заголовок формы 66 Командные кнопки 69

Начальная форма при открытии базы данных или приложения 75

Построение запросов для отбора нужных данных 75

Ввод и корректировка данных 79

Использование гиперссылок 82 Access и географические карты 82 Поиск карты 83 Установка гиперссылок в базе данных 84 Установка гиперссылки из карты в базу данных 86

Резюме 90

Глава V Создание отчетов новой базы данных 91

Использование функции автоотчета 92

Включение подчиненного отчета 92

Группировка записей 95

Page 7: Access 2000. Проектирование баз данных-OCR

Содержание 5

Статическая копия отчета 99 Инструменты для работы с копией 100 Преимущества использования 100 Создание статической копии отчета 101

Резюме' 103

Глава V I Создание страниц доступа к данным 105

Свойства страниц доступа к данным 105

Страницы доступа к сгруппированным данным 107

Использование страниц доступа к данным 108 Страница доступа к данным: вводданных 108 Создание и открытие страницы доступа к данным 108 Создание страницы доступа к данным в режиме автостраницы 108 Создание страницы доступа к данным с помощью мастера страниц 109 Создание страницы доступа к данным в режиме конструктора 114 Открытие страницы доступа к данным в окне базы данных 1 17 Открытие страницы доступа к данным в Internet Explorer 1 1 8 Передача страницы доступа к данным по электронной почте 118 Экспорт страницы доступа к данным в существующую базу данных 119 Список полей 1 19 Сводная таблица 119 Создание сводной таблицы для страницы доступа к данным 120

Резюме 121

Глава VI I Конвертирование баз данных из других программных сред 123

Процесс конвертирования баз данных 124

Импорт базы данных БД ЧЭС 126 Первый этап: импорт данных из среды Clarion в dBase 126 Второй этап: импорт данных из dBase в Access 2000 127 Импорт файлов 128

Импорт базы данных Контроль ЧС 135 Первый этап: импорт данных из FoxPro в Access 97 136 Второй этап: импорт данных из Access 97 в Access 2000 139

Резюме 140

Page 8: Access 2000. Проектирование баз данных-OCR

6 Access 2000

Глава VI I I Общие вопросы программирования в Access .... 141

Сравнительная характеристика языков программирования в Access 141

Язык SQL 141 Макросы 142 Процедуры VBA 143

Выбор языка программирования 144

Резюме 145

Глава IX Программирование на языке SQL 146

Типы запросов 146

Запросы на выборку 148

Простые запросы 148 Представление запроса на языке SQL 151 Запросы с использованием групповых операций 153 Запросы с дополнительными условиями 156 Запросы с параметрами 165 Запросы с участием нескольких связанных таблиц 167 Пояснения к инструкции SQL 169

Создание объединенной выборки 173

Пример сложного запроса 1 74 Запрос на создание таблицы 174 Запрос на добавление записей в таблицу 1 76

Запрос на удаление записей 179

Удаление дублирующихся записей 181 Запрос на поиск повторяющихся записей 181 Удаление повторяющихся записей 183 Ввод нового поля 185 Запрос на обновление записей 186 И снова - запрос на добавление 187

Перекрестный запрос 190

Построение перекрестного запроса с использованием мастера 191 Ввод условий отбора записей в конструкторе запросов 195

Page 9: Access 2000. Проектирование баз данных-OCR

Содержание '

Работа со средой Access 2000 без ее инсталляции 197

Резюме 202

Глава X Программирование с использованием макросов 205

Функции макросов 205

Использование макросов для обработки событий 206

Понятие события 206 Последовательности событий 207 Автоматический перевод фокуса при помощи макроса 213

Использование макроса при выполнении сложного запроса 215

Резюме 217

Глава X I Программирование с помощью процедур VBA 219

Основные положения VBA 219 Ьазовые термины 220 Окно модуля 221 Основные элементы 223 Переменные 223 Константы 223 Аргументы 224 Типы процедур и их элементы 226 Процедуры Sub 226 Функции 227 Элементы процедур 227 Просмотр объектов 228 Управление выполнением программы 230

Программирование приложений с помощью VBA 23-1

Предупреждение дублирования записей при их вводе из формы ... 232

Обработка ошибок выполнения 234 Функция создаваемой программы 237 Логическая конструкция If...Then...Else 238

Page 10: Access 2000. Проектирование баз данных-OCR

8 Access 2000

Проверка завершенной процедуры 239 Установка на последнюю запись при открытии формы 243

Удаление записи с установкой на последнюю запись 246

Резюме 250

Глава XII Другие возможности Access 2 0 0 0 251

Установка Access 2000 251

Условное форматирование 255 Пример условного форматирования 255

Буфер обмена 258 Новое содержание 259 Новые возможности для работы 259

Автоисправление имен 260 Функции автоисправления имен 260 Ограничения на использование функции 260 Использование функции 261

Разделение базы данных 262

Сжатие базы данных при ее закрытии 263

Конвертирование базы данных 264 Конвертирование из Access 97 (95) в Access 2000 264 Конвертирование из Access 2000 в Access 97 (95) 265

Резюме 266

Алфавитный указатель 268

Page 11: Access 2000. Проектирование баз данных-OCR

Введение Автоматизированные банки данных уже давно стали неотъемлемой частью прак­тически всех компьютерных систем управления на любом уровне - от отрасли до отдельного предприятия.

Однако проектирование и создание баз данных (БД) до сих пор остается, за редким исключением, не технической задачей, а творческим процессом, который скорее сродни искусству, нежели науке. Это утверждение может показаться не­сколько странным: ведь разработка и исследование баз данных ведутся более 30 лет. Однако, как нам кажется, такой парадокс вполне объясним. За прошедшие годы неизмеримо вырос уровень потребительских качеств систем управления базами данных (СУБД): разнообразие поддерживаемых функций, удобный для пользо­вателя интерфейс, сопряжение с программными продуктами - в частности, с дру­гими СУБД, возможности для работы в сети и т.д.

Но изменения почти не коснулись того, что раньше называлось логическими структурами баз данных. Это формы, в которых пользователь представляет и хра­нит свою информацию в БД. А ведь именно от них в немалой степени зависит удобство работы пользователя с базой данных: формулировка запроса, простота поиска данных, форма выдачи итоговой информации и другие операции. В совре­менных БД могут использоваться более или менее удачные структуры, но почти никогда мы не найдем обоснованного ответа на вопрос, почему для конкретной базы данных была выбрана именно такая форма.

Однако к настоящему времени накоплен значительный опыт проектирования банков данных, предназначенных для управления производством. Это позволяет сделать процесс создания БД значительно более формализованным. (Правда, поле для субъективных решений, а значит, и для индивидуального творчества, все рав­но остается, но его можно существенно сузить.)

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

а информация, прежде хранившаяся на бумажных носителях и внесенная в новый банк данных, который создавался на основе какой-либо СУБД. Сюда же следует отнести и сведения, связанные с текущим производствен­ным процессом. Они вводятся в банк данных в реальном масштабе времени;

• банк данных, который был создан ранее и используется до сих пор. Постепенно разница между двумя названными типами данных стирается. С одной

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

Page 12: Access 2000. Проектирование баз данных-OCR

10 Введение

и организовать в банке данных, и создаются новые СУБД, более удобные, чем прежние. С другой стороны, ранее накопленные сведения продолжают храниться в банке данных, который наверняка никто никогда не будет перестраивать. Обыч­но самое простое решение проблемы - конвертировать старые данные в новую СУБД, объединяя информационные массивы и решая возникающие при этом проблемы. В результате возникает новый банк данных, куда входят разные БД1. Все они имеют один формат данных (например, для Access это mdb), но сохраня­ют прежнюю структуру первичных файлов, таблиц и т.д. Иными словами, данные остаются в значительной мере разнородными, что осложняет дальнейшую работу с ними.

Поэтому после конвертации или интеграции разнородных баз данных в еди­ную программную среду пользователю потребуется дополнительное (иногда спе­циальное) программное обеспечение, чтобы обслуживать полученную БД.

До сих пор в специальной литературе рассматривалась только одна сторона за­дачи - создание новых баз данных. О том, как конвертировать собранную инфор­мацию в программную среду новой СУБД, написано значительно меньше. Нако­нец, мало внимания уделялось другой важной проблеме: какой должна быть единая программная среда и почему.

Книга, которую вы держите в руках, призвана в какой-то степени ответить на перечисленные вопросы. Этим обусловлена и ее структура:

• в главе 1 проблемы, анализируемые в книге, подробно рассматриваются на конкретных примерах. Кроме того, в данной главе объясняется, почему для решения стоящих перед пользователем проблем необходима именно про­граммная среда Access 2000;

• глава 2 посвящена методическим аспектам вопроса - разработке такой струк­туры данных, которая не будет зависеть от программной среды;

• в главах 3-6 говорится о создании базы данных в программной среде Access 2000. Поскольку эта среда содержит элементы, которых не было в предыду­щих версиях Access, приводятся необходимые пояснения;

• в главе 7 изучаются вопросы, связанные с конвертированием баз данных из других СУБД в Access 2000;

• в главах 8-11 рассматривается программирование в объединенном банке дан­ных и его различные варианты: программирование на языках SQL и Visual Basic, а также с использованием макросов;

• глава 12 содержит информацию о тех дополнениях, которые были внесены в Access 2000, но не применялись при работе с описанными в книге базами данных.

1 В современной научной литературе понятия «база данных» и «банк данных» часто смешиваются. Тра­диционно эти термины определялись следующим образом. База данных понималась как набор свя­занных таблиц, запросов, форм, отчетов, макросов и модулей. Так, в среде Access база данных пред­ставляет собой единый файл с расширением mdb. Банк данных рассматривался как совокупность различных баз данных и программ по их обслуживанию. Однако, если база данных включает такие объекты, как форма, отчет, запрос, модуль и др., то в нее входят также программы создания и обслу­живания объектов. Тогда под банком данных следует, видимо, понимать множество баз данных в еди­ном формате (скажем, в том же mdb), и набор программ, позволяющих работать с этими данными.

Page 13: Access 2000. Проектирование баз данных-OCR

Глава I Постановка проблемы

• Режимы функционирования банка данных в производственных условиях

• Пользовательские запросы к банку данных

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

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

Режимы функционирования банка данных в производственных условиях Как правило, предусматриваются следующие режимы функционирования банка данных:

• режим начальной загрузки, в котором исходная информация, содержащая­ся в банке данных, вводится в соответствующие структуры БД;

• режим корректировки, в котором осуществляется обновление, добавление и удаление информации, находящейся в банке данных;

Page 14: Access 2000. Проектирование баз данных-OCR

10 Введение

и организовать в банке данных, и создаются новые СУБД, более удобные, чем прежние. С другой стороны, ранее накопленные сведения продолжают храниться в банке данных, который наверняка никто никогда не будет перестраивать. Обыч­но самое простое решение проблемы - конвертировать старые данные в новую СУБД, объединяя информационные массивы и решая возникающие при этом проблемы. В результате возникает новый банк данных, куда входят разные БД1. Все они имеют один формат данных (например, для Access это . mdb), но сохраня­ют прежнюю структуру первичных файлов, таблиц и т.д. Иными словами, данные остаются в значительной мере разнородными, что осложняет дальнейшую работу с ними.

Поэтому после конвертации или интеграции разнородных баз данных в еди­ную программную среду пользователю потребуется дополнительное (иногда спе­циальное) программное обеспечение, чтобы обслуживать полученную БД.

До сих пор в специальной литературе рассматривалась только одна сторона за­дачи - создание новых баз данных. О том, как конвертировать собранную инфор­мацию в программную среду новой СУБД, написано значительно меньше. Нако­нец, мало внимания уделялось другой важной проблеме: какой должна быть единая программная среда и почему.

Книга, которую вы держите в руках, призвана в какой-то степени ответить на перечисленные вопросы. Этим обусловлена и ее структура:

Q в главе 1 проблемы, анализируемые в книге, подробно рассматриваются на конкретных примерах. Кроме того, в данной главе объясняется, почему для решения стоящих перед пользователем проблем необходима именно про­граммная среда Access 2000;

• глава 2 посвящена методическим аспектам вопроса - разработке такой струк­туры данных, которая не будет зависеть от программной среды;

• в главах 3-6 говорится о создании базы данных в программной среде Access 2000. Поскольку эта среда содержит элементы, которых не было в предыду­щих версиях Access, приводятся необходимые пояснения;

• в главе 7 изучаются вопросы, связанные с конвертированием баз данных из других СУБД в Access 2000;

• в главах 8-11 рассматривается программирование в объединенном банке дан­ных и его различные варианты: программирование на языках SQL и Visual Basic, а также с использованием макросов;

• глава 12 содержит информацию о тех дополнениях, которые были внесены в Access 2000, но не применялись при работе с описанными в книге базами данных.

1 В современной научной литературе понятия «база данных» и «банк данных» часто смешинаются. Тра­диционно эти термины определялись следующим образом. База данных понималась как набор свя­занных таблиц, запросов, форм, отчетов, макросов и модулей. Так, в среде Access база данных пред­ставляет собой единый файл с расширением mdb. Банк данных рассматривался как совокупность различных баз данных и программ но их обслуживанию. Однако, если база данных включает такие объекты, как форма, отчет, запрос, модуль и др., то в нее входят также программы создания и обслу­живания объектов. Тогда под банком данных следует, видимо, понимать множество баз данных в еди­ном формате (скажем, в том же mdb), и набор программ, позволяющих работать с этими данными.

Page 15: Access 2000. Проектирование баз данных-OCR

Глава I Постановка проблемы

• Режимы функционирования банка данных в производственных условиях

• Пользовательские запросы к банку данных

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

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

Режимы функционирования банка данных в производственных условиях Как правило, предусматриваются следующие режимы функционирования банка данных:

• режим начальной загрузки, в котором исходная информация, содержащая­ся в банке данных, вводится в соответствующие структуры БД;

• режим корректировки, в котором осуществляется обновление, добавление и удаление информации, находящейся в банке данных;

Page 16: Access 2000. Проектирование баз данных-OCR

1 2 Постановка проблемы

Q режим диалога, в котором пользователи обращаются к банку данных и про­изводится обработка запросов. Такие запросы могут предусматривать: - только выдачу пользователю информации о тех или иных параметрах про­

цесса. Эта информация в требуемом формате содержится в банке данных; - решение поставленной задачи с использованием сведений, находящихся

в банке данных; О режим реорганизации и анализа, в котором выполняются операции, непо­

средственно связанные с поддержанием банка данных в рабочем состоянии; - реорганизация структур БД; - копирование и восстановление БД; - анализ статистических данных, связанных с функционированием инфор­

мационного фонда.

Пользовательские запросы к банку данных Из всех перечисленных выше для пользователя наиболее важен режим диалога, а все остальные носят служебный, вспомогательный характер. Режим диалога по­зволяет формировать самые различные запросы и является первым и необходи­мым шагом к аналитической обработке информации.

Конечно, нельзя заранее предусмотреть все возможные варианты запросов. Ниже перечислены лишь самые характерные типы запросов пользователя к бан­ку данных в порядке возрастания сложности:

• запросы на обработку данных, связанных с одной таблицей (выборка, уда­ление, корректировка и ввод данных);

О запросы на групповую обработку данных (сумма, среднее значение и т.д.), связанных с одной таблицей;

• запросы, при которых условием отбора записи является полное значение поля;

• запросы, при которых условием отбора записи является неполное значение поля;

• запросы с несколькими условиями отбора записей в разных полях; • запросы с несколькими условиями отбора записей в одном поле; • запросы с заданием параметров; Q запросы на создание объединенной выборки из нескольких разнородных

таблиц и т.д. Как уже говорилось, наличие в банке разнородных баз данных несколько услож­

няет работу. Подробнее этот вопрос рассматривается ниже.

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

Page 17: Access 2000. Проектирование баз данных-OCR

Пользовательские запросы к банку данных 13

а для упорядоченного накопления и хранения поступающей информации при­ходится разрабатывать новые базы данных. Логично, что вы будете оцени­вать различные СУБД именно с этой точки зрения. Здесь не требуется осо­бых комментариев;

• история использования компьютерных банков данных в СССР и в постсо­ветской России насчитывает около 30 лет, за которые сменилось несколько поколений СУБД. Можно увлеченно спорить о том, насколько рациональ­ным был этот процесс и какова эффективность той или иной конкретной СУБД. Однако важнее другое - хороши или плохи были эти системы, но в них аккумулировано значительное количество информации, которая ис­пользуется в практических целях. Ясно, что с каждым годом объем таких данных возрастает.

Системы управления непрерывно совершенствуются. Мировой опыт показы­вает, что поколения СУБД сменяются примерно каждые 5 лет. Естественно, все более актуальным становится вопрос конвертирования данных, то есть перевода их в новую программную среду без потери информации. Решая, какую СУБД выбрать, обязательно учитывайте ее возможности конвертирования; они не менее ва.^ны, чем удобство разработки БД в данной программной среде.

Обоим названным условиям удовлетворяет СУБД Access. Правда, на сегодняш­нем рынке много и других программных продуктов, успешно используемых в ка­честве платформы для банка данных. Поэтому ниже сформулированы те крите­рии, на основании которых следует выбирать СУБД, и оценки Access по этим показателям:

• количество ключевых (дескрипторных) полей, поддерживаемых в СУБД. В Access ограничения на эту величину отсутствуют;

• ограничение на длину поля. В Access данное ограничение составляет 255 байт для текстовых полей и до 255 байт - для числовых, в зависимости от типа поля;

• разнообразие типов обрабатываемых полей. В Access имеются поля, содержащие текстовый и числовой типы данных. Эти типы, в свою очередь, представлены разными вариантами;

• дизайнерские возможности системы. Наличие в Access Мастеров и Конструкторов позволяет достаточно быстро создавать таблицы, формы, отчеты, запросы. Добавление диаграмм в формы и отчеты, быстрая настройка программы и анализ ее быстродействия, ис­пользование архивариуса, возможность импорта и экспорта файлов, работа с гиперссылками и применение технологии OLE внутри пакета Microsoft Office;

• требования к уровню подготовки проектировщика и пользователя БД. Минимальные. Некоторые программные навыки нужны лишь в том случае, если придется использовать Visual Basic;

• язык программирования, операционная среда, сетевые возможности, требу­емые ресурсы. Язык запросов SQL, Visual Basic, операционная система Windows 95/98 или Windows NT. При полной установке потребуется 16 Мбайт оперативной

Page 18: Access 2000. Проектирование баз данных-OCR

14 Постановка проблемы

памяти и около 120 Мбайт памяти на жестком диске. Система Access обла­дает всеми современными сетевыми возможностями;

• язык представления данных, обработка символьной информации. Имеются;

Q поддерживаемые структуры и форматы данных. В Access поддерживаются реляционные структуры данных;

• простота освоения системы, наличие русской версии документации. Первичное освоение займет всего несколько дней. Имеется русифицирован­ная версия Access в составе пакета Microsoft Office; а также русифицирован­ная документация для пользователей различных уровней подготовки;

• поддерживаемый системой математический аппарат. В Access он достаточно развит и включает операторы, функции, логические выражения и т.д.;

• поддерживаемые системой возможности обработки и представления графи­ческой информации. В Access поддерживаются операции с диаграммами. Поскольку эта СУБД встроена в пакет Microsoft Office, то пользователь может работать и с други­ми графическими объектами, входящими в состав данного пакета;

• возможности взаимодействия с другими пакетами прикладных программ (текстовыми редакторами, электронными таблицами, геоинформационны­ми системами (ГИС) и другими). В рамках пакета Microsoft Office 97 можно работать с Word и Excel;

• возможности корректировки файлов, содержащих данные. В Access это очень просто сделать;

• наличие русифицированной и достаточно подробной справочной системы, а также файлов Help (Помощь). Такая справочная система есть, и она доступна из любого режима в любой момент;

Q разнообразие и гибкость формируемых запросов на предоставление данных. Система Access отвечает этому условию.

Наверное, приведенные выше оценки не дают оснований утверждать, что Access -идеальная СУБД. Однако безупречных СУБД вообще не существует. Например, давайте сравним Access с такой системой, как Oracle. Последняя - СУБД гораздо более высокого класса, значительно превосходящая Access по своим возможнос­тям. Но такие преимущества имеют и оборотную сторону: Oracle громоздка, слож­на в освоении и требует для своего функционирования специальных, особо мощных технических средств. Область применения Oracle - создание гигантских центра­лизованных информационных систем. По-видимому, время их массового исполь­зования в России еще не наступило.

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

Page 19: Access 2000. Проектирование баз данных-OCR

Пользовательские запросы к банку данных 15

Вопросы, рассмотренные в настоящей книге Приведенные выше оценки относятся к версии Access 97. В настоящее время на рынке появилась новая версия этой СУБД - Access 2000, обладающая более ши­рокими возможностями. Поэтому при изложении материала автор учитывал:

• наличие в версии Access 2000 новых элементов по сравнению с Access 97; • особенности, обусловленные использованием разнородных баз данных. В той или иной степени специфика обеих версий Access проявляется на всех

этапах работы: от создания первичных таблиц до формирования запросов и ис­пользования элементов программирования. Можно было или сосредоточиться лишь на том, чем отличаются друг от друга два варианта программы (тогда мате­риал неизбежно был бы изложен отрывочно и непоследовательно), или рассмат­ривать весь процесс создания и использования банка данных от начала и до конца в каждой из версий, по ходу описания комментируя различия между ними. Хотя во втором случае неизбежны повторы и в какой-то мере дублирование уже имею­щейся литературы, для читателя такой вариант удобнее. Все необходимые сведе­ния приводятся в одной книге, и пользователю не придется, забыв какую-то ме­лочь, «буксовать» из-за этого в своей повседневной практике.

Чтобы пользователю было легче работать с этой книгой, материал изложен сле­дующим образом.

Все методические рекомендации по структуризации показателей и проектиро­ванию логических структур БД применимы к любой версии Access.

В книге описывается процесс создания новых баз данных в программной среде Access 2000. Отличия этой версии от версии Access 97 специально оговариваются.

Что касается конвертирования БД, созданных в других программных средах, то сначала речь пойдет о «переводе» в Access 97, а затем в Access 2000. Кроме того, будут подробно рассмотрены те дополнительные возможности конвертации, ко­торые появились в Access 2000 по сравнению с Access 97.

Резюме 1. Параллельно с разработкой баз данных в новых, современных СУБД се­

годня используется множество банков данных, построенных на основе программного аппарата морально и технически устаревших СУБД. На­копленная в них информация представляет большую ценность, но пере­водить эти БД в новую программную среду никто никогда не будет. По­этому очень важной становится проблема конвертации данных с тем, чтобы они обрабатывались совместно с новыми СУБД в рамках единого банка данных.

2. В качестве базовой СУБД для интеграции разнородных СУБД в такой банк данных на сегодняшнем этапе предлагается Access 2000.

3. Целью настоящей книги является обсуждение методических и практических вопросов, связанных с разработкой интегрированного банка данных.

Page 20: Access 2000. Проектирование баз данных-OCR

Глава II Предпроектная структуризация

информации

• Состав информации • Что понимать под структуризацией информации • Проектирование логической структуры базы данных

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

В настоящей книге будут рассматриваться в основном примеры из определен­ной предметной области - тематической сферы, к которой относится обрабаты­ваемая информация. Речь пойдет о чрезвычайных ситуациях (ЧС), происходив­ших в действительности; о работах, связанных с ликвидацией последствий ЧС и, в частности, об используемых при этом контрольно-измерительных приборах. Автор опирался на информацию, которая содержится в банках данных Министер­ства РФ по делам гражданской обороны, чрезвычайных ситуаций и ликвидации последствий стихийных бедствий (МЧС России), Госкомитета РФ по охране окружающей среды (Госкомэкологии России) и Федерального агентства прави­тельственной связи и информации (ФАПСИ). Создание объединенного банка таких данных не завершено, и состав включаемых в него БД в дальнейшем будет расширяться. Полученная информация используется преимущественно в анали­тических целях: сбор статистических сведений, выявление тенденций, оценка по­следствий ЧС, выработка рекомендаций по их предотвращению и т.д.

Page 21: Access 2000. Проектирование баз данных-OCR

Состав информации 17

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

• непосредственные сведения о ЧС (вид ЧС, дата и место происшествия, объект, на котором произошла катастрофа);

• характеристика ЧС; • количество пострадавших, в том числе погибших; а предварительные оценки материального ущерба в стоимостном и натураль­

ном выражении; • влияние ЧС на жизнедеятельность местного населения, на окружающую

среду и функционирование отраслей народного хозяйства; • возможность или невозможность ликвидации последствий ЧС на месте,

ориентировочные сроки такой ликвидации; Q типы и количество единиц оборудования, число специалистов, необходимых

для ликвидации последствий ЧС; • характер и примерные объемы выполняемых работ. Менее динамичная часть информации - данные о контрольно-измерительных

приборах, которые используются при ликвидации последствий ЧС. Постоянная часть информации - словари понятий, встречающихся в книге. Описываемый банк данных состоит из следующих разделов: • база данных, разрабатываемая в среде СУБД Access 2000; • база данных, разработанная ранее в среде Clarion 3.0; • база данных, разработанная ранее в среде FoxPro 2.5. Две последние БД конвертируются в Access 2000, и дальнейшая работа с ними

рассматривается именно в этой единой программной среде. Отметим, что из-за разнообразия и неформализованное™ информации, кото­

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

Что понимать под структуризацией информации Как правило, банк данных аккумулирует сведения, относящиеся к определенной предметной области, то есть определенной совокупности объектов. Объектом мо­жет быть что угодно: предмет, понятие, территория, процесс, явление, фраза, связ­ный текстовый фрагмент и т.п. Любая информация, которая накапливается в банках данных, так или иначе относится к одному из двух основных типов. По характеру объектов, образующих предметную область, эти типы условно можно назвать так:

• фактографическая информация, то есть данные, которые описывают конк­ретные факты. Такие сведения имеют количественное или логическое выра­жение. В настоящей книге основное внимание будет уделено работе именно с этим типом данных;

Page 22: Access 2000. Проектирование баз данных-OCR

18 Предпроектная структуризация информации

• библиографическая информация, то есть данные, которые очень трудно, а по­рой и невозможно строго классифицировать: художественная и юридичес­кая литература, газетно-журнальные тексты и т.д

Итак, речь идет о предварительной структуризации информации - особом этапе работы, который должен предшествовать проектированию базы данных. Сама по себе эта идея далеко не нова. Еще в начале 70-х годов усилиями в пер­вую очередь Е.Кодда и К.Дейта была разработана теория информационных от­ношений и моделей данных, рассматривавшая, в частности, проблемы опти­мальной структуры баз данных. Появление этих теоретических работ было обусловлено двумя причинами. Во-первых, СУБД, которые тогда использова­лись, были несовершенны. Во-вторых, существовали различные типы моделей данных: иерархическая, сетевая, реляционная. Разработчикам приходилось не просто обоснованно выбирать определенную модель данных, но и уметь рабо­тать в рамках этой модели даже с несвойственными ей видами информацион­ных отношений (например, в сетевой модели данных использовать иерархичес­кие структуры).

Сегодня практически единственным типом моделей данных являются реляци­онные модели. Современные СУБД имеют значительно больше возможностей для реализации различных информационных отношений между элементами данных. Видимо, поэтому иногда кажется, что проблема рационального представления ин­формации в базе данных потеряла актуальность.

С точки зрения автора, это иллюзия. Вопрос о структуризации данных по-пре­жнему важен, меняется лишь технология его решения. Ниже предлагается один из возможных способов структуризации данных.

Показатели Рассмотрим утверждение, которое, согласно нашей классификации, принадле­жит к классу фактографической информации. Например, «объем капитальных вложений равен 2,5 млн. руб.» или «стоимость «Мерседеса» больше, чем сто­имость «Жигулей». Для этого класса данных под показателем понимается еди­ница информации, которая включает ряд реквизитов -признаков и единственный реквизит-основание. Каждый реквизит-признак является мельчайшей недели­мой информационной единицей и отражает какой-либо атрибут (свойство) объекта. Например, в энергетике такими реквизитами-признаками являются мощности, электростанции, линии электропередач, организации, расход топли­ва и т.д. Любой объект характеризуется перечнем свойств, которые выражаются через реквизиты.

Реквизит состоит из имени и значения. Именем реквизита будет название ка­кой-либо качественной (наименование, местонахождение) или количественной характеристики объекта, явления, процесса (объем, размер и т.д.).

Значение реквизита представляет собой элемент данных, например: мощность (реквизит) - 500 МВт (его значение), электростанция (реквизит) - Красноярская ГЭС (значение), линия электропередач (реквизит) - Экибастуз-Центр (значе­ние), расход топлива (реквизит) - 350 тонн (значение).

Page 23: Access 2000. Проектирование баз данных-OCR

Что понимать под структуризацией информации 19

Совокупность реквизитов-признаков образует наименование показателя, а рек­визит-основание представляет количественное или логическое значение пока­зателя. Например, для приведенного выше показателя (мощность Красноярс­кой ГЭС) реквизит-основание - 500 МВт. Очевидно, каждый реквизит-основание описывается одной фразой. В данном случае эта фраза выглядит так. «уста­новленная мощность Красноярской ГЭС в 1998 году равна 500 МВт». (Это не значит, что вся база данных состоит из единственного предложения - такой случай представляется исключительным упрощением!) В следующем разделе бу­дет показано, что реквизиты-признаки, в свою очередь, делятся на ряд категорий.

В общем случае ни один из реквизитов-признаков не может считаться обя­зательным. Характерной особенностью показателя является то, что он содер­жит определенный минимум информации, достаточный для создания доку­мента. Ни один из перечисленных выше реквизитов, взятый в отдельности, не позволяет сформировать документ, а вот показатель может быть выдан в каче­стве справки при ответе на какой-либо запрос - скажем, о мощности Красно­ярской ГЭС. Верно и обратное - информационную совокупность любой слож­ности (отчет и т.д.) можно представить как определенную группу различных показателей.

Из сказанного ясно, зачем нужна предварительная структуризация информа­ции пользователям, работающим с конкретной базой данных в конкретной пред­метной области. Им необходима возможность формировать по единым правилам разнообразные запросы п получать на них ответы. (Примеры таких запросов и от­ветов будут приведены в главе 9.) Отсюда, между прочим, следует, что структури­зация данных имеет свои разумные пределы. Разработчик банка данных, разбив исходную информацию на ряд категорий-реквизитов, уверен, что дальше делить данный реквизит не имеет смысла, потому что такие запросы пользователя мало­вероятны. Можно и остановиться. Однако, если впоследствии пользователю дей­ствительно потребуется задать специфический запрос, сделать это будет гораздо сложнее. Подобные варианты тоже будут рассмотрены ниже. Поэтому искусство разработчика состоит, в частности, в том, чтобы определить требуемую «золотую середину».

Необходимость структуризации В качестве примера в книге будет рассматриваться информация о фактически происшедших ЧС. Эти сведения могут поступать в виде сообщений по различ­ным информационным каналам:

• по телефону из соответствующих региональных структур (телефонограм­мы). В этом случае информация «вручную» вводится в БД;

• по телефонному каналу связи, когда информация автоматически вводит­ся в БД;

• по почте. Данные вводятся в БД «вручную». Информация поступает в самой различной форме, например, в таком произволь­

ном виде (реальное сообщение): «На ж/д станции Ангасолка Восточно-Сибирской

Page 24: Access 2000. Проектирование баз данных-OCR

20 Предпроектная структуризация информации

железной дороги (ВСЖД) в ночь с 23 на 24.03.99 г. допущен сход двух нефтена­ливных цистерн по 60 тонн каждая, с разливом сырой нефти в одной из цистерн от 30 до 40 тонн. Произошло самовоспламенение. Основная часть нефти разли­лась на северной части балластной призмы в кювете с четной стороны, примыка­ющей к горе, и в кармане водоотводной канавы объемом 3 х 4 х 3,5 м. Кроме того, разлитая нефть выгорела на ж/д полотне площадью 230 х 9 м. На другой стороне ж/д полотна (на откосе) площадью 30 х 50 м происходило сжигание нефти под контролем пожарного надзора ВСЖД. Нефть застыла на снежном покрове двумя рукавами длиной по 100 метров и шириной 0,5 до 1 метра. Дополнительно выяв­лено еще два очага загрязнения площадью 5 х 2 и 5 х Юм. Привлечено к очистке рельефа местности от нефти 70 человек. Выдано предписание о ликвидации заг­рязнения с решением вопроса утилизации нефти. После проведения работ по за­чистке загрязненной территории провести ее обследование комиссионно.» (Имеется в виду, что обследование должно проводиться комиссией.)

Можно включать подобные сведения в БД в том виде, в каком они пришли. Такое решение вполне приемлемо, но только на начальном этапе. Рано или поздно поступившую информацию придется обрабатывать, а иметь дело с такими «сы­рыми» данными довольно трудно.

Конечно, можно регламентировать форму входных сообщений так, чтобы со­держащиеся в них сведения были структурированы. Этот способ используется довольно широко, но он не гарантирует четкой формализации исходных данных. Дело в том, что первичное заполнение стандартных бланков производят рядовые сотрудники на местах, поэтому неизбежна значительная доля субъективизма. Это приводит к необходимости централизованной структуризации показателей при разработке и формировании банка данных.

Технология структуризации Проведенные исследования показали, что обычно в обязательный минимум рек­визитов-признаков входят следующие:

• П - процесс - основное наименование деятельности органа управления (опе­рация, состояние). Это суть показателя (расход, остатки, поставка, капиталь­ные вложения, мощность, ущерб и т.д.);

• Ф - формальная характеристика, то есть выраженный в наименовании спо­соб расчета показателя (доля, темп роста, отклонение, сумма, прирост, сред­нее и средневзвешенное значения и т.п.), который может быть как относи­тельным, так и абсолютным и тесно связан с процессом (иногда задан в нем неявно);

Q О - объект, предмет операции; то, над чем она производится (материалы, изделия, полуфабрикаты, строительная продукция и т.д.);

• Е - единица измерения; • С - субъект (тот, кто производит действия над объектом). Если, например,

объект (О) - продукция, а основное наименование деятельности (П) - про­изводство, то в роли субъекта (С) может выступать, например, предприя­тие, отрасль и т.д.;

Page 25: Access 2000. Проектирование баз данных-OCR

Что понимать под структуризацией информации 21

• В - время (дата, период); • Ф - функция управления (проектное, прогнозное или фактическое значе­

ние, норматив и т.п.). Естественно, все многообразие реальных признаков не укладывается в приве­

денный краткий перечень. Поэтому каждый из названных реквизитов допуска­ет практически неограниченное количество любых категорий-уточнений, кото­рые должны удовлетворять единственному условию - они должны представлять собой списки, состоящие из однородных терминов. Обычно уточняются следу­ющие вопросы:

О где? - в этом случае список уточнений характеризует место действия; • как? - список уточнений характеризует обстоятельства действия; Q какой? - список уточнений характеризует свойство. Сформированные таким образом списки при проектировании банка данных

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

Эти соображения, как уже говорилось, определяют ту границу, до которой име­ет смысл проводить структуризацию. Если выясняется, что какие-то словосочета­ния слишком индивидуальны, уникальны и не поддаются классификации, их не следует включать в словари. В приведенном выше сообщении это формулировки типа «на северной части балластной призмы в кювете с четной стороны, примыка­ющей к горе, и в кармане водоотводной канавы»; «на другой стороне ж/д полотна (на откосе)». Для таких данных надо использовать специальные поля примеча­ний, прикрепленных к соответствующей конкретной записи.

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

Пример структуризации данных Рассмотрим практический пример. Вы занимаетесь структуризацией информа­ции при проектировании базы данных по контрольно-измерительным приборам, которые выпускаются различными фирмами. Это довольно простая БД, и каждая запись в ней выглядит так:

«Прибор (название), с номером модели (номер), произведенный в (год) году фирмой (название), которая находится в стране (название) по адресу (приводится

Page 26: Access 2000. Проектирование баз данных-OCR

22 Предпроектная структуризация информации

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

Итак, информация о приборах включает следующие пункты: • О (объект) - название прибора; • У (уточнение сведений об объекте) - номер модели. Если при анализе сооб­

щения возникает необходимость в нескольких уточнениях, то им можно присвоить номера;

• У (уточнение сведений об объекте) - год выпуска прибора; • У (уточнение сведений об объекте) - номер прибора по каталогу; • У (уточнение сведений об объекте) - характеристика прибора, содержащая

данные о его функциях, портативности, технических особенностях, весе, точ­ности, способе питания, диапазоне измерений, совместимости с другими приборами;

• С (субъект) - название фирмы, производящей прибор; • У (уточнение сведений о субъекте) - страна, в которой находится фирма; • У (уточнение сведений о субъекте) - адрес фирмы; • У (уточнение сведений о субъекте) - адрес филиала или дочерней фирмы;

если такая есть; Q У (уточнение сведений о субъекте) - данные о менеджерах фирмы (фами­

лия, имя, отчество и адрес); • Р (реквизит-основание) - цена прибора. Предположим, пользователя в первую очередь интересует не только цена, но

и вес прибора. Этот параметр можно выделить из общего массива «характеристи­ка» и придать ему статус еще одного реквизита-основания. Тогда приведенная выше фраза-описание будет содержать две однородные фразы с параллельными реквизитами-основаниями - цена и вес.

В рассмотренном примере структура информации достаточно проста, и нуж­ные словари могут быть сформированы практически сразу, на первом этапе про­ектирования. Создавая их и уточняя перечень основных реквизитов-признаков, руководствуйтесь следующим критерием: часто ли у пользователя будет необхо­димость запрашивать информацию по данному признаку. Если да, то имеет смысл выделить его как отдельный реквизит и сформировать соответствующий словарь. Такой признак называется ключевым значением, или дескриптором. В базе данных ему лучше выделить отдельный файл или поле в файле; этим вы существенно об­легчите работу будущему пользователю. Конечно, если какой-либо признак «спря­тан» в общем тексте, по нему тоже можно сделать запрос, но сформировать после­дний в этом случае сложнее.

Page 27: Access 2000. Проектирование баз данных-OCR

Проектирование логической структуры базы данных 23

В нашем примере можно сразу выделить те признаки, по которым следует ожи­дать частого обращения к базе данных:

• название прибора; • название фирмы, производящей прибор; • страна, в которой находится фирма; • адрес фирмы; • адрес филиала или дочерней фирмы; • данные о менеджерах фирмы - фамилия, имя, отчество и адрес; • номер модели; • год выпуска прибора; а номер прибора по каталогу; • цена прибора; • функциональное назначение прибора; • вес прибора; • категория прибора (переносной, портативный и т.п.); • характеристика прибора. Параметры, которые для пользователя второстепенны, остаются в общем тек­

сте раздела. Возьмем пример посложнее, который представлен в разделе «Необходимость

структуризации». Здесь описание включает не одну, а несколько фраз, и анализ, подобный предыдущему, надо провести отдельно для каждой из них. В результате мы получим следующий набор признаков:

• П (показатели) - «выявлено», «выдано», «сжигание» и др.; • Ol (объект) - источники загрязнения (нефтеналивные цистерны); • 0 2 (объект) - загрязняющие вещества (нефть); • ОЗ (объект) - объекты загрязнения (рельеф местности); • 0 4 (объект) - документы (предписание о ликвидации последствий аварии); • У1 (уточнение места действия 1) - железнодорожные станции (Ангасолка); • У2 (уточнение места действия 2) - железные дороги (Восточно-Сибирская); • УЗ (обстоятельство действия 1) - под контролем комиссии; • П (примечания) - как уже говорилось, в этих полях должны содержаться

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

визиты, а количество параметров, указанных в скобках, также будет расти.

Проектирование логической структуры базы данных Итак, мы определили состав дескрипторов, то есть ключевых полей для поиска, по которым чаще всего (по нашему прогнозу) будут формироваться запросы к базе Данных. Теперь начнем разработку логической структуры БД. Под логической структурой понимается та совокупность файлов, содержащихся в них полей и свя­зей между файлами, которую «видит» пользовательская программа, обрабатыва­ющая базу данных.

Page 28: Access 2000. Проектирование баз данных-OCR

24 Предпроектная структуризация информации

Распределение полей по файлам В предыдущем разделе мы постарались объяснить, почему и как необходимо вы­делять дескрипторные поля, по которым ожидаются запросы со стороны пользо­вателя. Мы исходили из того, что каждому такому полю должен соответствовать словарь. Если вы в этом еще сомневаетесь, вспомните, что между элементами информации существуют различные типы отношений: <<один-к-одному», «один-ко-многим», «многие-ко-многим». Очевидно, когда между какими-то элемента­ми информации (полями) существует отношение «один-к-одному», они жестко и однозначно взаимосвязаны. В таком случае достаточно иметь один словарь на всю эту группу. Но тогда она должна находиться в одном файле, потому что иначе отношение «один-к-одному» не будет реализовано без применения каких-либо до­полнительных средств. Как видите, логика довольно проста. Теперь у нас есть кри­терий для распределения полей по файлам: в одном файле следует размещать те поля, которые связаны между собой отношением «один-к-одному». Файлы, объ­единяющие такие группы полей, будут находиться друг с другом в отношении «один-ко-многим» и составят иерархическую структуру. Отметим, что файлы, находящиеся в отношениях типа «многие-ко-многим», не должны быть непосред­ственно взаимосвязанными. Обобщим сказанное в табл. 2.1.

Таблица 2 1

Название прибора

Название фирмы

Страна

Адрес фирмы

Адрес филиала

Менеджер

Номер модели

Год выпуска

Номер по каталогу

Назначение

Категория

Характеристика

Номер

1

2

3

4

5

6

7

8

9

10

11

12

1

X

1

оо

1

1

сю

со

со

оо

оо

со

оо

2 оо

X

1

1

1

оо

оо

оо

оо

оо

оо

оо

3 оо

оо

X

оо

оо

оо

оо

оо

оо

со

со

со

4

оо

1

1

X

1

оо

со

со

со

оо

оо

оо

5 со

1

1

1

X

со

со

оо

со

оо

оо

оо

6 со

1

1

1

1

X

оо

оо

оо

со

оо

оо

7

со

X

оо

8

со

X

оо

9

оо

X

10 оо

со

оо

оо

со

1

1

со

оо

X

оо

оо

11 оо

оо

со

оо

оо

1

]

1

1

оо

X

оо

12 со

оо

оо

оо

оо

1

1

1

1

оо

оо

X

В этой таблице символы °о и 1 обозначают соответственно стороны «многие» и «один» в отношениях между реквизитами.

Файлы и связи между ними Из табл. 2.1 видно: чтобы формировать файлы, следует сгруппировать в них поля, представляющие реквизиты-признаки, находящиеся друг с другом, как сказано

Page 29: Access 2000. Проектирование баз данных-OCR

Проектирование логической структуры базы данных 25

выше, в отношении «один-к-одному». Таким образом, будут созданы следующие файлы:

Q Страны (содержит поле Название страны); • Приборы (содержит поля Номер модели, Категория, Год выпуска, Харак­

теристика, Номер по каталогу, Цена, Вес); • Фирмы (содержит поля Название фирмы, Адрес фирмы, Адрес филиала); • Менеджер (содержит поле Данные о менеджере); • Назначение (содержит поле Назначение прибора); • Типы приборов (содержит поле Название прибора). Мы перечислили здесь основные - так сказать, «титульные» - поля, состав­

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

В Microsoft Access

D G£ ffij

X © J- ( 3 -• Г Relationships | Р | х | Л

Примемзни Примечание

*А -1

Год по катоп | »!арактери1 Цена1,$

TI

Код фирмы Фамилия Имя Адрес

Ы

>п_Примеч.: _Generahon GUID

5 т$>$тя%

>п_Примеч= ^ Generation —-• GUID zl

Кодф>фны _^ Название фи| Код страны Адрес — Адрес 2 •*•[

ьеп_Припечс 5_GeriPrahon 5_GUID zi

•ё

i Рис 2 1

Page 30: Access 2000. Проектирование баз данных-OCR

26 Предпроектная структуризация информации

Резюме 1. Безусловный прогресс, достигнутый в развитии программных средсл и

СУБД и расширении их функциональных возможностей, не устранил проб­лему обоснованности выбора структур баз данных - от продуманности этих структур во многом зависит эффективность работы с БД.

2. Основным элементом фактографической информации является показатель Он, в свою очередь, состоит из множества реквизитов-признаков и един­ственного реквизита-основания.

3. Для того чтобы формировать по единым правилам разнообразные пользова­тельские запросы к БД и получать на них ответы, перед проектированием конкретных баз данных необходимо провести структуризацию информации

4. В главе предлагается и иллюстрируется на конкретном примере технология такой структуризации и - па се основе - последующего проектирования ло­гической структуры БД.

Page 31: Access 2000. Проектирование баз данных-OCR

Глава Создание таблиц

новой базы данных

• Варианты создания таблиц • Формирование таблицы в режиме ввода • Создание таблицы в режиме конструктора G Создание и использование полей подстановки • Организация связей между таблицами

Как уже было сказано в главе 2, разработка новой базы данных Контрольно-из­мерительные приборы производится в программной среде Access 2000.

Формирование БД в Access состоит из ряда последовательных этапов, опи­сываемых ниже. Первый этап этого процесса - создание таблиц. Таблицы в Ac­cess являются теми первичными, исходными файлами, на основе которых в дальнейшем строится все здание базы данных. Access 2000, как и предыдущие версии, предоставляет пользователю несколько разных вариантов построения таблиц.

Порядок создания всех таблиц одинаков и не зависит от их названия и кон­кретного содержания. Мы рассмотрим этот процесс на примере таблицы Страны.

Варианты создания таблиц Формирование таблицы начинается с того, что вы открываете окно базы данных н в нем выбираете пункт Tables (Таблицы) раздела Objects (Объекты), как пока­зано на рис. 3.1.

Page 32: Access 2000. Проектирование баз данных-OCR

28 Создание таблиц новой базы данных

Н Microsofl Access

File Edii" View Insert Tools Window hHp

мз db5 : Database

Щореп ^Des ign ДМе>

E j Create table by using wizard

®J Create table by entering data

П Name AutoCorrtrrt Log

• П Менеджер

• П Назначение

• Г"| Приборы, представленные на рынке2

• Г") Страны

• П Типы приборов

• П Фирмы

Рис 3 /

Обычно дальше следует щелкнуть по кнопке jtjew | на панели окна БД. В дна логовом окне New Table (Новая таблица), показанном на рис. 3.2, представлены все возможные способы создания таблицы:

• Datasheet View (Режим таблицы); • Design View (Режим конструктора); О Table Wizard (Мастер таблиц); Q Import Table (Импорт таблиц); Q Link Table (Связь с таблицами)

New Table

Create a new table in Datasheet view

Design View Table Wizard Import Table Link Table

OK

Cancel

Рис 3 2

Page 33: Access 2000. Проектирование баз данных-OCR

формирование таблицы в режиме ввода 29

Последние два варианта создания таблиц - импорт таблиц и связь с таблица-.„ _ рассматриваются в том разделе главы 7, который посвящен объединению

разнородных баз данных.

формирование таблицы в режиме ввода Войти в этот режим можно двумя способами: либо выберите пункт Datasheet View (Режим ввода) в окне New Table (см. рис. 3.2) и щелкните по кнопке ОК, in6o выберите опцию Create a table by entering data (Создать таблицу путем вво­да данных) в окне базы данных (см. рис 3 1). В результате на экране появится таблица, готовая к вводу информации (см рис. 3.3).

Ы Miciotoil Access

FIIP Edit View Insert Format Record:. Tools Window Help

Щ ] • * • * £ j

• Table! : Table •Hi FlQldl Flold2 Fleld3 Flold4 FloldS F *

Record: j < | *-\ [ 1 • I • ' ! • * ! of 21

nr

3

Рис 3 3

Ввод данных Чтобы осуществить ввод данных, сначала надо заменить имеющиеся заголовки столбцов на новые названия, а затем уже ввести сведения в поля таблицы. Рас­смотрим эту операцию на примере создания таблицы Страны.

Заменим имена полей Field 1 и Field2 на Код и Страна. Для этого дважды щелк­ните мышью в ячейке с именем соответствующего поля, а затем введите нужные значения. Записав первые данные (см. рис. 3.4), попробуйте выйти из созданной таблицы (кнопка _J*J B правом верхнем углу). Сначала Access 2000 спросит вас, НаДо ли сохранять произведенные в таблице изменения (если вы не хотите этого

Page 34: Access 2000. Проектирование баз данных-OCR

30 Создание таблиц новой базы данных

1 В Microsoft Access - [Та... В 1 Э ЕЭ1

J ы -1 в J а ? ( ; П File Edit View Insert Format № Records Tools Window Help - | i 9 |

! x)

* J

Код страны |Страна| |, 1 Россия 2 США 3 Германия

Record: l< | < | | > ! • ' ! •<

Рис 3 4

делать, она вообще сотрется из памяти). Затем вам будет предложено назвать таб­лицу (или согласиться с предлагаемым именем, которое автоматически присвоит ей система). Не отличаясь большой фантазией, Access 2000 все таблицы называет именем Table с добавлением текущего номера.

Первичный код Когда все это будет сделано, вы получите предупреждение: There is no primary key defined (Первичный код не определен), как показано на рис. 3.5.

Microsoft Access

There is no primary key defined.

Although a primary key isn't required, it's highly recommended A table must have a primary key for you to define a relationship between this table and other tables in the database. Do you want to create a primary l.ey now'

Yes No Cancel

Рис. 3 5

В предупреждении сообщается: «Хотя первичный код не является обязатель­ным, настоятельно рекомендуется его создать. Он нужен для того, чтобы устано­вить связи между данной таблицей и другими таблицами в базе данных». После такого разъяснения вам задается вопрос - Do you want to create a primary key now? (He хотите ли вы создать первичный код прямо сейчас?). Если вы отказываетесь это сделать и отвечаете No (Нет), Access 2000 запомнит таблицу в том виде, в каком она показана на рис. 3.4. Однако вопрос о первичном коде все равно возникнет на следующем этапе работы: когда вы будете формировать связи между файлами, и уж тогда без кода система не справится с этой задачей. Если вы поддались на уго­воры и сразу согласились создать первичный код, выбрав ответ Yes (Да), то про­грамма сама сделает это. В результате таблица будет выглядеть так, как показа­но на рис. 3.6.

Page 35: Access 2000. Проектирование баз данных-OCR

Создоние таблицы в режиме конструктора 31

Ш Microsoft Access

File Edit View Insert Fotrncit Records Tools Window

Help

1ЁШ

ТаЫеЗ: Table ID Код

1 2 3

(AutoNurnber)

Record: к I <

Страна М ссия В

I рмания •

1 Россия 2 США 3 Германия

2 М И • * ] of 3

Рис 3.6

Если вы выберете пункт Cancel (Отмена), таблица вновь примет тот вид, кото­рый показан на рис. 3.4. Однако это - промежуточное состояние, из которого все равно надо как-то выходить. Внимательно посмотрите на первичные коды, создан­ные системой в поле ID. Здесь они ничем не отличаются от кодов, созданных пользователем в поле Код. Но в общем случае коды, введенные в это поле, совсем не обязаны быть такими же упорядоченными, как коды поля ID - таблица, пока­занная на рис. 3.6, как уже говорилось, представляет собой словарь, и коды могут периодически изменяться. Поэтому для надежного контроля за файлами в Access предусмотрен механизм системных первичных кодов. Иногда (как, например, сей­час) они и вводятся только по желанию пользователя. В других случаях при от­сутствии этих кодов ряд функций Access 2000 выполняться не будет.

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

Отметим, что в словарном файле совсем не обязательно ограничиваться тем минимумом полей, которые показаны в нашем примере. Это было сделано в чисто методических целях. На практике количество полей в файле вообще не ограничи­вается, следует лишь соблюдать единственное требование: поля должны находить­ся в отношениях «один-к-одному».

Создание таблицы в режиме конструктора Описанная в предыдущем разделе таблица создавалась, можно сказать, стихийно. Теперь мы будем придерживаться строгой последовательности действий, забла­говременно обосновывал все дальнейшие операции, задавая необходимые данные и чх форматы.

Окно конструктора таблиц оити в этот режим можно двумя способами. Первый: выберите пункт Design lew (Режим конструктора) в окне New Table (Новая таблица), как показано на

Р1,с 3.2, и затем щелкните по кнопке ОК. Другой вариант: выберите пункт Create

Page 36: Access 2000. Проектирование баз данных-OCR

32 Создание таблиц новой базы данных

a table in Design View (Создать таблицу в режиме конструктора) в окне базы дан­ных (см рис. 3 1) На экране появится окно конструктора таблиц (см. рис.3.7). Оно содержит три раздела'

G Field name (Имя поля) - обязательный раздел; • Data type (Тип данных) - условно обязательный раздел; • Description (Описание) -необязательный раздел

В Microsoft Access

• -J_H • ч - ' © * File Edit Vie<4 Insert Tools Wmdo"' Help

ш 9 w-S = * §» Й?

Table2: Table _ П X Field Name Data T> pe Description

zl Field Properties

General Lookup

Рис 3 7

В разделе Field Name (Имя поля) следует указать имена полей - те самые, ко­торые в предыдущем разделе вводились в заголовки столбцов таблицы. Ситуация с первичным кодом совершенно аналогична.

Чтобы начать работу с разделом Data type (Тип данных), надо щелкнуть мы­шью в его пределах. Как только это произойдет, в его правой части возникнет стрелка прокрутки. Щелкните по ней, и появится список типов данных, которЫ1' поддерживаются в Access 2000 (см. рис. 3.8). Характеристика типов данных при­водится в следующем разделе этой главы.

Сведения о типах данных, полей и их свойствах являются в Access 2000 базовы ми и непосредственно используются при создании таблицы в режиме конструктора

Типы данных и их свойства Типы данных, поддерживаемые системой Access 2000 (см. их перечень на рис. 3 8) приведены ниже вместе со своими основными характеристиками:

Page 37: Access 2000. Проектирование баз данных-OCR

Создание таблицы в режиме конструктора 33

Ш Microsoft Access

I File Edit View Insert Tools Window Help

Т а Ы е З : Table

Field Name

Text Me-mo Number

Field

General Lookip

ui renc't AutoNumber \ es/No OLE Object H perlmk Loolup Wizard

ШЕ Data Type I Description I -.

zi

Рис 3 8

• Text (Текстовый) - символьные данные или сочетание символьных и циф­ровых данных. К этому типу относятся также цифровые данные, которые не требуют вычислений над ними (например, номер телефона). Длина поля по умолчанию составляет 255 символов, но можно задать меньший размер. Место для невведенных данных в пределах объявленного размера не резер­вируется;

• Memo (Мемо-поля) - текстовые данные либо сочетание текстовых и циф­ровых данных, имеющих большой объем. Длина поля - до 65 535 символов;

• Number (Числовой) - числовые данные, используемые в математических опе­рациях. Длина поля может составлять 1, 2, 4 бита, 8 и даже 16 байт (в по­следнем случае в свойстве Fieldsize (Размер поля) нужно выбрать опцию Replication (Репликация)1);

• Date/Time (Дата/Время) - формат данных о дате и времени для периода с 100 до 9999 года. Длина поля - 8 байт;

• Currency (Денежный) - значения денежных единиц и числовые данные, ис­пользуемые в математических операциях. Эти данные должны иметь фик­сированное число знаков до и после запятой. Длина поля - 8 байт;

О AutoNumber (Автоматическая нумерация) - уникальная последователь­ность чисел, начинающаяся с единицы, или случайная последовательность, которую создает Access 2000 при добавлении новой записи в таблицу. Эта последовательность представляет собой первичный код, который очень ва­жен в Access 2000, он не может корректироваться пользователем и доступен

икация ~ копирование базы данных сразу на несколько компьютеров Если установлен режим ликации, то после обновления информации в двух или нескольких копиях можно синхронно вне-э т и изменения во все остальные базы данных

2 ~ 119

Page 38: Access 2000. Проектирование баз данных-OCR

34 Создание таблиц новой базы данных

только системе. Если вы удалите какую-либо запись, то будет удалено н .,,. ответствующее значение первичного кода. Длина поля для данных эьц., типа составляет 4 бита (или 16 байт, если в свойстве Fieldsize устаиов.i, M режим Replication);

• Yes/No (Да/Нет) - логический тип данных. Поле может принимать лишь одно из двух значений: Да или Нет. Длина поля - 1 бит;

• OLE Object1 - обменный тип данных для хранения таких объектов, как т.и1 лицы Microsoft Excel, документы Microsoft Word, графические и звуковые файлы, другие двоичные данные, включенные в таблицы Access 2000 и щ связанные с ними;

Q Hyperlink (Гиперссылки) - текстовые данные или сочетания текстовых и циф­ровых данных, которые используются в качестве адресов гиперссылок. Ад­рес гиперссылки может состоять из трех частей: - отображаемый текст - текст, который появляется па экране; - адрес - путь к файлу или странице доступа к данным; - субадрес - положение данных внутри файла или на странице. Длина каждой из этих частей поля гиперссылки не превышает 2048 символик.

• Lookup Wizard (Выбор данных) - тип данных, позволяющих создать поля для выбора значений из другой таблицы или списка. Щелкнув по пункп' Lookup Wizard, вы запускаете мастер преобразования поля. Когда он закон­чит работу, Access 2000 запомнит выбранное значение. Обычно длина этого поля составляет 4 бита.

Как видите, типы данных очень разнообразны. Прежде чем вы начнете опреде­лять и вводить их, обязательно ответьте себе на ряд вопросов:

• какие данные вы хотите ввести в конкретное поле. Например, нельзя сохра­нить текстовую информацию в поле с числовым типом данных;

• какая длина поля вам необходима для сохранения данных и работы с ними; Q какие операции будут производиться с данными в этом поле. Например,

Access 2000 позволяет суммировать данные в числовом и денежном форма­тах, но не делает этого в текстовом или в формате OLE Object;

• собираетесь ли вы сортировать или индексировать данные. Имейте в виду, что в формате OLE Object нельзя делать ни того, ни другого;

• будете ли вы применять групповые записи в формах или запросах. Поля формата OLE Object нельзя использовать для группировки записей;

• как вы собираетесь сортировать данные в поле. В текстовом поле числа рас­сматриваются как строки символов (1, 10, 100, 2, 20, 200 и т.д.), поэтому многие форматы дат могут сортироваться неправильно; для них следует ис­пользовать формат Date/Time (Дата/Время), а не цифровые значения. Что­бы сортировать числа как цифровые значения, необходимо применять чис­ловой или денежный форматы.

1 Object Linking and Embedding (Связывание и внедрение объектов) - спецификация фирмы Micro­soft, устанавливающая правила взаимодействия приложений, которые участвуют в подготовке и ре­дактировании составных документов. OLE предусматривает два механизма передачи и использова­ния объектов в составном документе: связывание и внедрение.

Page 39: Access 2000. Проектирование баз данных-OCR

Создание таблицы в режиме конструктора 35

Свойства полей п \ccess 2000 предусмотрены два свойства полей: Format (Формат) и Input Mask Мпска ввода). Обе опции позволяют задавать формат, в котором данные вводят­

ся в таблицу. Свойство Format (Формат) рекомендуется применять при последовательном

• оде данных в таблицу. Например, если для поля типа Date/Time вы установили наченне свойства Format равным Medium date (Средний формат времени), то все

значения дат при их последовательном вводе будут иметь следующий вид: 12-Jan-96 (12-Янв-96). Если пользователь будет вводить в базу данных значения дат в лю-(j0M другом формате (скажем, в виде 01/12/96), при запоминании записи Access 7000 все равно преобразует ее в формат Medium date.

Свойство Format проявляется лишь при отображении значения, но не при его запоминании. Пока введенные данные не появились на экране, невозможно про­верить, в каком формате они были введены. Предположим, вы непременно хотите отобразить данные именно в том формате, в котором они вводились. Тогда вам не следует применять свойство Format. В заключение отметим, что оно использует­ся в полях числового и денежного типа, Date/Time, AutoNumber и Yes/No (Да/ Нет). Свойство Format не определено для полей текстового типа, полей Memo и шперссылок, хотя в принципе такая настройка возможна.

Свойство Input Mask (Маска ввода) целесообразно при отображении литераль­ных (символьных) констант, а также при вводе данных в пустые графы (бланки, таблицы и т.д.) - например, если все номера телефонов в списке имеют один фор­мат. Использование маски ввода обеспечит сохранение информации в определен­ном формате. Таким образом, вы всегда сможете установить, в каком виде будут вводиться данные в каждый документ. Предположим, надо, чтобы все вводимые данные о кодах и телефонах городов области содержали одинаковое количество знаков. Перед вводом предварительно задайте свойство Input Mask, и в каж­дый документ (таблицу) будет помещено необходимое число символов.

Если вы зададите одновременно оба свойства, произойдет следующее: Access бу­дет применять Input Mask при добавлении или редактировании данных, a Format -при отображении сохраненной записи.

Установка значений свойств Input Mask и Format lenepb давайте рассмотрим установку значений свойств Input Mask (Маска вво­да) и Format (Формат) на конкретном примере. Откроем таблицу Страны в ре­жиме конструктора.

Свойство Input Mask тооы задать свойство Input Mask в поле Код страны, выберите соответствую­

щую строку, как показано на рис. 3.9. Ьсли щелкнуть в ее пределах, то в нее можно вводить значения вручную. Если же

е-чкнуть по кнопке _^J, запустится Input Mask Wizard (Мастер маски ввода). ^начале установим маску ввода вручную. Введем значение 0L>L в строку Input

a s k (см. рИ С 3.10). Начиная со следующей вводимой записи и до тех пор, пока 2 '

Page 40: Access 2000. Проектирование баз данных-OCR

36 Создоние таблиц новой базы данны.

Н Microsoft Access

\П - | @ шш

* 4a 6* йг File Edit View Insert Tools Window Help

Table2: Table ME Field Name I Data Type [

ID Код страны Страна

AutuNumber Text Text

Oescnphon

zl

Geneial Lookup |

Field Size Form at .^^ш Input Mask Ш Caption ^ H Default Value ^ H Validation Rule ЩЩ Validation Text Required Allow Zero Length Indexed Unicode Compression

50

V es Ho

Щ

^1

Рис 3 9

маска ввода не будет снова изменена, коды стран будут задаваться в том виде, ко­торый показан на рис. 3.11. Это происходит в соответствии с правилами настрой­ки форматов, приведенными выше (раздел «Свойства полей»). (Мы не обсужда­ем сейчас вопрос о смысле такой установки, а просто рассматриваем возможности маски ввода.)

Правда, при переходе из режима конструктора в режим просмотра таблицы (см. соответственно рис. 3.10 и 3.11) Access 2000 предупреждает о возможных опасно­стях. Сообщение, показанное на рис. 3.12, гласит: Data integrity rules have been changed; existing data may not be valid for the new rules. This process may take a long time. Do you want the existing data to be tested with the new rules? (Условия целос­тности данных изменены, существующие данные могут противоречить новым ус­ловиям. Процесс может быть длительным. Хотите ли вы проверить существую­щие данные в новых условиях?)

Вряд ли у вас есть основания отказываться от подобной проверки, поэтому са­мым правильным решением будет ответ Yes.

Если вы захотите воспользоваться помощью мастера маски ввода и щелкнете по кнопке ^J , то система предложит вам запомнить форму: Must save table first. Save now? (Сначала надо сохранить форму. Сохранить ее сейчас?). После этого появш -ся окно мастера (см. рис. 3.13).

Открывшееся окно предлагает вам выбрать Input Mask (Маску ввода) в соотвс i ствии с заданным свойством Data Look (Формат данных). Чтобы проверить рабо i •>

Page 41: Access 2000. Проектирование баз данных-OCR

Создание таблицы в режиме конструктора 37

В Microsoft Access

| • - J У . L4 v I File Edit View Inset t Ipols Vfemdow Help

ПШШ

Tablel : Table HnR Field Name

9 ID • Код страны

General j Looljjp

Data Type AutoNumt'F

Text

Field Propei ties

Description I -

j j

Field Size Foi ri iat Input Mask Caption Detault Value Validation Rule Validation Text Required Allow Zero Length Indexed Unicode Compression

50

01 >L

1

Yes No ves (No Duplicates) Ves »«*;»*» • г , - з . -

"™J

Рис. 3.10

1 В Miciosoft Access H B В I

^ - У # El ^ * l i lr ' -o >„> File Edit Vie'" Insert Format Records Tools

^mdovo Help

• Tablel : Table ШЩ

• Re

i j

ID | Код страны | Страна 1 1 Россия 2 2 США 3 3 Германия

12 7 г J Индия 13 5кЕ Пакистан

(AutoNumber) _ |_ cord и | < | | 6 • | м | > Ч of 6

1 •!

Рис. 31 1

^Ыски ввода, введите данные в поле Try It (Проверка). Значения свойства Input ask подробно рассматривались выше. Здесь мы еще раз кратко перечислим их: J General Date (Общий формат даты); Q Long Date (Длинный формат даты);

Page 42: Access 2000. Проектирование баз данных-OCR

38 Создание таблиц новой базы данных

Microsoft Access

] \ Data i n t e g r i t y ru les h a v e b e e n changed ; ex i s t i ng d a t a m a y no t be va l id for t h e new ru les .

—This process may take a long time. Do you want the existing data to be tested with the new rules?

Mo Cancel

Рис 3 12

Input Mask Wizard

Which input mask matches how you want data to look?

To see nov a selected mask worts, use the Tt / I t box.

To change the Input Mask list, click the Edit List button.

Input Mask: Data Look.

Try It: I

Edit List Cancel Next :

Рис 3.13

Password Short Time Medium Time Long Time Short Date Medium t'ate

о is:,:.: 0.13333 03 12 00 09/27/1069 27-сен-6<*

•d

Finish

Q Medium Date (Средний формат даты); • Short Date (Короткий формат даты); • Long Time (Длинный формат времени); Q Medium Time (Средний формат времени); • Short Time (Короткий формат времени). Чтобы изменить маску ввода, щелкните по кнопке Edit List (Изменить спи­

сок). Теперь выберите в открывшемся поле какую-либо позицию, например Me­dium Time (Средний формат времени), как показано на рис. 3.13. Затем щелк­ните по кнопке Next (Следующий) и откройте следующее окно мастера масок (см. рис. 3.14).

В этом окне вы также можете изменить шаблон. Сначала Access 2000 любезно поинтересуется: Do you want to change the input mask? (Желаете ли вы изменить маску ввода?). Если вы соглашаетесь, шаблон формата можно изменить в поле Input Mask, которое в этом случае активизируется. Далее в том же окне мастера масок вы можете изменить вид Placeholders (меток). Эти метки заполняют пробе­лы между значащими символами. Выбор нужной метки из списка Производится

Page 43: Access 2000. Проектирование баз данных-OCR

/-о3дание таблицы в режиме конструктора 39

1 Input Mask Wizaid

Which input masl- matched how you want data to took'

To see how a selected mask works, use the Try It bo-..

To change the Input Mask list, click the Edit List Ь и й с л у ц

Input Mask' Data Look- | Я §

Password * * * * * * * Short Tin i t 0 13333 Medium Time 0.13333 Long Time 03.12.00 Short Date 09/27/1969 Medium Date 27-сен-69

Т. It |

Edit List | Cancel |

-Next >

l i t

• * •

M

d

__ Finish

Рис 3 14

в поле Place-holder character (Вид метки) с помощью стрелки прокрутки. Выбран­ные вами метки вводятся автоматически по мере ввода символов. Использовав все возможности коррекции масок, которыми располагает мастер, вы получите не ме­нее разнообразные и экзотические маски, чем те, что пользователь создает вручную.

Проверить, как введены данные, можно, указав их в поле проверки Try It и за­тем ще н<нув по кнопке Enter. Далее, если не последует возражений со стороны мастера, щелкните по кнопке Next. В следующем окне (см. рис. 3.15) мастер масок

Input Mask Wizaid

How do you want to store the data1

(~ With the 5, nibols in the mask, like this:

1059

(* Without the symbols in the mask, like this'

2384

Cancel < Back Finish

Рис. 3 15

Page 44: Access 2000. Проектирование баз данных-OCR

40 Создание таблиц новой базы данных

спросит How do you want to store the data? (Как вы хотите сохранить данные?} Выбор у вас следующий либо сохранять данные вместе с возможными вспомога­тельными символами (они указываются во второй части маски, но являются нео­бязательными), либо без них

Когда вы дадите тот или иной ответ, можно щелкнуть по кнопке Finish (Гото­во), и маска сформирована Если на этой стадии работы вы выберете опцию Next

Н Miciosofl Access

! FIIP Edit Vjew In'ert Fyirrat Pei.rrd-. T o d ' V_rdu

Hdp

Ш\

| • Tab le l : Table

ID | К о д с т р а н ы

1 1 2 2 33

19 3456 20 3678

(Au toNumber )

• С Ш Е | С т р а н а

Р о с с и я

США Г е р м а н и я

Ф р а н ц и я

Италия

"

ч Рис 3 16

И Microsoft Access

Fil<- Ed f" 'ue* Irv^rt Tools Windo/- Help

InTxl ч v §«=§» »

Table l : Table ГЛпГ Field Name Ыа Type De<oipti jn

1С ^ гд страны

• IСтрана

H

A jtoNumber Text

Field Properties ZJ

Field DIZP

Forn at Input Г Ь 1 Caption Default Value Validation PUIP

Validation Text Requii ed Alio Zpro Length Indexed Unicode Compression

r0

Yes I I ] •i es (Mo Duplicates) Ye;

Рис 3 17

Page 45: Access 2000. Проектирование баз данных-OCR

Создание и использование полей подстановки 41

шш Ш Microsoft Access

Н* Edt View Insert Fk mJr Ppn_r:k Tr._l<; _r&v-. Hrlp

Table! : Table Щ ] •

*

ID | Код страны | Страна (l 1 РОССИЯ 2 2 США 3 3 ГЕРМАНИЯ

19 3456 ФРАНЦИЯ 20 ЗБ7с ИТАЛИЯ

(AutoNutnLeil

Record и И II 1 • I •' ! •* ! of 5

Рис 3 18

т "начала появится еще одно окно В нем мастер масок с удовлетворением сооб­щит вам, что теперь у него есть все необходимое для создания маски

В нашем примере сформированная мастером маска будет работать с момента ее установки и до следующей корректировки Все это время Access 2000 будет до-п\екать ввод только тех записей, у которых код страны имеет 4 разряда На рис 3 16 показаны новые записи, введенные согласно заданным условиям

Сравнивая два способа формирования маски ввода (вручную и с помощью мастера масок), мы пришли к заключению, что первый путь значительно проще, и поэтому именно он рекомендован пользователю

Свойство Format В отличие от установки маски ввода, свойство Format (Формат) задается только вручную, мастер отсутствует (возможно, это и к лучшему) Введем значение свой ства Format в текстовое поле Страна (см рис 3 17) Для этого в позицию Format поместим знак >, который обозначает перевод текстовых символов в верхний ре­гистр

Если теперь мы включим режим просмотра таблицы, которая была показана на рис 3 16, то увидим что все строки в поле Страна заполнены прописными буква­ми! (см рис 3 18) Кстати, это еще одно отличие свойства Format от Input Mask его установки влияют на все содержимое поля, независимо от времени его (содер­жимого) ввода

Создание и использование полей подстановки Г)

Нелом ряде случаев поле может включать лишь определенные значения, которые огда содержатся в заранее заданном списке, а иногда - в самом поле, вместе Роизвольно вводимыми данными Так или иначе, часто возникают ситуации,

Page 46: Access 2000. Проектирование баз данных-OCR

42 Создоние таблиц новой базы данных

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

Рассмотрим создание подстановки на следующем примере. В сформированную перед этим таблицу (см. рис. 3.18) надо ввести новое поле Фирмы. Оно должно заполняться за счет подстановки значений из таблицы Фирмы, которая содержит­ся в той же базе данных.

Для создания подстановок используется мастер подстановок. Запустить его можно • в режиме конструктора таблиц; • в режиме таблицы.

Подстановка в режиме конструктора таблиц Чтобы запустить мастер подстановок в режиме конструктора таблиц, сначала войди­те в него. Затем щелкните по стрелке прокрутки в поле, которое вы хотите запол­нить одним из значений (в нашем случае это поле Фирмы). В появившемся спис­ке типов данных выберите Lookup Wizard (Мастер подстановок), как показано на рис. 3.19.

Ш Microsoft Accets

.п - о I File Edit View Insert Took- Window Help

ШШ Я %-}

Table2: Table [Цпш 3 l \

Field Name Data T/pe | Description ID Код страны Страна Фирмы

General | Lookup |

Field Size Format Input Mask Caption Default Value Validation Rule Validation Text Required Allow Zero Length Indexed Unicode Compiession

AutoIJumber Text Text

hel<

50

Text Text Memo Number Date/Time Currency AutoNumber Yes/No OLE Object Hyperlink

Ш

No No Mo Yes

Рис 3 19

Page 47: Access 2000. Проектирование баз данных-OCR

Создание и использование полей подстановки 43

В результате на экране возникнет первое окно мастера подстановок (см. рис. 3.20). тер создает столбец подстановок, то есть список значении, из которых надо

1брать подходящее. В этом окне пользователь должен указать, что нужно выве-а „ на .экран:

• I want the lookup column to look up the values in a table or query (Список значений из таблицы или запроса);

• I will type in the values that I want (Список, который пользователь сам бу­дет заполнять по своему усмотрению).

LookuD Wizard

This wizard creates a lookup column, which displays a list of values you can choose from How do you want your lookup column to get

~Л its values?

<•" I want the lookup column to look up the values in a table с query.

С I will type in the values that I want

Cancel Next :

Рис 3 20

Приняв решение, пользователь выбирает в диалоговом окне соответствующий переключатель, а затем щелкает по кнопке Next.

Если был выбран первый вариант, мастер подстановок открывает следующее Диалоговое окно (см. рис. 3.21). Здесь пользователь определяет таблицу и/или запрос, значениями из которых он будет заполнять поле подстановки. Например, ча рис. 3.21 показано, что эти значения выбираются из таблицы Фирмы. Теперь снова надо щелкнуть по кнопке Next. Если вы передумали и хотите что-либо ис­править в предыдущем окне, вернитесь к нему с помощью кнопки Back (Назад) •пи вообще отмените все предыдущие действия, щелкнув по кнопке Cancel (От­менить).

о следующем окне мастер спрашивает вас: Which fields contain the values you ant included in your lookup column? The fields you select become columns in

- °ur lookup column (Какие поля содержат значения, которые вы хотите вклю-"Ть в столбец подстановки? Выбранные вами поля образуют этот столбец). Опре-

лнв объект-источник подстановки, на очередном этапе работы (см. рис. 3.22) вы л*ны указать те поля в этом объекте, из которых будут выбираться конкретные

"Учения. Сначала пометьте их в левом поле с помощью кнопки > I (для каждого

Page 48: Access 2000. Проектирование баз данных-OCR

44 Создание таблиц новой базы данных

Lookup Wizard Which table or query should provide the values for > our lookup column?

Пате AutoCorrect Log Table 11 Менеджер Назначение Приборы, представленные на рынке2 Страны Типы приборое

ЕГиЯИ View

'•' Tables

Cancel

Г Ouet к С E,urh

< Вас* Next >

Lookup Wizard

"3 Available Fields

Рис. 3.21

Which fields contain the values you want included in your lookup column? The fields you select become columns in your lool up column,

Selected Fields

|Код фирмы

Код страны

Cancel <Back Next >

Рис. 3.22

значения по отдельности) или » | (для всех сразу). Затем перенесите их в пра­вое поле.

Теперь повторите те же операции с кнопками, что и в предыдущем окне. Если вы выбрали Next, то в следующем окне мастера подстановок (см. рис. 3.23) к ва­шим услугам появится столбец. В нем содержится перечень значений, из которые следует выбрать нужное (в нашем случае это названия фирм). В окне есть опция

Page 49: Access 2000. Проектирование баз данных-OCR

Гозд°ние и использование полей подстановки 45

Lookup Wizard

Ном wide vrauld you lil.fi the columns in ) our li юкир column'

To adjust the width of a column, drag its right edge to the width уэи i"anf, 01 double-click the tight edge of the column heading to get the best fit.

Г7 Hide key column (recommended)

Название фирмы Alltech НефтьТаз-Наука НПП "ЭКОНИКС" 5 1 r i US Systems _ КОХЕЛП ИНСТРУМЕНТС Sarlin Automation AMEL In_.tr un мпГ"

J

J -

d

-~3S—

Cancel < Back Next ;- Finish

Рис 3 23

Hide key column (recommended) - Коды фирм скрыты (рекомендуется). Мы соглас­ны с разработчиками Access 2000 и также советуем поставить в этом поле флажок.

Если вас не устраивает ширина столбца и вы хотите ее изменить, мастер подста­новок любезно предусмотрел такую возможность: How wide would you like the columns in your lookup column? (Какая ширина столбца подстановки вас устро-iir?). Далее мастер рекомендует: То adjust the width of a column, drag its right edge to the width you want, or double click the right edge of the column heading to get the best fit (Чтобы изменить ширину столбца, надо либо передвинуть мышью его правую границу, установив желаемую ширину столбца, либо дважды щелкнуть правой кнопкой мыши по заголовку столбца и задать его размер).

Теперь щелкните по кнопке Finish, и процесс будет завершен. На экране воз­никнет таблица (см. рис 3.24), где следует нажать стрелку прокрутки. В результа­те в поле Фирмы появится столбец значений, в котором можно выбрать нужную строку Если же щелкнуть не по кнопке Finish, а выбрать Next, то в конечном сче­те вы выйдете к той же таблице, но через две промежуточных стадии (на рисунках они не представлены). На первом этапе следует назвать таблицу или согласиться <• предлагаемым именем (мы уже знаем, что это всегда Table с каким-либо номе­ром). На втором этапе Access 2000 поинтересуется, хотите ли вы перед выводом "л экран итоговой таблицы (см. рис. 3.24) запомнить исходную (см. рис. 3.19).

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

тановки. Для этого в окне базы данных либо воспользуйтесь кнопкой Open (От-РЫть), либо дважды щелкните по имени нужной таблицы. Если выбрать таблицу

,е^, то в качестве исходной откроется та же таблица, что и для подстановки

Page 50: Access 2000. Проектирование баз данных-OCR

46 Создание таблиц новой базы данных

1Ы Microsoft Access

II • Table2 : Table

IK-

ID | Код страны 1 1 2 2 3 3 4 3456 5 3678

(AutoNumber)

Страна | РОССИЯ США ГЕРМАНИЯ ФРАНЦИЯ ИТАЛИЯ

• ^ В ^ ^ Н Н 1 М - 1 п 1 х |

• H H H H . I n l x l Фирмы

'1 -Фирма не указана .1 YSI incorporated — Wilks Enterprise, Inc FCI Environmental • Randox Laboratories, Ltd ОАО "Цвет" Cole-Parmer International Milton Roy Company

^_^

d

d Рис 3 24

в режиме конструктора (см. рис. 3.18). Затем в меню Insert (Вставка) окна базы дан­ных следует отметить пункт Lookup Column (Столбец подстановок). В результате на экране появится уже знакомое нам первое диалоговое окно мастера подстановок (сч рис. 3.20). После этого дальнейшие операции выполняются так же, как и в преды t> -щем разделе. Все этапы данного процесса продемонстрированы на рис. 3.20-3.24

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

• создание непосредственных связей между таблицами; • создание вложенных таблиц данных. Кроме того, и в Access 2000, и в Access 97 существует довольно мощный аппа­

рат гиперссылок, который применим также для формирования таблиц и форм Мы обсудим возможности использования гнперссылок на примере работы с гео­графическими картами в главе 4.

Создание связей между таблицами Когда между двумя таблицами устанавливается связь, это означает, что величины из одной таблицы ставятся в соответствие величинам из другой таблицы.

Page 51: Access 2000. Проектирование баз данных-OCR

Организация связей между таблицами 47

Создавать или изменять связи между открытыми таблицами нельзя, поэтому >|)е 1 началом работы их следует закрыть. Теперь перейдите в окно базы данных

/ рiic. 3.1). Такой переход осуществляется двумя способами Первый варн-,т в режиме просмотра любой формы щелкните по кнопке Database Window

Юкяо базы данных) ©I на панели базы данных. Другой способ: находясь в любом .налоговом окне Access 2000, воспользуйтесь функциональной клавишей F11. ^атем щелкните по кнопке Relationships (Связи) ngj на панели инструментов. Гели в базе данных еще не определено никаких связей, на экран будет автомати­чески выведено окно Show Table (Добавить таблицу) (см. рис. 3.25). Если же не­обходимо добавить таблицы, но связи еще не определены и упомянутого окна нет на экране, щелкните по кнопке Show Table (Добавить таблицу) <=•] (см. рис. 2.1) на панели инструментов.

Show Table

Tables Queries Both

Нз начете Приборы, представленные на рынке2 Страны Типы приборов Фирмы

из Add

Close

Рис 3 25

Итак, вы последовательно добавляли все таблицы, то есть помечали их в окне и затем щелкали по клавише Add (Добавить). Теперь закройте окно Show Table с помощью кнопки Close (Закрыть). В результате появится диалоговое окно Relationships (Связи), представленное на рис. 3.26. Теперь в этом окне вы долж­ны организовать связи между таблицами. Связи устанавливаются через отдель­ные, определяемые пользователем поля. Для связывания этих полей надо выбрать поле в одной таблице и перетащить его, наложив на соответствующее поле в дру­гой таблице.

Ооычно связывают ключевое поле родительской таблицы {внешний ключ) с со­ответствующим ему полем в другой, дочерней таблице. Оно часто имеет то же имя, П о и первое, но в общем случае это не обязательно. Зато строго обязательными

явдяются следующие условия: ^ в одной или в обеих таблицах должно быть поле, принимающее уникальные

(не имеющее дублей) значения во всех записях;

Page 52: Access 2000. Проектирование баз данных-OCR

48 Создание таблиц новой базы данных

• связываемые поля должны иметь одинаковые типы данных. Однако из это­го правила есть два исключения: - поле счетчика разрешается связывать с числовым полем, если в последнем

в свойстве FieldSize (Размер поля) задано значение Long Integer (Длин­ное целое);

- поле счетчика разрешается связывать с числовым полем, если для обоцч полей в свойстве FieldSize (Размер поля) задано значение Replication ID (Код репликации);

• связываемые поля числового типа должны иметь одинаковые значения свойства FieldSize.

Ы Microsoft Access

D & Я Relationships

Менеджер Номер Код фирмы Фамилия Имя Адрес

Фирмы Кодф>ф№1 . 1 Названиефпр Код страны Адрес Адрес 2 j j

kl

ШЕ1 «г, , -rS $~ -

6* D-0

Л па огн | v ^ гри • п 52! А Ю

Назначение 'Зеп_Примеч= 5 Generation s GUIO ;_Lmeage Код

Ll .

sd

Приборы , ... Gen_XapafTef_lj с. Generation —1 s GUID 5_Lmeage Кед zl

Страны

s_Generation GUID Line age

Код _iJ

РИС 3.26

Для начала свяжите поле Код в таблице Страны с полем Код страны в таблица Фирмы. Для этого надо щелкнуть левой кнопкой мыши по одному из связыва­емых полей) и, не отпуская ее, перетащить мышь на другое поле. На экране по­является (см. рис. 3.27) диалоговое окно Edit Relationships (Редактирование связей).

В левой части этого окна указано связываемое поле родительской таблицы. а в правой - связываемое поле дочерней таблицы. Если надо изменить одно из этих полей, то можно щелкнуть в нем по стрелке прокрутки, а затем выбрать же­лаемое значение. Установив флажок Enforce Referential Integrity (Обеспечение целостности данных), вы зададите условие: ни в одной из связанных таблиц нс

Page 53: Access 2000. Проектирование баз данных-OCR

Орган изация связей между таблицами 49

Edit Relationships 1Ш Tablc/Ouerv.

1 Код

Related Table/Query.

J" J j j Код страны j i |

J (7 Enforce Referential IntegnC/

| 7 Cascade Update Related Fields

Г Cascade Defere pe l t ed P eujrds

Relationship Tvpe- One To Many

create

]om Type

Create New

Рис 3.27

будет записей, у которых нет соответствующих «партнеров» в другой таблице. Еще два флажка определяют режимы обновления и удаления полей:

• Cascade Update Related Fields (Каскадное обновление связанных полей) -устанавливает, что значения поля Код страны в таблице Фирмы изменяют­ся в соответствии с изменениями значений поля Код в таблице Страны. Этот флажок имеет смысл установить;

• Cascade Delete Related Records (Каскадное удаление связанных полей) -устанавливает, что если из первой таблицы будут удалены названия каких-либо стран, то удалятся и соответствующие фирмы во BI орой таблице. В рассматри­ваемой ситуации этот флажок вряд ли следует ус ыпавливать - ведь, во-пер­вых, фирма может иметь дочернее отделение с тем же именем в другой стране; во-вторых, если приборы, выпускаемые этой фирмой, в базе данных остаются, то они в случае каскадного удаления могут оказаться «беспризорными».

Заслуживает внимания клавиша Join Type (Тип объединения). Щелкнув по ней, вы откроете список возможных критериев для отбора тех записей, которые °УДут связываться. Вот имеющиеся варианты:

3 связь распространяется только на те записи, в которых значения обеих таб­лиц совпадают;

3 связь распространяется на все записи из таблицы Страны и только на те поля таблицы Фирмы, в которых значения, содержащиеся в объединяемых полях, совпадают;

3 связь распространяется на все записи из таблицы Фирмы и только на те поля таблицы Страны, в которых значения объединяемых полей совпадают.

Для нашего примера выберем первый, самый простой вариант. Вообще стоит Метить, что обычно подобные решения зависят от конкретной ситуации. Итак, в поле Relationship Type (Тип связи) следует указать, какого типа отно-

т*-ния Устанавливаются между таблицами. В данном случае это отношение Опе-°-Мапу (Один-ко-многим).

е"ерь щелкните по кнопке Create (Создать). В окне Relationships появится ""я связи между таблицами Страны и Фирмы, как показано на рис. 3.28.

Page 54: Access 2000. Проектирование баз данных-OCR

50 Создание таблиц новой базы данных

Рис. 3 28

Проделав такую процедуру для исех таблиц базы данных, вы получите необхо­димую систему связей, которая была показана на рис. 2.1.

Вложенные таблицы данных В Access 2000 возможен и другой вариант введения и отображения связей мел ;у таблицами, отсутствующий в предыдущих версиях - использование вложенных таблиц данных. Иерархичность структуры баз данных в этом случае проявляется особенно наглядно.

Вложенными бывают не только таблицы; в них могут включаться связанш^ или объединенные данные, находящиеся и в таблицах, и в формах, и в запрос <i\. поэтому вложенными бывают также и формы, и запросы. В этом разделе мы расскажем именно о вложенных таблицах, а использование механизма для ф<>рм

и запросов отложим до той поры, пока не дойдем до соответствующих разделов Чтобы создать вложенную таблицу, как обычно, сначала войдите в окно 6л|Ы

данных и откройте таблицу Страны в режиме Datasheet view (Просмотр табШ' цы). Она будет выглядеть так, как показано на рис. 3.29.

Не обращайте пока внимания на несколько полусвернутых полей - это по.:я. связанные с репликацией. Откройте меню Insert (Вставка) на панели инструмен­тов в окне базы данных, затем активизируйте опцию Subdatasheet (Вложение таблица). В ответ Access 2000 откроет окно Insert Subdatasheet (Вставка вложсН' ной таблицы), показанное на рис. 3.30. Выберите таблицу, которую требуется ш iл' вить в таблицу Страны (как и в предыдущем примере, это будет таблица Фирм1'1'

Page 55: Access 2000. Проектирование баз данных-OCR

Орган изация связей между таблицей 51

В Microsoft Access ШЫ W, • •л ° S * i ] -

U И'^Ъ I • Страны : Table

+

Re

<l

Код |Gen_rif|5_Gone|s_GUl|s_Lll| Страна | При ]Л 1 1 1С32} data Страна не фазана 02 1 1 1С32} data United Kingdom 03 1 1 1С32} data USA 04 1 1 1C32} data Германия 05 1 1 1C32) data Италия 06 1 1 1C32} data Россия 07 1 1 1C32} data США 08 1 1 1C32} data Финляндия 09 1 1 1C32} data Франция 10 1 1 1C32} data Швейцария

\lurnber) dumber) irnber)

cord н | . | f 1 . | .i | . . | of 10 < I

| . | D | X | 119ЧЭНИЯ

J _d I '

Рис 3 29

Теперь в окне Link Child Fields (Связанные дочерние поля) щелкните по стрелке прокрутки и из появившегося списка выберите в качестве внешнего ключа поле Код страны. В поле Link Master Fields (Связанные первичные поля) первичным мючом пусть будет поле Код.

После этого снова откройте таблицу Страны. В обновленном виде она показана на рис. 3.31. На первый взгляд эта таблица идентична предыдущей, приведенной на рис. 3.29. Однако обратите внимание на значки (+), стоящие возле каждого кода фирмы. Эти значки указывают на то, что здесь в свернутом виде содержится информация. Если щелкнуть по такому значку, соответствующая строка раскро­йся, и вы увидите перечень фирм, относящихся к этой стране, в данном случае США (см. рис. 3.32).

Иначе говоря, на рис. 3.32 продемонстрирована иерархическая двухуровневая структура Страны и Фирмы. Теперь для таблицы второго уровня - Фирмы - про­ведем такую же процедуру с окном Insert Subdatasheet (Вставка вложенной табли-ш ) (см. рис. 3.30). В качестве родительской таблицы примем Фирмы, а в качестве ' ЧеР11ей - таблицу Менеджер. Связанными полями в обеих таблицах (Link Child

e|ds и Link Master Fields) определим Код фирмы. Тогда таблица Фирмы, в свою Р<?дь, будет содержать свернутую информацию о менеджерах, что также показа-

а Рис. 3.32. Если, аналогично предыдущему, вы раскроете затем эту свертку, то ' Дите уже трехуровневую иерархическую структуру Страны и Фирмы и Менед-

й Унс' 3-33). Таким способом в принципе можно создать иерархическое дере-ю°ои сложности, и единственным ограничением здесь будет только удобство рнятия - когда много таблиц, в структуре трудно разобраться.

Page 56: Access 2000. Проектирование баз данных-OCR

52 Создание таблиц новой базы данных

Insert Subdatasheet I Tables Queries Both

Менеджер Назначение Приборы, представ лунные на ptiHi e2 Страны

|Типы приборов

[Link Child Fields

{Link Master Fields

Код страны n ш "3

Cancel

Рис 3 30

Ы Microsoft Access

М - К DO •

Si

EMx] =s-^- м

^ r t H • Страны: Table

• |Gen_np|s_Gene|s_GUl|s_Lli| Код

t1 1 1C32} data 01 1 1 1C32} data 02 1 1 1C32} data 03 1 1 1C32} data 04 1 1 1C32} data 05 1 1 1C32} data 06 1 1 1C32} data 07 1 1 1C32} data 08 1 1 1C32} data 09 1 1 1C32} data 10

Number) dumber) imber)

H H H H H J n M ^ l | Страна | Примечания Страна не указана United Kingdom USA Германия Италия Россия США Финляндия Франция Швейцария

,.г) Рис 3 31

Аналогично, если воспользоваться стрелками прокрутки в указателях связан ных полей (см. рис 3 30) и ввести не одно, а больше полей, можно показать И'1

любом уровне не одну, а, соответственно, больше таблиц

Мастер печати связей В предыдущих версиях Access невозможно распечатать схемы связей между ч- ' лицами, что довольно неудобно. В Access 2000 такая опция предусмотрена

Page 57: Access 2000. Проектирование баз данных-OCR

Орга низация связей между таблицами 53

цЕВЗ

т

Стра

1

+

н е й ? А чэ р -' > E.-S-

ri np|s_Gene|s_GUl|s_Lli| Код | Страна 1 1 1С22} data 01 Ст|.мна НР yta" 1 1 1С32} data 02 United kingdom 1 1 1C32} data 03 ИГЛ

| Код фмриы Название фп Адрес | * ij2 YSI mcoiporate Yelluw Spring * П7 Cole-Parmer Int 7425 North Oal< * 11 Alltecti 2051 Waukegai

1 1 1C52} data 04 Германия 1 1 1052} data 05 Италия 1 1 1C32} data ОС Россия

—\ 'A

| Примечания ана

Адрес 2 | Пр

rmm

ииечания |

— — т — i — —

= f-i

xl Л1 »

J

Рис 3 32

H Microsoft Access ГЛ5ТЗП D E? У

Ei 5> vc« • Л '

Si (3.

©-a Страны: Table ] D | X

|r,en_np|s_Gene|s_GUl|s_Lli| Код Страна Примечания | 1 1C32} data 01 1 1C32} data 02 1 1C32} data 03

Страна не указана United Kingdom USA

Код фириы | Название фи| Адрес Адрес 2 | Примечания YSI mcoiporate i el lu* Spring Cole Parmer Int 7425 North Oak

Номер Фамилия Имя Ад рве 2 Д* пне Джеймс 0 Флеминг Билл 0

Alltech 2051 Waukegai

J 1C32} data 04 1 1C32} data 05 1 1C32} data 06 1 1C32) data 07 1 1C32} data OS 1 1C32} data 09 1 1C321 data 10

Ji»| of 3

Германия Италия Россия _ США Финляндия Франция Шенйцарзия

_ _ _ _ _ _ ^ _ _ _ _ _

Рис 3 33

Page 58: Access 2000. Проектирование баз данных-OCR

54 Создание таблиц новой базы данных

Чтобы напечатать схему связей, необходимо: 1. Открыть соответствующую базу данных. 2. Открыть подменю Tools в строке меню этой базы данных. Выберите пункт

Relationships, чтобы открыть одноименное диалоговое окно. 3. Открыть меню File, а в нем активизировать опцию Print Relationships (Пе­

чать связей).

Резюме 1. Формирование таблиц является первым этапом создания БД, так как табли­

цы в Access - это те первичные, исходные файлы, на основе которых в даль­нейшем строится вся база данных. Access 2000 и предыдущие версии предо­ставляют пользователю несколько разных вариантов построения таблиц.

2. В настоящей главе рассматривались три варианта формирования таблиц: режим таблицы или режим ввода данных, режим конструктора и мастер таб­лиц. Еще два варианта создания таблиц - импорт таблиц и связь с таблица­ми - рассматриваются в том разделе главы 7, который посвящен объедине­нию разнородных баз данных.

3. Наиболее детальным и основательным (и, соответственно, наиболее трудо­емким) методом формирования таблиц является режим конструктора.

4. Для надежного контроля за файлами в Access предусмотрен механизм сис­темных первичных кодов. Этот механизм очень полезен, и если у пользова­теля нет каких-то серьезных причин отказываться от введения первичных кодов, рекомендуется их всегда создавать.

5. Используемые в Access типы данных очень разнообразны и для их эффек­тивного применения следует перед выбором типа еще раз уточнить характер использования этих данных при функционировании БД.

6. В Access 2000 предусмотрены два свойства полей: Format (Формат) и Input Mask (Маска ввода). Обе опции позволяют задавать формат, в котором дан­ные вводятся или, точнее, запоминаются при вводе в таблицу. Свойство Format (Формат) рекомендуется применять при последователь­ном вводе данных в таблицу. Свойство Input Mask (Маска ввода) целесообразно при отображении лите­ральных (символьных) констант, а также при вводе данных в пустые графы (бланки, таблицы и т.д.). При этом пользователю рекомендуется ручной спо­соб формирования маски ввода - он значительно проще.

7. Часто поле может включать лишь определенные значения, которые ишыа содержатся в заранее заданном списке, а иногда - в самом поле, вместе с i'|>0' извольно вводимыми данными. В этих случаях ввод данных можно упг"1" тить и ускорить за счет использования подстановок.

8. Очень мощным средством повышения гибкости и эффективности p:i"°' ты БД в Access является создание связей между таблицами. Во всех i,( 11' сиях Access предусмотрено формирование вешних связей между та" >"' цами. В Access 2000 возможен и другой вариант введения и отображении связей между таблицами, отсутствующий в предыдущих версиях - 11С' пользование вложенных таблиц данных. Иерархичность структуры °а3

данных в этом случае проявляется особенно наглядно.

Page 59: Access 2000. Проектирование баз данных-OCR

Глава IV Создание форм новой

базы данных

• Использование автоформы • Создание формы с помощью мастера форм • Работа в режиме конструктора • Начальная форма при открытии базы данных

или приложения • Построение запросов для отбора нужных данных • Ввод и корректировка данных • Использование гиперссылок

Ьсли таблицы служат первичными, исходными элементами базы данных, то «на выходе» вы получаете формы и отчеты. Как правило, формы используются для получения ответов на запросы пользователя, записи данных в таблицы и/или "вменения этих данных при их вводе либо корректировке. Для распечатки, то есть для получения копии данных на твердом носителе, применяются отчеты.

" Access формы можно создавать разными способами: 3 посредством автоформы; J c помощью мастера форм;

с помощью конструктора; построение разнообразных форм с помощью запросов; Расширение форм за счет включения в них диаграмм, картографических Данных, рисунков.

Page 60: Access 2000. Проектирование баз данных-OCR

56 Создание форм новой базы донных

В настоящей главе будут рассмотрены три первых способа: они позволяю строить формы, в которых значения величин, хранящихся в БД, остаются неиз менными. (Изменение данных - выборочное или нет - требует создания запро са и относится уже скорее к области программирования.) Кроме того, благодаря использованию гиперссылок Access 2000 позволяет включать в формы картогра фические данные, рисунки и фрагменты текстовых файлов.

Использование автоформы Таким способом можно создать форму, отображающую все поля и записи базовой таблицы или запроса. Запрос, после его выполнения, может представлять собой таблицу, структура которой аналогична любой другой таблице и содержит поля и записи. Если у базовой таблицы есть подчиненная таблица, одна или несколько (в смысле, рассмотренном в разделе «Вложенные таблицы данных» предыдущей главы), то в форму при определенных условиях будут включены все ее (их) поля Эти условия будут рассмотрены чуть ниже. Такая структура будет жесткой и од­нозначной, пользователь не сможет ее изменить. Таким образом, автоформа - са­мый легкий, но и наименее гибкий способ построения формы. Теперь посмотрим, как это делается.

В разделе Objects (Объекты) окна базы данных щелкните сначала по клавише 131 Forms|, а затем по кнопке New (Новый). На экране появится окно New Form (Новая форма), как показано на рис. 4.1. В этом окне надо выбрать следующие параметры:

• способ построения формы (в данном случае - автоформа). Здесь возможны три варианта: - Columnar (В столбец); - Tabular (Ленточная); - Datasheet (Табличная);

а таблицу или запрос, на основе которой/которого будет построена форма (в на­шем случае выберите таблицу Фирмы).

Задав нужные параметры и щелкнув по кнопке ОК, вы получите созданную форму в виде столбца (см. рис. 4.2).

Как вы помните, у таблицы Фирмы есть подчиненная таблица Менеджер (см. рис. 2.1). Между тем, как показано на рис. 4.2, при построении автоформы посредством диалогового окна New Form в готовой форме эта связь не отра­жена.

Рассмотрим другой вариант создания формы с помощью автоформы. Для этого в разделе Objects (Объекты) окна базы данных выберите вместо вкладки jj]_Forn«J вкладку D Tables |. Теперь укажите базовую таблицу (пусть это опять будет табли­ца Фирмы) и выполните одно из описанных ниже действий:

• активизируйте опцию Autoform (Автоформа) в подменю Insert (Вставка) на панели меню Access;

Page 61: Access 2000. Проектирование баз данных-OCR

Использование автоформы 57

New Form 33

This weard aijtnrnatn-allv creates a columnar form

Design View Form Wizard

AutoForm Tabular AutoForm Datasheet Chart Wizard PivotTable Wizard

Choose the table or query whete | ф

the obiect'b data corr.cs from I ~3 OK Cancel

Рис 4 ]

3 щелкните по стрелке прокрутки возле кнопки -:§Г | на панели инструментов Access, а затем опять-таки активизируйте опцию Autoform.

В обоих случаях результатом будет появление вложенной формы Фирмы, в ко­тирую вктючена дочерняя форма Менеджер. Последняя содержит запись, иден­тичную соответствующей строке из родительской формы Фирмы (см. рис. 4.3).

Ш Microsoft Access

D I S H # a ? • hi- e l a y

| Ё Фирмы •

и*

Кпд фирмы

Название Фирмы

Код страны

Адрес

Адрес 2

Примечания

D5 Randoi-. Labot atones Ltd

02

Diamond Road Crunilin Co Fax 44 1843 422413

Гзлкии В А Тел 265 44 05

cord к | « | | 5 • 1 »i |>»| 0< 26

d__.

^ • H H H J n M

• • • • M - h M

Antrim В T 23 4Q r"

I •

Рис 4 2

Page 62: Access 2000. Проектирование баз данных-OCR

58 Создание форм новой базы данных

Ы Microsoft Access • 0 , '

ПШ2

*> £i 51 ^ 'a IfBj Фирмы 13 ши

Код фирмы

Название фирмы

Код страны

Адрес

Адрес 2

Примечания

07

Iole-Parmer International

7425 North Oak Park Avenue, Niles, Illinoif, 650714 Fax (708)549 1700

+

Номер | Фамилия § Джонс 0 Фпеминг 0

- • - - .

| Имя | Джеймс Бипл

Адрес | |

1 |

d

Рис 4 3

Создание формы с помощью мастера форм В отличие от автоформы, мастер работает более гибко. Во-первых, вы можете включить в проектируемую форму произвольный набор полей из различных вы­бранных таблиц и запросов. Во-вторых, родительские и дочерние (основные и подчиненные) формы могут быть, по вашему выбору, представлены на экране либо вместе - по образцу вложенной формы - либо по отдельности, но с учетом связей между таблицами. Рассмотрим эти варианты подробнее.

Начало работы будет таким же, как и при использовании автоформы: в раздете Objects (Объекты) окна базы данных выберите Ш Forms |, а затем щелкните по кнопке a New | (Новый). На экране появится окно New Form (Новая форма), по­казанное на рис. 4.1; но теперь надо активизировать опцию Form Wizard (Мастер форм). В нижнем поле того же окна вы можете выбрать первую таблицу или ,а" прос, поля из которых будут включены в создаваемую таблицу. Но удобнее сделать это в следующем окне - Form Wizard (Мастер форм), которое является перш>1М

шагом мастера; оно показано на рис. 4.4. (Кстати, если выбранных таблиц или tf" просов несколько, их все равно придется указывать именно в Form Wizard.) В -,т° же окно можно выйти и другим путем: в окне базы данных, выбрав вкладку Ф°Р" мы, вместо кнопки New задать позицию Create form by using wizard (Создать

Page 63: Access 2000. Проектирование баз данных-OCR

о н ие формы с помощью мастера форм 59

Which field-; do you Want on your form?

Vou can choose from more than one table or query.

boles/Queries

[ b t l e Фирмы

Available Fields.

Я Название фирмы l- пд страны Адрес Адрес 2 Примечания

~3 Selected Fields

Lancel Ue>t > Finish

Рис 4 4

форму с помощью мастера). В окне Form Wizard мастер спрашивает вас: Which fields do you want on your form? (Какие поля вы хотите включить в форму?) -п напоминает: You can choose from more than one table or query (Вы можете вы­бирать поля более чем из одной таблицы или запроса).

Теперь с помощью кнопки > | пли » | перенесите в создаваемую форму поля из таблицы (запроса) - поодиночке или все сразу. Поскольку вы строите форму на основе таблиц Фирмы и Менеджер, то в поле Tables/Queries (Таблицы/За­просы) выбираете таблицу Менеджер. Затем помечаете для будущей формы че­тыре первых поля из таблицы Фирмы и все поля из таблицы Менеджер. В ре­зультате окно Form Wizard будет выглядеть так, как показано на рис. 4.5. На очередном этапе работы надо щелкнуть по клавише Next. Следующее окно мастера (см рис 4.6) предлагает пользователю выбрать один из вариантов итоговой формы: How do you want to view your data? (В каком виде вы хотите представить данные?).

Сначала вы решаете, следует ли остановиться на варианте Form with subform °рма с вложенной формой), схематично представленном на рис. 4.6, или пред-

" о ч е с т ь Linked forms (Связанные формы), то есть соединение основной формы 1 п°Дчнненной/подчиненных, как показано на рис. 4.7. Еще один необходимый

100Р ~ с точки зрения какой таблицы должна быть представлена итоговая фор-d °пция или by Менеджер. О различии между ними будет сказано дальше. Пока

отметим, что если вы отдадите предпочтение варианту by Менеджер, то это -тючает возможность первого выбора (by Фирмы_) - он просто отменяется.

Дальше, щелкая по кнопке Next в каждом окне, следуйте указаниям мастера. а*дом этапе работы он будет задавать два вопроса. Первый: What layout would !ке for your subform? (В какой структуре вы хотели бы видеть подчиненную

(Ф,

Page 64: Access 2000. Проектирование баз данных-OCR

60 Создание форм новой базы данных

Form Wizard

- Е

1 = ~.—-../ „ ^

Tables/Queries

jTdble Менеджер

Available Fields

Which fields do vou want on your Рогт?

JU can choose rrom more than one table or query

Selected F.eld,

Cartel

Ha-EdHHtr ф'ИрМЫ

Код страны ct-ирмы Адрес Номер Менеджер Код фирмы Фамилия

J

Имя |

WMzi

Next > Finish

Рис 4 5

Form Wizard How do you want to view your data '

ФирМЫ_КОД фирМЫ, Hd.E.dHMe ф'ИрМЫ, К и Д стрзны, Фириы_Адрес

Номер, Менедх,ер_Код фирмы, Фамилии, Имя, Мемедм ер_Адрег

(* Form with subform(';; (~ Linked forms

Cancel <Back Next > Finish

Рис 4 6

форму?). Здесь возможны два варианта Datasheet (Табличная) или Tabular (Лен­точная) Второй вопрос What style would you like? (Какой стиль она должна иметь?). Ответив на эти вопросы, вы попадаете в заключительное окно диалога показанное на рис 4 8 Здесь мастер предлагает выбрать имена форм What titles a°

Page 65: Access 2000. Проектирование баз данных-OCR

ние формы с помощью мастера форм 61

Form wizard Н м do \ ои want to view j/our data''

t Менеджер

Фириы_Код фирмь!, Кивание фирмы, Код страны, Фирмы_Адрес_

| Номер, Менедч. ер_Код фирмы,

(Фамилия, Имя, Менеджер_Адрес

:

<" Fcrmwith u t t j rmi i <• L i r l c J f j r n

Cancel < Bark Next > Finrh

Рис 4 7

Form Wizard

А Щ^ J*

X f i w J I

Jvf*

/

Л

if -Я^Г;

1

. 'Л hat title* do you want for your forms?

Form |?исмьС

5ubform ||1енеджер Sutfotml

That's all the information the wizard needs to create \ our form

Do you want to open the form or modify the form s design?

(* Open the form to view or enter information

f Modify the form's design

Г" Display Help on working with the form?

Cancel <Back Finish

Рис 4 8

want for your forms? - а также указать, как форма будет использоваться ьнейшем Do you want to open the form or modify the form's design? (Открыть

v 1У для просмотра или ввода данных либо для того, чтобы изменить ее дизайн?) °Ром случае вы попадете в режим конструктора форм, о чем речь пойдет ниже

Page 66: Access 2000. Проектирование баз данных-OCR

62 Создание форм новой базы данн.

Согласившись с первым вариантом, вы получаете итоговую форму, ее вид Злп сит от тех решений, которые принимались вами па промежуточных этапах рабо с мастером Например, на рис 4 9 показана вложенная форма с подчиненной ф0 мой в виде таблицы и основной - в столбец Здесь ведущая форма - это Фирмк поэтому ее поле номера записи является независимым и первичным, а загшг в форме Менеджер активизируются только тогда, когда идет работа с данным» о соответствующей фирме

Ы Microsoft Access - сю- <S?'*£ ' - б)

ui 1\ ч-> Ъ • *• • * ©

Е ФирмыЗ шз Код фирмы Название фирмы Код страны Адрес

Менеджер

07 1 Cole-Parmer International |

03 ZJ 7425 North Oak Park Avenue, Niles, Illinois, 650714 Fax (708) 549 1700

Re

Номер | §07 0 07 0 07

cord .«| <|l

Код фирмы | Фамилия Джонс Флеминг

1 » | и | > * | of 2 ±U » Recoid ч I < I Г 7 > I > i | > » | of 2e

Рис 4 9

Форма с подчиненной и основной формами, расположенными в столбец, пока­зана на рис 4 10 Роль подчиненной формы Менеджер аналогична описанном} выше, однако есть и дополнительная возможность в зависимости от активизации кнопки мёнёдхедг!1 эта форма может быть раскрыта (если кнопка нажата) или cKpi i та Наконец, еще один довольно интересный пример - форма, созданная «с точ! и зрения» таблицы Менеджер (см рис 4 11) Эта форма является инвертирован ной и в паре форм Фирмы - Менеджер становится ведущей Независимым и пц> вичным здесь является поле номера записи в форме Менеджер, и в соответствии с заданным номером меняются записи в форме Фирмы Подобным же образом создаются и другие формы

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

Page 67: Access 2000. Проектирование баз данных-OCR

Создан ие формы с помощью мастера форм 63

о в а а ? * ^ «г-^. a i # а У , х чз е

Меннджер2

Код фирмы

Н<лвание фирмы

Код страны

Адрес

1 Cole Рагглег International |

03 |

7425 North Oak Park Avenue, rjfes Illinois, 650714 Fax (708) 549 1700

Record " I ' l l 7 » | > l | > » | of 28

шш

Ш МенедаерЗ

Номер Код фирмы

Re

1 2||07

ooid ' « I ' l l 1 •

Фамилия Имя Адрес

ЦДжонс | [Джеймс |

i и (•*! of 2 CFiltetedl «I

- | D | X |

-

•rl

I -Г zl

Рис 4 10

Ы Microsoft Access

о у a a v ы- в i u :

ШШ в»

A | Z| 7 / - b

В Менеджер! •

He

Фирмы_Код фирм1

На юание фирмы

Код страны

Фирмы_Адрес

Номер

Менеджер_Код фи

Фамилия

Имя

Менеджер_Адрес

00,0 _ „ | . J f ,

02 |

YSI incorporated |

03 |

Yellow Spring Ohio 45387 USA Fax 513 767 9353

э| 02 |

Смит |

Джон |

• 1 и |»» | of 4

• • H J n l x l

\

т

Рис 4 11

Page 68: Access 2000. Проектирование баз данных-OCR

64 Создание форм новой базы данных

Итак, вы убедились, что по сравнению с автоформой мастер форм предоставт ет пользователю значительно больше возможностей и позволяет быстро созыва разнообразные формы. Но у мастера форм есть ограничения. Так, не допускает изменять размеры полей или их дизайн; добавлять в формы новые сведения, e c j они не связаны с записями в таблицах или не содержатся в запросах; вводить в ф0п мы диаграммы, картографическую информацию и т.д.

Кроме того, мастер форм не позволяет вносить в формы элементы программ,. рования (или наоборот - включать формы в состав программ). Зато все вышепе речисленное позволяет осуществить конструктор форм. Настало время подробно рассмотреть возможности его использования для тщательного проектирования и изменения форм. Все аспекты, связанные с программированием, будут иссле­дованы в главах 8-11.

Работа в режиме конструктора Использовать конструктор форм целесообразно для создания форм, которые не просто содержат комбинацию полей из разных таблиц, но включают какие-то уни­кальные элементы, причем не обязательно связанные напрямую с исходными по­лями. Например, в режиме конструктора можно разработать начальную форму БД Начальная форма в базе данных играет роль одновременно титульного листа и ог­лавления в книге. Открыв эту форму и, следовательно, саму базу данных, пользова тель может затем выйти из начальной формы в любую необходимую точку БД Конечно, наличие такой формы ни в коей мере не является обязательным - в кон це концов, любой объект БД можно активизировать и из окна базы данных, и от этого она хуже работать не станет. И все-таки начальная форма, которую вы со­здали по своему усмотрению, - это «собственное лицо» вашей базы данных, п ра­ботать с ней будет приятнее.

Итак, создадим с помощью конструктора начальную форму для базы данны\ Контрольно-измерительные приборы. Эта форма должна будет носить то же имя что и БД, и немедленно открываться при открытии самой базы данных. Кро:* того, вы должны иметь возможность выполнять из начальной формы в режгог просмотра любую опцию, входящую в состав базы данных. Пусть это будут.

О Страны; а Фирмы; • Менеджер, • Типы приборов; • Назначение; Q Приборы; а Закрытие и выход из базы данных. Разумеется, начальная форма может выполнять и целый ряд других функции

которые здесь не рассматриваются. Создание форм Фирмы и Менеджер подробно описано в предыдущих разДе

лах. Процесс построения остальных форм не рассматривается специально: в ос новном он аналогичен изученному выше, и пользователь самостоятельно освоН его за несколько минут.

Page 69: Access 2000. Проектирование баз данных-OCR

Робота в режиме конструктора 65

3 Microsoft Access D i u n- н!#а

m -'J - ! i'L - й - ^ с? =s s- - ?j is >']"' - "ft -"" ^ Й' © а - ?i

Forml: Form EM: • Detail

..Г1

Рис 4 /2

Процесс создания начальной формы начните с того, что откройте окно конструк­тора форм Для этого в разделе Objects (Объекты) окна базы данных надо щелк-пиь по клавише щ Form*! (см. рис. 4.11), а затем выполнить одно из перечислен­ных пи-ке действий:

3 щелкнуть по клавише ^tjew | (см. рис. 4.13). Когда на эк­ране появится окно New Form (Новая форма), показан­ное на рис. 4.1, следует выбрать опцию Design View (Ре­жим конструктора);

3 Щелкнуть по клавише М, Design | (см. рис. 4.12); 3 выбрать позицию Create form in Design View (Создать

форму в режиме конструктора). в результате любого из перечисленных шагов на экране воз-

"Mici пустая форма конструктора (см. рис. 4.12) с подзаголов-м Uetail (Область данных). Рядом с этой пустой формой

1 гся панель инструментов - окно Toolbox (см. рис. 4.13). поя сь с°браны кнопки, с помощью которых в режиме конструк-

, издаются всевозможные формы. Если установить на лю-Км°пке указатель мыши, появится подсказка с ее именем. Рнмер, на рис. 4.13 такой подсказкой является Line (Ли-

1*1Д!Ш_1

- °S

II» Toolbox

• | x |

•1 •II

1- \ Аа аЫ • d & Ш Ш - |

J i \ ' n •J£ Line [

Рис 4 13

№ л 4 1 приведены необходимые пояснения к каждой из кнопок на панели 'СтРУМентов

- 1 1 9

Page 70: Access 2000. Проектирование баз данных-OCR

66 Создание форм новой базы данн Ых

Таблица 4.1

Кнопка Название Функция

Выбор объектов Выделяет объекты перед работой с ними

Мастера Включает и отключает мастеров

Надпись Создает поля для описания элемента управления

Поле Создает текстовое поле для ввода, редактирования или просмотра

*1

•I Группа переключателей Создает группу связанных флажков, переключателей. Одновремен может быть выбран лишь один элемент в группе

Создает кнопку переключателя

Запускает макрос или выполняет назначенную ей команду Access

Позволяет вставить подчиненную форму или отчет

Создает поле со списком, позволяющее выбирать значение из списка или вводить его в поле в верхней части списка

Добавляет прямоугольник

Включает в страницу рисунок

Создает окно со списком, предназначенное для выбора значения из списка

Создает флажок

Создает рамку, используемую для отображения свободного объект

Вставляет рамку для присоединенного объекта, объекта, связанное! с данными таблицы и изменяющегося при переходе к новой записи

Вставка разрыва страницы

Создает формы с вложенными страницами наподобие окна базы данных

Добавляет линию

Выводит на экран компоненты ActiveX и другие элементы управлени

ш\ У 5EJ щ\

ш р ]

fbj Е|

fflj r^i|

fPJ

Ы ш

Переключатель

Кнопка

Подчиненная форма/отчет

Поле со списком

Прямоугольник

Рисунок

Список

Флажок

Свободная рамка объекта

Присоединенная рамка объекта

Разрыв страницы

Набор вкладок

Линия

Дополнительные элементы

Заголовок формы На следующем этапе работы введите область заголовка формы. Для этого в оо.та-сти данных Detail щелкните правой кнопкой и в появившемся контекстном меню выберите позицию Form Header/Footer (Заголовок/Основание формы). Теперь в пустой форме появится новая область - область заголовка Form Header. Ее раз меры можно уменьшить или увеличить простым перетаскиванием границ. (kcT

еще один способ, о котором будет рассказано чуть позже.) Формирование заголовка начните с того, что на панели инструментов (см. рис. J

щелкните по кнопке АЛ И переведите указатель мыши (вместе с появившп^ изображением кнопки) в область заголовка. Затем, щелкнув левой кнопкой мы"1

Page 71: Access 2000. Проектирование баз данных-OCR

работа в режиме конструктора 67

трио vi'ite прямоугольный контур нужного размера. Когда вы отпустите кнопку,

пря оугольник по умолчанию станет белым. Теперь в это поле введите имя базы

" ^ iY - Контрольно-измерительные приборы. Записать текст можно любым Д Ьтом, установленным по умолчанию, - наверняка вы все равно станете в даль­

нейшем вносить правки (об этом ниже). На данном этапе форма будет выглядеть как показано на рис. 4.14. Теперь щелкните по контуру заголовочного ноля

oii кнопкой мыши. Линия контура видоизменится, а фоновый цвет заголовоч-го поля сравняется с цветом области заголовка. Если затем щелкнуть правой

•ппкоп мыши в поле заголовка, появится контекстное меню, в котором сле-т вЫбрать опцию Properties (Свойства). Перед вами откроется таблица

свойств заголовочного поля (см. рис. 4.15). Label (Метка) - имя кнопки Аа^ в Ac­cess 2000, поэтому все поля, созданные с ее помощью, будут первоначально иметь что название, пока вы не переименуете их. Порядковый номер возле имени обо­значает просто количество обращений Access 2000 к этой кнопке, и, как уже гово­рилось в постраничных примечаниях, не имеет принципиального значения. В таб­лице свойств вы можете задать и скорректировать все параметры, определяющие содержание и вид таблицы, в том числе:

и Width (Ширина) и Height (Высота) поля заголовка. Вы задавали их вруч­ную, рисуя прямоугольник;

• Border Width (Ширина рамки); Q Back Color (Фоновый цвет заголовочного поля), Fore Color (Цвет надписи

в заголовочном поле), Border Color (Цвет рамки заголовочного поля);

Ы Microsoft Access

Sl- У

l - |n lx|

& Я d? В j - -|EForm2: Form ВЕЭЕЗ

1 i

г

J

i

2

' i • 1 • i • 2 • i • ; i • 4 I • 6 • I • 6 • I • 7 i • '=: • i - 9 - • • 1 С —

• Form Header

• Detc

Контр 1

опьмо-игмерительные приборы

1 1 1 1 1 1 1 1 il

- 1 • z}

-J

3- РИС. 4.14

Page 72: Access 2000. Проектирование баз данных-OCR

68 Создание форм новой базы данных

а Font Type (Тип шрифта) и Font Size (Размер шрифта); • Тор (Отступ заголовочного поля от верхней рамки области заголов

и т.д. Задаваемые значения либо напрямую вводятся в соответствующее поле л

ка)

вы сначала щелкаете в нем мышью, а затем используете появившуюся клав Ибо

ИЩу

Г...| и выбираете нужное значение из списка. Например, параметры заголовочного поля, представленного на рис. 4.14, были

заданы по умолчанию. А для поля заголовка, отображенного на рис. 4.15, прово. дилась следующая настройка (окно настройки см. на рис. 4.16):

Ы Label: Label6 Format | Data | Event

i Top : Width

, Back Style

i Special Effect . .

1 Border Width Fore Color

Other | А,, | , (Ц ; . 0,сЛ2ст . 7,937cm

. . l,678crn Transpaient

. 16~77:i5 Fl i t

. . Transparent . 0

Hairline . 0

. . T ahem a

| x j

. ..... A

! J I

zl

Рис 4 15

J J

У Microsoft Access l-l°M D 0 ; Ш a -. X 4 n © <7 «"' - oa - , og f~ • >>,

m- a I B s i =ь a,<? ^ я cf © j- ?, E Form2 : Form 1

1 7 i 1 '

2

i 1

2

l l .

=J°1*J i l i 2 i 3 i 4 - i f i F i 7 i - 8 i 3 i - £ j

• Form Header

* D e t <

XJ.J I- 1 J ^ Контрольно-измерительнУЯИ

приборы ЩЯк

ill

1 ^

Рис 4 16

Page 73: Access 2000. Проектирование баз данных-OCR

Робота в режиме конструктора 69

размер шрифта (Font Size) был увеличен с 8 до 16; отступ от верхней рамки (Тор) установлен в размере 0,5 см;

j текст выровнен (Text Align) по центру (Center); специальный эффект (Special Effect) - поле приподнято;

j цвет фона поля (Back Color) - темно-серый. Не только поле заголовка, но и каждый элемент формы (таблицы, отчета, стра­ны доступа к данным и т.д.) имеет свою таблицу свойств и может быть доста­

точно тонко и точно настроен.

Командные кнопки клк \'ле говорилось, назначение начальной формы состоит в том, чтобы непосред­ственно из нее можно было выйти в любую форму базы данных. Значит, в началь­ной <|юрме есть командные клавиши, которые и обеспечивают запуск других форм в режиме просмотра. Для этой цели используется кнопка j l , расположенная на панели инструментов). Щелкните по названной кнопке и переведите указатель мыши вместе с появившимся изображением кнопки в область данных Detail. При этом открывается окно мастера кнопок- Command Button Wizard (см. рис. 4.17). Решите, чьими услугами вы хотите воспользоваться - мастера кнопок или кон­структора кнопок. Если вас устраивает первый вариант, следует щелкнуть в окне Command Button Wizard по кнопке Next и двигаться дальше. Если вы хотите применить конструктор кнопок, в том же окне (см. рис. 4.17) щелкните по кнопке Cancel (Отмена). В нашем примере мы создадим новую кнопку с помощью мастера, .1 AITCM r ернемся назад и сделаем то же самое, используя конструктор.

Command Button Wizard

s an,pi*

Ш

What action do you want to happen when the buttun is pressed'

Different actions are available for each cateqor / .

Categories Actions

Record Navgahon Pecord Operations Form Operations Peport Operations Application Miscellaneous

Cancel

Appl, Form Filter C/rjse Form Edit Form Filter

Open Page Print a Form Print Current Form Pefresh Form Data

Next >

Рис 4 17

оздание кнопок с помощью мастера 10 Ь;1рпе''СЧ1и"РИСТуПИТЬ К Р а б о т е ' м а с т е Р поинтересуется: What action do you want

t n when the button is pressed? (Что вы хотите сделать, нажимая кнопку?).

Page 74: Access 2000. Проектирование баз данных-OCR

70 Создание форм новой базы донн

Чтобы ответить на заданный вопрос, выберите ту или иную категорию из следу щего перечня в левом поле окна:

• Record Navigation (Передвижение по записям); • Record Operations (Операции с записями); Q Form Operations (Операции с формами); Q Report Operations (Операции с отчетами); • Applications (Приложения); • Miscellaneous (Разное). Каждой названной категории соответствует набор команд в правом поле экра­

на. Чтобы запустить любую из них, щелкните по кнопке Next.

Command Button Wizard

What form would you like the command button to open-

Ли» Еидэционные рэЬоты Менеджер Назначение Приборы

~3

Типы Приборов Фирмы Згологические приборы 4

Cancel <Bic\ Next > Finish

Рис 4 18

В соответствии с нашей задачей выберите в левом окне категорию Form Ope­rations (Операции с формами), а в правом - команду Open Form (Открыть фор му). Щелкнув по кнопке Next, вы выходим в следующее окно конструктора кнопок показанное на рис. 4.18. (В этом окне среди других файлов базы данных, речь о ко торых пойдет в последующих главах, вы видите и файлы, перечисленные ранее -Страны, Фирмы и др.) Поскольку кнопки предназначаются для открытия форм мастер поинтересуется: What form would you like the command button to open. (Какую именно форму должна открывать та конкретная кнопка, которая сейчас со здается?). Выберите форму Страны, как показано на рис. 4.18, и опять щелкните пс кнопке Next. В очередном окне (см. рис. 4.19) вам нужно выбрать один из двух ва риантов: Open the form and find specific data to display (Открыть форму, чтобы на! ти и отобразить специфические данные) или Open the form and show all the recor -(Открыть форму, чтобы показать все записи). Первый вариант нужен для решет очень специальных задач, поэтому лучше остановиться на втором. Снова ше-чок по кнопке Next, и вы выходите в следующее окно мастера (см. рис. 4.20). №

Page 75: Access 2000. Проектирование баз данных-OCR

в режиме конструктора 71

Command Button Wizard

Sample

О

Do you want the button to find specific informahon to display in the form7

For example, the button can open a form and display the data for a specific employee or customer

^ Open the form and find specific data to display

(•" Open the form and shov all the records

Cancel <Back Next > Finish

Рис 4 19

Command Button Wizard

Sample Do i ou want" text or a picture cm the button"1

If /ou choose Text, you can t ,pe the text to display. If you choose Picture, you can click Erowse to find a picture to display

I (•' Text. [Страны

, - , „ . . Ц1ДШ1Ш.ЦЛ

г

Cancel < Back Next > Finish

Рис 4 20

феделяется уже внешнее оформление кнопки. На кнопку можно поместить над-сь и л н рисунок. Если вы предпочитаете текст, то введите его в поле Text. Если

dM "°-чьи]е нравится картинка, сначала щелкните по кнопке Browse (Просмотр"), Тем выберите подходящий рисунок, указав в поле Picture (Изображение) имя

Сгк;тветствующего файла.

зчальиая форма, которую вы создаете, должна содержать несколько кнопок. • а я из них предназначена для открытия определенной формы, поэтому луч-

( С(1° поместить на кнопке именно имя открываемой формы. Активизируйте 10 Text и введите имя формы - например, Страны. Теперь задача выполнена,

Page 76: Access 2000. Проектирование баз данных-OCR

72 Создание форм новой базы данных

и можно щелкать по кнопке Finish Вновь откроется окно конструктора кноп в котором уже находится только что созданная кнопка (см рис 4 21) Если вас устраивают ее размеры или расположение в области данных, это легко поправи Чтобы задать нужные перетаскиванием, поставьте указатель мыши на один из леньких прямоугольников по контуру кнопки и щелкните по нему Перемести кнопку вы можете, щелкнув мышью по прямоугольнике побольше, который нах дится в левом верхнем углу контура Кроме того, советуем изменить размер щр„( та (это вам уже приходилось делать) Теперь с помощью кнопки ПВ| на паны инструментов Microsoft Access перейдите в режим просмотра формы Вы увилик начальную форму, содержащую пока только одну кнопку - Страны (см рис 4 22) Если щелкнуть по ней, откроется форма Страны

У Microsoft Access I - I n |xl f j D У , а & v ! X ЕЬ © <? \ о w . а_а . & | & ^ £ , . гд( ^

| п -! у а а . х f& is <? ^ & ^ o l t s c f f ^ e a - o . 19 В Form2 : Form I

1 t

j

1

2

J

JnL*^ I 1 i г i „ i 4 т 5 I > I 1 4 I 11 I 1. I 1 I -

• Form Hpar>t

• DC''

• Forn

i l l

"C *—i

i Footer

Контрольно-измерительные приборы

П ~ граны

1 1

I ^b

Рис 4 21

Создание кнопок с помощью конструктора Теперь еще раз создадим кнопку, на сей раз с помощью конструктора Вернитесь к тому этапу работы, который показан на рис 4 17 Если вы выберете здесь не Next, a Cancel, то вновь попадете в окно конструктора (см рис 4 23), в котором увидите объект Command25 Напомним, что Command - имя, которое Access 20и присваивает всем объектам управления, создаваемым с помощью кнопки fJlj а 2э ' просто порядковое число Оно сообщает о том, сколько раз система обрашалас к этому обозначению

Page 77: Access 2000. Проектирование баз данных-OCR

ро^ото врежиме конструктора 73

=шш ID a 'v h " ® ' •« & * &n - ли? °s #*i - © irjT g a a v * - <S '' # <Q л и 1 > Э а - 9.1

и Form2: Form ' " l

i - i

2

J t

1

1 \ "

4

I I 4 I r i 6 I 7 i 8 1 i 1 I i 11 I 1 i l i

nHeat i

Контрольно-измерительные

i

приборы

1

Страны

4 For iFu j fer 1

Рис 4 22

Таким образом, фактически кнопка в начальной форме уже создана Вам осталось тотько изменить ее имя и, если надо, размеры и шрифт Все эти операции вам уже знакомы выполнив их, вы выходите в окно, показанное на рис 4 21, и дальше повто­ряете все действия, описанные в разделе «Командные кнопки» Все остапьные кноп­ки, открывающие формы, вводятся в начальную форму аналогичным способом

Немною иначе создается кнопка, которая закрывает начальную форму, то есть позволяет выйти из формы в окно базы данных В этом случае в окне мастера кно­пок (см рис 4 17) следует выбрать в правом поле среди команд работы с формами вместо Open Form (Открыть форму) команду Close Form (Закрыть форму) В по­явившемся окне (см рис 4 20) надо активизировать не Text, a Picture Тогда в пра­вом поте этого окна вместо MSAccess Form появится ряд опций, среди которых НУЖНО выбрать Exit Когда вы завершите все описанные операции, кнопка закры­тия начальной формы будет выглядеть так, как показано на рис 4 24 Если щелк-,VTb п о этой кнопке, Access 2000 закроет начальную форму и выведет вас в окно оазы данных

''так, вы создали и кнопки для открытия всех форм, и кнопку закрытия началь-и формы Останется только дать ей имя, ведь до сих пор ее рабочее название -

Form с Когда \с

каким-либо индексом (в нашем случае Form2) Это очень просто сделать вы в первый раз захотите закрыть начальную форму с помощью кнопки xj,

ss 2000 предложит вам назвать новую форму или согласиться с ее рабочим ем Здесь вы и введете свое название - Контрольно-измерительные приборы

Page 78: Access 2000. Проектирование баз данных-OCR

74 Создание форм новой базы данных

1Ш Microsoft Access l- lnlxi

<

Б Form2 : Form

1 i

2

1 1

"1

^ J n | j ^ 1 1 I 2 1 1 4 ' 1 > 1 7 I 1 4 I 1 I II k i l l

• Form Hen jet

•fDet d

1 • *

• Forr

Контрольно-измерительные приборы

i

ComrnaricL'5 r

i Fuofer

1 1

1 A

Рис 4 23

Ы Microsoft Access

• & a a a v | g |x |

' OD- I ? =S ' 0 5 -k£ • В a a v- Ф\ с в а - >:

| В Контр ольно-измеритеАные приборы: Form

«1

Контрольно-измерительные приборы

Страны Фирмы

Типы приборов

Менеджер

Приборы

Назначение

Щ*

^•.льр-

-

1 -Г1

Рис 4 24

Page 79: Access 2000. Проектирование баз данных-OCR

Начальная форма при открытии базы данных или прилосожения 75

На рис 4 24 показано, как будет выглядеть начальнаая форма по завершении всех описанных операций Щелкнув по любой кнопке сг именем этой формы, вы можете открыть ее

Начальная форма при открытии б*азы данных или приложения Чтобы база данных открывалась из начальной формы, ну^жна небольшая настрой­ка В меню Tools (Сервис) следует активизировать опицию Startup (Параметры запуска) В появившемся диалоговом окне (см рис 4 2 5 ) щелкните по стрелке прокрутки, и откроется список Выберите в этом списк е имя начальной формы и введите его в поле Display Form/Page (Отобразить форму/странииу)

Startup

Application Title Di 'pla/ Form/Paae

Application Icon

|Кснтр льнг ичмеритс-пьмыр ni rn t_ - j

Г Di ' f ld 'Da ta ta ' f Window

- | Г Display Statu--Ear

OK Z\ Cani?

Advance ^ >

Menu Bar

Kdcfault^

P Allow Full Menus

W Allow Default Shortcut Menus

Л Shortcut Menu Bar

Ifdr-fajlO

N7 Allow Built in Toilbars

W Allo'V Tooltarj'Mrnu Char.Qr-i,

A

Рис 4 25

Затем, чтобы при открытии базы данных на экран не к ыводилось ее окно, сни­мите флажок в поле Display Database Windows (Показать окно базы данных) Это не лишает вас возможности открыть окно базы данн ых, достаточно восполь­зоваться кнопкой ©I на панели инструментов (evi, например, рис 4 20 или кла впатурной клавишей F11 Еще одна существеннгя детали внесенные изменения, показанные на рис 4 25, вступают в силу только при следующем открытии базы данных

Построение запросов для отбора нужных данных Одна из разновидностей запроса на выборку - (жльтр н а основе формы Базой Для него может служить любая заранее подготовленная форма В качестве при­мера мы рассмотрим форму Приборы, котордя показана на рис 4 26 Она взята из реальной рабочей практики и содержит 173 записи, ка.к видно из окна номера записи

Чтобы произвести фильтрацию по полю Приборы, щ;елкните по кнопке "й|, с помощью которой можно изменить фильтр, и все окна формы очистяТ-Я Форма готова к работе в режиме фильтра (см рис 4 27)

Page 80: Access 2000. Проектирование баз данных-OCR

76 Создание форм новой базы данных

ьЛ Mirrosoft Ас г ess File gdit View Insert Format Record.

l-tn|x| Wmduv Hflu

© J- Uj Б Приборы 1-lDlx

Назначение прибора Назначение не указано "3

Вес кг I Примечание2

Характе РИС-ТИКИ

Категория

модель

тип

Фирма

Цена $ I

Примечание

Цена! $ |

(портативный

Checker В

рН-метр

|ЗК0ХЕЛП И

42

0

3

3

НСТРУМЕНТС

3

J

Карманный прибор фирмы HANNA без электрода с BNC-разьемом С вместимость с широким спектром различных рН-электродов Диапазон измереннии 0-10 рН Точность 0 2 рН Питание батареи на 3000 час Пасса 52 6 г

№ по каталог;/

Год по каталог/ Г

Примечание! Новый

тип прибора

Новая Фирма

Новое назначение прибора

Изменить запись

Удалить запись

• | и [»»[ of 172 ^

Рис 4 26

Выберите поле, где вы зададите условия отбора, которому должны удовлетво­рять записи, включаемые в итоговый набор записей. Установим два таких крите­рия: Назначение (в данном случае приборы для контроля кислотности) и Фир­мы (нас интересуют лишь те приборы, которые выпускаются фирмой ORION).

Сначала задайте условие для поля Назначение. Справа от него находится стрел­ка прокрутки. Щелкните по ней, и на фоне формы появится список назначений (см. рис. 4.28). Выберите опцию Измерение кислотности, и этот критерий будет зафиксирован в поле.

Точно так же задайте в поле Фирмы позицию ORION. В результате в двух полях формы появятся установленные вами условия, или критерии отбора (см. рис. 4.29). Это будет соответствовать логической схеме «И».

Если вы хотите сохранить записи, отобранные в результате запроса, щелкните по кнопке й | (сохранить как запрос) на панели инструментов. На экране появит­ся окно Save As Query (Сохраненить в виде запроса), в котором предлагается имя сохраняемого запроса. Либо примите предлагаемое название, либо введите иное. Во втором случае программа иногда может сообщить, что запрос с таким названи­ем уже существует. Тогда следует заменить предыдущий запрос. Кнопка @| воз­никает на панели инструментов только на данном этапе работы, поэтому щелк­нуть по ней надо именно здесь.

Page 81: Access 2000. Проектирование баз данных-OCR

Построение запросов для отбора нужных данных 77

Q Microsoft Access PIIP Ed v Insert R l t f Tiols Wirdo* Help

ЕШЗ

В Приборы: Filter by Form Назначение прибора Вес кг

^3 Примечание2

Характеристики

категория

г i цель

тип

Фирма

Црна i |

Г[.имечание

^ н а ! $ 1

1 |

1

« — и .

3

1 J

3

№ по каталогу

Год по каталогу

Ггимечание'

з" Рис 4 27

Теперь можно выполнить подготовленный запрос. Для этого щелкните по кноп­ке v | (Применение фильтра). В полях формы появятся значения полей одной из отобранных записей (см. рис. 4.30). Это будет та же самая форма Записи, но со­держащая все данные (см. поле номера записи), которые были отобраны на осно­ве заданного фильтра. В поле номера появившейся записи вы увидите ее номер и общее количество отобранных (отфильтрованных) записей. Переходя от одной записи к другой, вы «листаете» их так же, как делали это в начальной форме. За­прос, который вы только что сохранили, заносится в виде таблицы под заданным вами именем в окне базы данных во вкладку Queries. При необходимости вы мо­жете ввести на данном этапе работы новьге условия отбора, уменьшая количество итоговых записей. Это делается с помощью описанных выше кнопок, расположен­ных на панели инструментов.

Предположим, вы хотите отфильтровывать записи последовательно, от шага к шагу задавая дополнительные условия в новых полях и постепенно снижая чис­ло отобранных записей. В таком случае повторяйте описанные выше действия, на­чиная с щелчка по кнопке JjjJ (Изменить фильтр)

Чтобы вернуться к исходному состоянию формы и подготовить ее к обработке нового запроса на выборку, щелкните по кнопке JTJ (Удалить фильтр) на панели инструментов.

Page 82: Access 2000. Проектирование баз данных-OCR

78 Создание форм новой базы донных

В Microsoft Access File? Edit t ie . " In si t Filter Tr.nl. Window Help

© a i ' •"' Qo,e X V S Л • l-'.l . D c j y L -о г" • an • og . g .

H Приборы: Filter by Form Назначение прибора Вес кг

"3 Примечэние2

Характеристики

Анализ воздуха на содержание аэрозолей и кислых газов анализ биообъектов _i Анализ летучих органических соединений (бензол толуол трихлорэтилен кснпол трихлорбензол) е поверхностных е -Анализ летучих органических соединений (бензол толуол трихлорэтилен ксилол хлорбензол) в поверхностных ВОДЕ Анализ нелетучих гербицидов производных фенола, алкилсульфидов ионов тяжелых металлов и некоторых редких а Долговременный мониторинг растворенного кислородапроводимости солености кислотности температуры общей! Измерение растворенного кислорода температуры проводимости солености кислотности общей концентрации в П| Измерение аммония ^ _ _ ^ _ Измерение кислотности

Цена$

Примечание Н- по каталог-/

Год по каталогу Цена! $

Примечание!

Рис 4 28

Итак, повторим и сведем воедино основные правила отбора (фильтрации) за­писей с помощью формы:

• отбор может осуществляться по нескольким условиям, как задаваемым од­новременно (схема «И»), так и взаимоисключающим (схема «ИЛИ»);

• если одновременно задать различные критерии отбора в нескольких полях (схема «И»), фильтр будет возвращать только те записи, в которых каждое из полей отвечает всем указанным условиям;

• предположим, вы хотите указать несколько значений, которые запись, вклю­чаемая в результирующий набор, может содержать в одном поле (схема «ИЛИ»), Выберите вкладку Ог (ИЛИ) (ее ярлычок находится в левом ниж­нем углу окна). Фильтр будет возвращать записи, которые содержат в полях: - все значения, указанные во вкладке Look for (Найти для...); - все значения, указанные в первой вкладке Or; - все значения, указанные во второй вкладке Or, и т.д.;

• чтобы найти записи, имеющие в конкретном поле (в данном случае в поле без списка) пустые или непустые значения, введите в него выражение Is Null или Is Not Null1.

Величина поля, которому ЕЮ присвоено никакого значения. Отмстим, что она не яиляется эквивален­том числа 0 или пустой строки

Page 83: Access 2000. Проектирование баз данных-OCR

Ввод и корректировке данных 79

дВЗШШЗШШШШШШШШШШ^ШШШШ^Ш File £dit View Insert Filter Jooh Window Help

& Q . < i b i ••' - ciu-.e x 7 0 a - L ] .

ГЛ5Ш

В Приборы: Filter by Form ош> Назначение прибора Вес кг 'И иерениекислотности' "3

Примечание '

<арактеристики

Категория

МОДеЛЬ

тип

Фирма

Цена $ |

Примечание

d

~3

"3

N" по каталог)'

Гол по каталогу Цена! $ |

Примечание!

15 J

Рис 4 29

Ввод и корректировка данных Как уже говорилось, для ввода новых данных иногда используются таблицы, но удобнее применять для этой цели формы.

Рассмотрим такую возможность на примере формы Приборы, с которой вы ра­ботали в предыдущем разделе.

Выведите ее на экран. Теперь с помощью кнопки в поле номера записи задайте его максимально возможное значение (см. рис. 4.31). Всего в форме имеется 173 записи; значит, установите указатель на цифре 174. Как правило, перед вводом новых записей в основную форму необходимо предварительно пополнить или обновить словари (формы Страны, Фирмы, Типы приборов, Назначение). От­крыть перечисленные формы можно как по отдельности, из их собственных окон, так и из формы Приборы. Рассмотрим последний вариант.

Для подобных случаев в форме Приборы есть кнопки Новый тип прибора, Но­вая фирма, Новое назначение прибора. Механизм их создания подробно обсуж­ден выше.

Предположим, что перед вводом новой записи по приборам необходимо ввести новые записи в словарные формы Страны и Фирмы. Начнем с последней.

Щелкните по кнопке Новая фирма. На экране появится форма Фирмы, гото­вая для ввода новой записи: все поля пусты, а в поле номера записи установлено

Page 84: Access 2000. Проектирование баз данных-OCR

80 Создание форм новой базы данных

Ы Microsoft Access ] File Edif View Insert Format

i D c& e & a v-M, • и в a v -

ЕШП Tools Window H l,_

• * 21 'il /' "a v w • • d - g назначение прииира "3

IU кислотности ~2 Прим~чание2

Характеристики

Категория

модель

тип

Фирма

Цена$ I

Примечание

Цена1 $ 1

|портативныи

|[Иодель 265

рН-метр

JORION

яшнШш

• • г

J

-\ d

zi

Полностью влагозащищенныи портативно рН-метр Встроенная память на 60 измерении Выход - интерфейс R5232 Точность по рН - 0 005 по напряжению-0 rnV по температуре - 0 1 ОМожет комплектоваться полным набором пoлeвt принадлежностей

№ по каталогу

Год по каталог/ 1 mi

Примечание

Новый тип

прибора

Новая фирма

Новое назначение прибора

Изменить запись

Удалить запись

>•! of -a (Filtered) J T

_Г1Г Рис 4 30

значение 27, тогда как всего в словаре Фирмы 26 значений (см. рис. 4.32). Если вам не требуется заносить новое значение в словарь Страны, вводите новую фир­му, которая зарегистрирована в одной из стран, уже включенных в этот словарь Если надо ввести также и новое значение страны, то в окне формы Фирмы (см рис. 4.32) следует щелкнуть по кнопке Новая страна. В результате на фоне двух предыдущих форм откроется форма Страны, готовая к вводу информации. Вне­сите в поле Страна наименование страны - например, Португалия (см. рис. 4.33) Порядковый номер, выполняющий здесь функцию кода, вводится автоматичес­ки. Затем воспользуйтесь клавишей Enter на клавиатуре. Теперь можно вносить текст в следующее поле - Примечания. После повторного нажатия клавиши Enter форма Страны закрывается. Далее введите название фирмы в соответствующее поле формы Фирмы (см. рис. 4.32). Новой фирме должна соответствовать страна, поэтому щелкните по стрелке прокрутки в этом поле и выберите любую страну из раскрывшегося контекстного списка. Обратите внимание, что в нем уже со­держится и недавно введенная Португалия (см. рис. 4.34). Выбрав страну, введи­те в одноименное поле название фирмы (в нашем примере - TAAG).

Точно так же вы должны действовать, вводя запись о новом приборе в форме Приборы (см. рис. 4.35). Во все поля, содержащие стрелки прокрутки, данные можно включать двумя способами. Первый: вы выбираете нужную позицию из списка. (Так, в контекстном списке фирм, показанном на рис. 4.35, уже содержится

Page 85: Access 2000. Проектирование баз данных-OCR

Ввод и корректировка данных 81

Fj\t! Edt View Lnsert Fnrmat Records lools Window Help

D GS H - & E i "'•

E M U

Назначение прибора

Категория

модель

тип

Фирма

ЦенэЗ I

Примечание

Цена! $ I

Примечание!

3 Примечание2

Характеристики

ТЗ

"3

3 11

~з № по каталогу

Год по каталог,'

Новый

Прибора

Нивая Фирма

Новое назначение прибора

Изменить запись

Удалить запись

1"1 • ! °< " 4

Рис 4 31

новая фирма TAAG.) Второй вариант: вы вводите данные с помощью клавиа­туры.

При необходимости вы таким же образом вводите новые позиции в словарные формы Типы приборов и Назначение. В поля, не имеющие стрелок прокрутки, данные вводятся с клавиатуры. Так, в поле Вес, кг указано числовое значение 14. После ввода всех необходимых сведений нажмите клавишу Enter, чтобы запом­нить все сделанные изменения.

Форму можно использовать не только для ввода, но и для удаления информа­ции. Обратите внимание, что каждая из форм, показанных на рис. 4.30-4.35, вклю­чает кнопки Изменить запись и Удалить запись. Для корректировки данных от­кройте нужную запись, произведите необходимые изменения, а затем с помощью клавиши Enter отдайте программе команду запомнить их. При удалении записи сначала откройте ее, а потом просто щелкните по кнопке Удалить запись.

Итак, в этом разделе мы стремились показать, что формы - очень мощный и гиб­кий инструмент работы с данными. Однако в ряде случаев (например, при подго­товке формы для ввода, корректировки и удаления данных) штатного про­граммного обеспечения Access 2000 может быть недостаточно для выполнения необходимых операций. Это легко объяснить: проблемы, которые возникают в по­добных ситуациях, часто оказываются специфическими, и их решение не всегда предусмотрено стандартными программными средствами.

Page 86: Access 2000. Проектирование баз данных-OCR

82 Создание форм новой базы данных

Ш Microsoft Access - [Фирмы] d File £dit View Insert Format Records loots V^iridiv* Help

D ^ Q S E i ? i / ' >i • r>a • og - C7J .

й - и s a y t ' -n •- $i \\ ъъ *& •• *

l- lnlx

© j - 0 -Код Фиомы 27

Название фирмы

Стоана

Апоес

Ааэес2

Примечания

Изменить запись

Удалить запись Но^ая страна

WI» Рис 4 32

В данном случае вы имеем дело именно с такой ситуацией Чтобы выполнить ряд функций, необходимо использовать не только язык запросов (SQL), no и мак­росы, а также средства языка Visual Basic for Application (VBA) Подробнее об этом пойдет речь в главах 10 и 11

Использование гиперссылок Использование гиперссылок рассматривается здесь на примере работы с геогра­фическими картами

Access и географические карты В ряде случаев сопряжение базы данных с географическими картами совершенно необходимо Однако такая функция в самой системе Access, взятой отдельно, не предусмотрена Если же рассматривать Access как часть программного продукта Microsoft Office, то некоторые возможности для работы с картами все-таки име ются В составе Microsoft Excel, входящем в пакет Microsoft Office, есть программ ный модуль Microsoft Map, предназначенный для отображения данных на гео графических картах Однако на практике пользоваться этой программой очень неудобно Во-первых, Microsoft Map работает только с картами формата MAP который поддерживается лишь в программных продуктах корпорации Maplnlo

Page 87: Access 2000. Проектирование баз данных-OCR

Использование гиперссылок 83

И Micro5™* Access

f\ Ed t Mew trrert Format Pec i rk TL : )L ^/ndib/ Help

Q t j U S B » ° 'DO- =g - 0 . 0 -

I Фирмы JOj_Xj

Кате i

моден

тип

Фи| г

Коп Фиомы

На шш Код

Страна

Примечания

Португалия

Удалить Изменить

11 • ! • I " ! °< 11

Изменить запись

Удалить запись Ниеая страна

Г ~ > | " | > « | ОТ 27

Рис 4 33

(1акой монополизм, как вы понимаете, создает для пользователя ряд трудностей) Во-вторых, программист вынужден постоянно переносить карты и другую инфор­мацию из Access в Excel и обратно В настоящем разделе книги мы покажем, что возможен принципиально иной способ работы с картой в системе Access С по­мощью гиперссылок - полей связи в базе данных Access - пользователь свобод­но и быстро переходит к документу в сети Internet, в локальной сети или в теку­щей базе данных, да и вообще практически к любому документу в самой системе Microsoft Office и вне ее Верно и обратное используя гиперссылки, вы можете перейти из любого документа в форму или табпицу базы данных Access

Поиск карты Выше уже говорилось, что Excel предъявляет к картам довольно жесткие требова­ния Предлагаемая технология использования гиперссылок, напротив, допуска-ет работу с любой картой в любом формате, если ее можно вывести на экран мо­нитора Затем надо сделать снимок карты с помощью таких программ, как Adobe ' hotoShop, Screen Print Gold, HyperSnab-DxPro и др (которые не входят в состав Microsoft Office) Теперь можно конвертировать карту в любой нужный графи­ческий формат Чтобы впоследствии у вас не возникало трудностей в работе с кар­той в Access 2000, поместите ее из полученного файла в окно, открытое в Word 97 или й Word 2000 Карта будет иметь формат DOC Конвертированные таким образом

Page 88: Access 2000. Проектирование баз данных-OCR

84 Создание форм новой базы данных

Ы Microsoft Access File- Edit View Incei t Former Records

a ei Q ; <s a v i • " l i n d j . v Help

В J • гч . ПИ Прибор! Г E Фирмы

Катег

мо дел

тип

Фирг,

Цена;

шш Коп Фиомы 27

Название фирмы ITAAG

Страна

~3

Адрес

Ааоес2

Примечания

Изменить запись

~3 Германия Италия Россия США Финляндия Франция Швейцария Португалия

Удалить I Запись

гз-

Новая страна I

• | " | " | < " 2 7

Рис 4 34

файлы в формате DOC показаны на рис. 4.36 (для Архангельской области) и 4.37 (для Ленинградской области).

В нашем примере для конвертирования были использованы карты, разработан­ные в ФАПСИ и входящие в составе одного из банков данных по ЧС (он рассмат­ривается в настоящей книге). Автор не участвовал в создании этих карт, и сначала они вовсе не предназначались для конвертирования - лишний аргумент в пользу того, что для подобных целей пригодны практически любые географические карты

Установка гиперссылок в базе данных Откройте таблицу Filel. Обратите внимание на поля Название области и Назва­ние города (для наглядности они поставлены рядом, как показано на рис. 4.38) Две самые первые записи касаются Ленинградской (Санкт-Петербург) и Архан­гельской (Архангельск) областей.

Сформируйте гиперссылку, которая позволяла бы, например, из каждой стро­ки быстро выйти в соответствующую карту. Для гиперссылки необходимо от­дельное поле. Создайте его и назовите Карта, а затем определите его в конструк­торе таблиц как поле гиперссылки (см. рис. 4.38). Теперь подготовка завершена, и можно непосредственно вводить гиперссылку. Как только вы устанавливаете курсор в новоиспеченное поле Карта, активизируется кнопка %\ - Insert Hy-perLink (Вставить гиперссылку). Щелкнув по ней, вы вызовете одноименное

Page 89: Access 2000. Проектирование баз данных-OCR

Использование гиперссылок 85

r^ pi|p ETdit View Insei t Format Re-Lurd.? Tools Window H>=lp

Щ х sJiU

L'J.

© а - Э -Назначение прибора Вес кг 14

[ l_r IP._ рние гцюеодииости ~3 Примечание2

Характеристики

Категория [портативный 3

тип

Фирма

Ч |

Г| 4.зние

" 3

u ь | Прим «ние !

(шва з v/ilks Enterprise Inc YSI incorporated АО "ЭКРОС" ГЕОХИРАН Нефть-Гаэ-Наука НПГГ'ЭКОНИКС ОАО "Цвет"

N° по каталогу

Год по каталогу

' У " « ' . - - •-••*.

, fflf^»^^ •- ••'•"•К"™

Новый ТИП

прибора

Новая ?ирма

Н овое назначение прибора

Изменить запись

Удалить запить

1-4 i | > | | > » | of 1 7 1 lL ^L

Рис 4 35

окно (см. рис, 4.39) В нем вы можете ввести следующие варианты ссылок (Link To):

• Existing File or Web page (Существующий файл или страница Internet); • Object in This Database (Объект текущей базы данных); • Create New Page (Новая страница); • E-mail Address (Адрес электронной почты). В рассматриваемом примере вы имеете дело с уже существующим файлом кар­

ты (допустим, это Архангельская область). Он расположен по адресу: С:\Мои документы\Мои рисунки\Архангельская областьЛос

Поэтому следует воспользоваться вкладкой Existing File or Web page (Суще­ствующий файл или страница Internet). Указанный выше адрес вводится в поле, кУДа Access 2000 предлагает поместить данные: Type the file or Web page name (Вве­дите имя файла или Web-страницы1). Ввести адрес можно с помощью либо клавиа­туры, либо кнопки Browse for => File (Просмотр => Файл) на рис. 4.39. Тем самым адрес включается в список, который раскрывается в этом же окне щелчком по стрел­ке прокрутки и появляется в соответствующей строке поля Карта (см. рис. 4.38).

™eb, И'ш W W W (Wor ld Wide W e b - Всемирная паутина), - совокупность всех гипертекстовых ( H T M L ) документов, которые размещены на серверах Internet

Page 90: Access 2000. Проектирование баз данных-OCR

86 Создание форм новой базы донных

Рис 4 36

Если вы откроете теперь какую-либо форму, содержащую поле Карта, то обнару­жите в нем такую же, как и выше, гиперссылку с теми же функциями (см. рис. 4.40) Однако помните, что поле гиперссылки не создается в форме автоматически: его надо включить туда с помощью мастера, конструктора и других уже известных вам средств.

Итак, гиперссылка создана и введена. Обратите внимание на то, что гиперссыл­ку можно создать из каждой записи в любой файл или его точку.

Если вы теперь поставите в поле гиперссылки указатель мыши (при этом кур­сор примет вид указательного пальца) и щелкнете, то мгновенно переместитесь в требуемый файл - в данном случае в карту Архангельской области, показанную на рис. 4.36 Если вы хотите выйти в заранее заданную точку этой карты, то предварительно следует открыть стандартную панель Рисование в программе Word и пометить нужную точку Затем оформите ее как закладку и укажите имя закладки в адресе гиперссылки, добавив символ #. Например-

С-\Мои документы\Мои рисунки\Архангельская область.doc#al Здесь al - название закладки

Установка гиперссылки из карты в базу данных Примерно так же можно построить и обратную гиперссылку - из карты в баз\ данных Сама карта в формате DOC уже является гиперссылкой (чтобы убедиться

Page 91: Access 2000. Проектирование баз данных-OCR

Использование гиперссылок 87

Рис 4 37

в этим, достаточно открыть файл карты в Word и увидеть там курсор в виде указа­тельного пальца). Она позволяет переместиться по любому адресу, если после­дний включен в список, который раскрывается при щелчке по стрелке в поле Ад­рес на панели инструментов. Вопрос только в том, как ввести нужный адрес в этот список

Щелкните по уже знакомой вам кнопке <&| - Insert HyperLink (Вставить ги­перссылку) В результате на экране появится другое поле с тем же названием Пусть вас не смущает то, что в данном случае оно русское - Добавить гиперссыл­ку (Дело в том, что карты конвертированы не в Access 2000, а в русифицированной версии Word 97 ) В верхнее поле названного окна вводится адрес гиперссылки, ко­торый обеспечивает переход в базу данных. Как и раньше, для этого есть два спосо­ба набрать адрес с помощью клавиатуры либо выбрать его из списка, который от­крывается при щелчке по кнопке Обзор. В нашем случае этот адрес будет таким:

С:\Мои документы\Мои рисунки\Архангельская область doc#Form ЧС (Элемент Form ЧС предназначен для открытия формы ЧС непосредственно

пРи переходе по гиперссылке.) Теперь щелкните по кнопке ОК, и адрес будет вне­сен в список, показанный в окне карты (см. рис. 4 42) Вновь, как и в предыдущем Разделе, гиперссылка создана. Чтобы запустить ее, надо открыть список, найти ее адрес и нажать клавишу Enter. Форма ЧС (см. рис. 4 40) откроется непосредствен-110 и* карты Точно таким же способом можно открыть и таблицу.

Page 92: Access 2000. Проектирование баз данных-OCR

88 Создоние форм новой базы данных

Q Microsoft Access File Ed г

Ё^ View Insert ( :orrnat Records Tools Window Help

aay X R5 IB ъ + >X © £ • \2) .

Filel: Table шш Нздизннд области | Название города | Карта J3

г Санкт Петербург Архангельская область Тюменская область

Калининградская область КАЛИНИНГРАД (К Коми ССР Коми ССР

Республика Саха (Якутия ЯКУТСК Калининградская область КАЛИНИНГРАД (К г Москва

Владимирская область Ростовская область Владимирская область Московская область г Москва г Москва г Москва ;old к |

САНКТ ПЕТЕРБУР С \Мои документы^! 1ои рисункиУПрнингр^дгыя о АРХАНГЕЛЬСК С \Мои докуиенты\Мпц рисунки'1 Аркянгелы t а* оЬгпсть

Л

ДОМОДЕДОВО МОСКВА МОСКВА МОСКВА

I и |»»| of 846 _d ^ ЕГ

Рис 4 38

Insert Hyperlink

Link to 7>xt to drplaj/ | _ \f1on д . ументь! \Мги рисунки мр/анг^нь к^я ЯсгеепТ|С_

Tvpe th<=* file.or Web page name

I,MLM ДОК^ МРНТЫ\МИИ рисунги\Архангельская область doc

select Frcm li<*

Q Recent File-

© Browsed

a Inserted « t i n l s

rile fffC /Мои%20документы/Банки%20даммыхи^. tile jffC /Мои%20документы/Банки%20данных С \Мои документы\Банки данных^Ы mdb#Fon fil-= ///С /Мои%20документы/6 энки%20даннь СДМои документьцМои рисумки\Архангелы:ка tile ///С /Мои%20документы/Банки%20даммых

\Мои документы\Мои рисунки\Ленинградо а \Мои документы\Бамки данных^Ы mdb#Tab

hie ///С /Мои%20 документы/Рис 1 doc <~ \Мои документы\Рис1 doc _*J

Ьгс A>se fcr

Fie

Web PdQe

Bookmark

Рис 4 39

Page 93: Access 2000. Проектирование баз данных-OCR

Использование гиперссылок 89

В Microsoft Access File Edit Vien1 In^ei t Format Rei-urd., Tools Window H-\p

£1 51 v / -Й

HME • * Й' © ?l

ГдШ ВиаыЧС

Наименован

ДатаЧЭС

Время ЧЭС

Название об

Название pa

Пострадало

Погиоло

Характерист

Материальн1

(10305

Обнаружение разлитии ртути е здании

2/09/1935

00 00

г Санкт Петере чрг

г Санкт Петерб-ipr Ры^чргсшнрс

и

0

В здании Парголовского комитета по земельной

'•'•Ш

Последствие

Название го

Карта

Пострадавших нет

LAHKT ПЕТЕРБУРГ

С \Мои док4менты\Мои ри<

ecord н | -* | |~~ 1 » I >• l»»l of 84в J

Рис 4 40

Добавить гиперсеьику

Связать с файлом/URL И

]С \М и дп| >мРнты\Еанки данных'|±1 гп±#Ригп Ч( | _ J Об^

о , — ^ Еведите или выберите гт>ть к док МРНТ/ на котирый будет p 4 J ® 1 у\ з ывать ссыпка ?то МОЧ'РТ быть адс^ Интернета (URL) или * — документ на жестком или сетевом диске

|П / ть \£анки данныхИМ rndb#Form НС

Ймч объекта в документе ^ББПДИТЬ НРППД^3ТРПЬН-И

Об^ор

, ,л ^а ЧтоЬы перейти к конкретному объе^ ту в джумрнте ('акладке, * sЬ] именованному диапазон , объекту ба^ы данных или слайд у \,

надо указать имя зтого сегекта

| р Игполкдоеать для гиперссылки относительный п/ть

OV Отмена

Рис 4 41

Page 94: Access 2000. Проектирование баз данных-OCR

90 Создание форм новой базы данных

IV Microsoft Word - Архангельская oojncTb.doc

Рис 4 42

Резюме 1. В отличие от таблиц, формы - это элементы, как правило, получаемые i

«на выходе» базы данных. Обычно они используются для получения oil'' тов на запросы пользователя. Но формы могут применяться для также ид записи данных в таблицы и/или изменения этих данных при их вводе лп< корректировке.

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

3. Содержание и структура формы изменяются в соответствии с запросами, к торые формирует пользователь. Возможности форм значительно расшир ются за счет использования гпперссылок (в частности включения географ ческих карт), рисунков и др.

4. Для создания начальной формы БД удобно использовать конструктор фор Начальная форма в базе данных играет роль одновременно титульного Л1Ь та и оглавления в книге. Открыв эту форму и, следовательно, саму базу да! ных, пользователь может затем выйти из начальной формы в любую необх< димую точку БД.

Page 95: Access 2000. Проектирование баз данных-OCR

Глава V Создание отчетов новой

базы данных

• Использование функции автоотчета • Включение подчиненного отчета • Группировка записей • Статическая копия отчета

В Access 2000 отчет создается почти так же, как форма. Разница между этими дву­мя объектами базы данных состоит не в технологии их построения, а в их целевом назначении. Если с формой пользователь будет работать на экране, то отчет пред­назначен для печати и представляет ценность как материальная копия документа, полученного из базы данных.

Предусмотрены следующие стандартные способы формирования отчета (как видите, они аналогичны способам построения форм):

• с помощью автоотчета; • с помощью мастера;

! • с помощью конструктора; • с помощью запросов. Именно по указанной выше причине здесь рассматривается только формиро­

вание отчета с помощью аетоотчета, а также включение в отчет подчиненной фор-1- Мы. Работа с запросами будет проанализирована в главе 9. )- Однако в работе с отчетами все-таки есть свои нюансы. В отличие от форм,

с отчетами возможны следующие операции:

Page 96: Access 2000. Проектирование баз данных-OCR

92 Создание отчетов новой базы данных

а создание и использование статических копий отчета; • группировка данных в отчете.

Использование функции автоотчета Отчет, созданный таким образом, будет отображать все поля и записи базово таблицы или запроса.

В разделе Objects (Объекты) окна базы данных щелкните сначала по кнопке Ш Reports! (см. рис. 5.1), а затем по кнопке New (Новый). На экране возникш i

окно New Report (Новый отчет), как показано на рис. 5.1. В окне надо выбран, следующие параметры:

• способ построения отчета - в данном случае автоотчет, который можно i. строить в одном из двух вариантов: - Columnar (В столбец); - Tabular (Ленточный);

Q таблицу или запрос, на основе которых будет создан отчет. В нашем слу выбирается таблица Приборы, представленные на рынке, так как она с держит максимум информации.

Задав эти параметры и щелкнув по кнопке ОК, вы получите заказанный ( i чет в виде столбца, как показано на рис. 5.2. На рисунке представлена перв.1, страница отчета. В действительности, если вы захотите его распечатать, он С' дет расположен в соответствии с рис. 5.3, где показано несколько начальных страниц отчета.

Включение подчиненного отчета Рассмотрим эту возможность на примере хорошо знакомой вам пары таблиц Страны (основная) и Фирмы (подчиненная). Создадим отчет на основе первоп таблицы, а затем включим в него подчиненный отчет на базе второй.

Первую часть задачи вы решите с помощью автоотчета, как было рассмотрено выше. Результат вашей работы показан на рис. 5.4. Сохраните полученный отче г под именем Страны.

Теперь надо вставить в него подотчет Фирмы так, чтобы в итоговом документе фирмы были сгруппированы по странам, в которых находятся.

Откройте только что созданный отчет Страны в режиме конструктора (Design view).

Убедитесь, что кнопка vS\ - Control Wizard (мастера) - активизирована. За­тем на панели управления конструктора щелкните по кнопке ш] - Subform/Sub-report (Подчиненная форма/отчет). Теперь на поле конструктора в области дан­ных Detail выберите точку, к которой следует «привязать» подотчет. Если в облас i ч данных не хватает места, перетащите нижнюю рамку области данных вниз. Koi -да вы определите нужную точку, на экране возникнет окно конструктора отчетов (см. рис. 5.5), который сообщит вам: You can use an existing form to create your subform or subreport, or create your own using tables and/or queries

Page 97: Access 2000. Проектирование баз данных-OCR

Включение подчиненного отчета 93

New Report

llThi-j wizard automatically fcreates a columnar report.

Oei.ign View Peport Wizaid

AutoReport: Tabular Chart Wizard Label Wizard

jhoose the table or query where Ъе obiect's data comes from:

Приборы, предстаеленныа

OK cancel

Рис. 5. 1

(Для создания подчиненного отчета вы можете использовать существующую форму или создать свою). Также конструктор поинтересуется: What data would you like to use for your subform and subreport? (Какие данные вы хотите использо­вать для подчиненного отчета?).

ы Microsoft Access - [Приборы, представленные на рынке2] ПШ2

в

а • Оосе » - © J • 15) .

*J

Приборы, представленные на рынке2 ~3

fioj

Код |

Номер модели |:hed<er в

Категория

Примечание I

Примечание!

Год но каталогу

Характеристики

\ 1

Карманный прибор фирмы HANNA6ea электрода с BNC-эв J ъемом 2вмесгимлсть с широким спектром различны* рМ• электродов Диапазон иэмеренний 0-10 рН Точность 0,2 рН Питание батареи на 3000 час Насев 52,6 г 5еэ электрода с BNC -разъемом Z вместимость с ш ироким спектром различных рН-электродов Диапазон иэмеренний 0-1 ОрН Точность 0,2 рН Питание батареи на 3000 час Насса 52,6 г

Цена 1$

Вес*г

Код тика

'•it: Пвикч ание i :^ffffflif''-\r "в" * "*• * А

Рис. 5.2

Page 98: Access 2000. Проектирование баз данных-OCR

94 Создание отчетов новой базы данных

[м - a' Р и ш ш F,t - •_!_. - * • в а - © -

Рис. 5.3

Форма для подчиненного отчета у вас уже есть - Фирмы Subform, поэтом используйте ее: Use an existing report or form. Если вы намерены создать со' ственную форму, то выберите другую позицию: Use existing Tables and Queries Теперь щелкните по кнопке Next, чтобы перейти в следующее окно конструктора (см. рис. 5.6). Здесь вы должны ответить на вопрос: Would you like to define which fields link your main form to this subform yourself, or choose from the list below? (Вы хотите сами задать поля, которые будут связывать основной и подчиненный отчеты, или выбрать эти поля из приведенного ниже списка?).

В поле, где показан этот список (он включает две позиции), выберите опцию Show Фирмы for each record in Страны using Код (Показать Фирмы для каждой записи таблицы Страны, используя Код). Если теперь вы щелкнете по кнопке Finish, то вернетесь в область данных конструктора, но с дополнением в виде под­чиненной формы. Чтобы взглянуть на окончательный вариант отчета, вам остает­ся сделать последнее усилие, то есть щелкнуть по кнопке Bt»| - View (Просмот р)

Page 99: Access 2000. Проектирование баз данных-OCR

Группировка записей 95

В Microsoft Access шш

IS Страны шш з Страны J

AM |33 |

Страна pSA |

Примечания | |

AM И | Страна |Германия |

Примечания \ \

Код р5 |

Страна |италия |

Примечания \ \

Код |зе | Страна росейя |

Примечания

Код Page _ Ы | ~ • • I ' I A £

ы РИС 5 4

на панели инструментов окна базы данных. Полученный отчет, который имеет иерархическую структуру, показан на рис. 5.7.

Группировка записей Приведенный выше отчет с его структурой является также одной из форм орга­низации записей. Однако группировать данные можно и более привычным спо-сооом, то есть с помощью мастера отчетов. Его запуск и начало работы осуществля­ется почти так же, как аналогичные действия при использовании мастеров таблиц и форм. Разница состоит в том, что для запуска мастера отчетов в разделе Objects (Объекты) окна базы данных надо щелкнуть сначала по кнопке д Reports |, а за­тем по кнопке New (Новый). Но в окне New Form (Новая форма), которое по-Явится на экране (см. рис. 4.1), теперь надо активизировать опцию Report Wizard (Мастер отчетов). В нижнем поле того же окна New Form вы можете выбрать таб-ЛиЧу; она станет первой из тех таблиц, на которых будет основан создаваемый

Page 100: Access 2000. Проектирование баз данных-OCR

96 Создоние отчетов новой базы данных

Sub Report Wizard You can use an existing form to create your subform or subrepott, or create your own using tables and/or queries

What data would you like to use for your subform or subreport"'

<~ Use existing Tables and Queries

<* Use an existing report or form

Назначение Приборы Страны Страны 1 Типы Приборов Фирмы ; Фирмы Subform Экологические приборы

Form Form Form Form Form Form Form Form

J

• 1

Cancel Next > Finish

Sub Rep art Wizard

Рис 5 5

Would you like to define which fields link, your mam form to this subform yourself; or choose from the list below?

^ Choose from a list. Define my own

iShow Фирмы for each record in Страны usina Код None

• 1 Щ

Cancel <Back Next: Finish

Рис 5 6

отчет. Правда, мы все-таки советуем сделать это в следующем окне, так как в не^ можно выбрать поля более, чем из одной таблицы. Наконец, и при выборе полеи включаемых в формируемый документ (см. рис. 4.4-4.5), начальные этапы рабо­ты те же, только везде вместо формы речь идет об отчете. Действительно важные

Page 101: Access 2000. Проектирование баз данных-OCR

Группировка записей 97

g - <Э Р О Ш Щ 'О00'» - Close ИГ , g ] j . P7| .

ШШ

g Страны

Страны

Код Страна

Примечания

г

Ал?

Страна Примечания

Германия

Р ^ е _df i>'i j

|Гп|е Farmer luteinaNonal |иЗ

nlltech •[07-

шш 73

[.ISA

|Я 1 • Рир\<ы Sub farm Код ср ирмы

02

1

Н асеание Ф ирмы

j 1 Ь 1 ir i с с I р о F a i e d

1

У од страны

|м 3

А д р в !

fe l loe Ohio ' USA -Fax 5

Г425 Fax (

2051 Deerf FAX

РИС 5 7

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

Этот этап показан на рис. 5.8. Вы должны ответить на вопрос: How do you want to view your data? (В каком виде вы хотите представить данные?). Советуем вы­брать не основную форму, то есть Страны, а подчиненную - Формы. В против­ном случае при группировке данных вам придется представлять их в виде вло­женного отчета (см. рис. 5.7).

На следующем шаге (дальше мы уже не будем напоминать, что к каждому но­вому этану работы вы переходите с помощью кнопки Next) мастер спрашивает: Do you want to add any grouping levels? (He хотите ли вы ввести уровень группи­ровки?). Этот этап отражен на рис. 5.9. Естественно, вам следует щелкнуть по кнопке > | и ввести Страны как первый уровень группировки. На очередном Шаге (см. рис. 5.10) мастер уточняет: What sort order do you want for detail records? (Как вы будете сортировать записи внутри данных по каждой стране?). 4 - 119

Page 102: Access 2000. Проектирование баз данных-OCR

98 Создание отчетов новой базы данных

Report Wizard

How do you want to view your ddtd"

by Страны

*i Show me more information

Код, Страна, Код фирмы, НазЕание фирмы, Код страны

Cancel < Вьск (Jo t Finr-h

Рис 5 8

Report Wizard

Do you want to add any grouping levels"''

Код

Название фирмы Код страны

_ l J

Priority

Страна

Код, Код ф|ирмы, Название фирмы, Код страны

IGrouping Options . Cancel <Васк Next > Fmrh

Рис 5 9

Вы можете ввести до четырех уровней сортировки по возрастанию (Ascending) или по убыванию (Descending). Задайте сортировку по полю Название фирмы (оно находится в списке, который открывается при щелчке по стрелке прокрутки в правой части поля) на рис. 5.10. По умолчанию принимается сортировка по

Page 103: Access 2000. Проектирование баз данных-OCR

Статическая копия отчета 99

Report Wizard What sort order do /ou wunt fnr detail recoids?

i You can sort records by up to hour fields, in either ascending or descending order

1 Hd.EdHUe фирмы ~3 Ml ~3 ill U -3 J

Cancel ;Back Next > Finish

Рис 5 10

возрастанию; в этом случае текстовые значения сортируются от А до Z, цифровые -от 1 до 9. Однако в целом порядок сортировки не имеет здесь решающего значения, если у вас нет каких-либо специальных предпочтений. Отметим только, что задан­ное вами поле Название фирмы становится вторым уровнем группировки.

Итак, вы сообщили мастеру свои принципиальные решения по организации структуры отчета. На следующем этапе работы можно заняться внешним пред­ставлением данных (см. рис. 5.11).

Теперь мастер поинтересуется: How would you like to lay out your report? (Как вы хотите расположить данные в отчете?). С помощью переключателя на рис. 5.11 вы можете выбрать различные варианты представления данных в разделе Layout (Компоновка): книжное или альбомное расположение страницы (оп­ция Orientation), способ размещения данных по ширине страницы (флажок в ниж­ней части окна). При этом в поле окна вы сразу видите, как будут выглядеть ре­зультаты ваших действий.

Затем пропустите промежуточные окна, то есть определение фона и шрифта, и выберите имя для отчета: назовите его Фирмы. В результате вы получите окон­чательный вариант первой страницы отчета, как показано на рис. 5.12.

Таким образом, данные сгруппированы, и отчет готов к печати.

Статическая копия отчета Возможность создавать Snapshot (Статическую копию отчета) появилась только в версии Access 2000. По сути, это фотография отчета - файл с расширением snp, к°торый содержит копии каждой страницы отчета, сформированного в Access 2000, Двумерных графиков, чертежей и других элементов, включенных в отчет. Такой

Page 104: Access 2000. Проектирование баз данных-OCR

100 Создание отчетов новой базы данных

Report Wizard would you \\\ё to la/ out /our report '

XK--K'-. xxxxxxxxx

xxxx xxxx xxxx xxxx хжхх хкчхх хжхх xxvxx xxxxx xxxxx xxxxx xxxxx XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX XKXXX XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX

Orientation

<• Portrait

<~ Landscape

La,out

f~ Stepped

Г Block

<•" Outline 1

•^ Outline I

<" Align Lett 1

<~ Alian Left:-

j p Adiust the field width so all fields fit с a page.

Cancel <Bacl Next > Finish

Рис 5 11

файл можно просматривать, печатать, посылать по электронной почте, рассылав по сети и архивировать, уже не работая непосредственно со средой Access 2000.

Инструменты для работы с копией Для манипуляций со статической копией отчета в Access 2000 предусмотрен мо| дуль Snapshot Viewer (Просмотр снимка), версия 9.0. Он включает управлякшп'к программу (Snapview.ocx), справочный файл (Help) и другие связанные фап i i

Модуль Snapshot Viewer можно загрузить посредством программы Setup и i установке Office 2000 или Access 2000, а также с помощью сетевых программ. Е< это не было сделано, то Snapshot Viewer автоматически устанавливается в Access Ъ' в тот момент, когда пользователь в первый раз создает статическую копию отчета

Управляющую программу Snapview.ocx можно использовать для просмотра ста­тической копии отчета из Microsoft Internet Explorer (версия 3.0 и более поздние редакции), а также из приложений, работающих с языком Visual Basic.

Преимущества использования Если вы печатаете и рассылаете отчеты Access пользователям внутри или за пре-

делами своей организации, то использование статических копий может суще­ственно сберечь время и деньги. Теперь вы можете отправлять и публиковать отче­ты посредством электронной почты или Web-браузера, например Microsoft Internet Explorer. Ваши деловые партнеры, в свою очередь, смогут быстро про­смотреть отчеты в сети и напечатать только те страницы, которые нужны. Это осо­бенно полезно, если в отчетах содержатся изображения, в частности, цветные (Д<1 пустим, диаграммы и рисунки).

Page 105: Access 2000. Проектирование баз данных-OCR

Статическая копия отчета 101

13 Microsoft Access D о£ У <sfr Qi ч ^ - a i Р О Ш

ЩЩ]

|00"о - ! Close I W - © а - ! (3 - '

Фир.

Страна

Страна

Страна

Страна

Страна

пы

United Kingdom

Название фирм Код

Randox Laboratories, 02

USA

Название фирм Код

Alltech 03

Cole-Parmer Internatio 03

YCI incorporated 03

Германия

Название фирм Код

SENSORTECHNIK M 04

Италия

Название фирм Код

AM E L 1 nstrument s 05

Р о с с и я 1 • 1 " 1 «1

,,,., ,.„„*-:»-.«> ,-,,-,«,

Код фирМЫ

05

Код фирмы

11

07

02

Код фирмы

19

ЛЪд фирмы

17

-. ., VH°. >"*,JWbt l > " 4 . i ' . v

Код страны

02

Код страны

о:, 03

03

A'cd страны

04

Ас'-З страны

05

J

|п|х|

^

J

.1 .1

РИС. 5 12

Обычно статические копии отчетов не только предоставляются по запросу, но и регулярно рассылаются: например, еженедельные отчеты о движении товаров на складах, ежемесячные отчеты о продажах, ежеквартальные финансовые доку­менты и т.д.

Создание статической копии отчета Предположим, требуется создать в Access статическую копию отчета Приборы (см. рис. 5.13).

В Access 2000 такая процедура рассматривается как разновидность экспортной операции. Процесс состоит из нескольких этапов:

1- В окне базы данных выбрать и пометить название отчета, копию которого надо создать. В данном случае это Приборы (см. рис. 5.14).

Page 106: Access 2000. Проектирование баз данных-OCR

102 Создание отчетов новой базы данных

В 0 . Е<* Y«w Iools

*Ш1 Г...

Приборы

Наивр пахали 5>ucl(Ch»ck 106

VepftKTfpK^rVKK i 14 t К p*ii«LrtHM; 0,1 рН яэчкэсп 0 1 рН, температурккл момп*м:иоа, б*т*рвя 100 члссл

Dec, кг Прнбори .Ко! ткяа 51

Приборы К о д ф к р л ы 26

1* ял каталогу "ПМЭО

Lo»L»p К о х Ф м р п и К о 1 ф м р н ы '16

Loo Lap Код тхм.РСод тшиа 01

Нол«р к одел к МовегабЮ

Чяршаерхсгккк TywiV рН ме-ттЛтермометр с кесккпжоат электродом

Вм.кг Прлборы.Код ткяя 01

ГСриборы.Код фмрпы 26

J * e o каталогу

±iJ A I J Рис 5 13

В Miciosoft Access - [db5 : Database] ОпШ В . Preview Н Design Ц New i X \ £ f l > •:•:

12 J Create report in Design view

0 J Create report by using wizard

Рис 5 14

Page 107: Access 2000. Проектирование баз данных-OCR

Резюме 103

2. В строке меню выбрать File => Export. 3. В появившемся диалоювом окне Export Приборы As (см. рис. 5.15) выйти

в окно Save As Type (Сохранить как тип) В нем выбрать опцию Snapshot Format (*.snp)

4. В окне, которое расположено справа от окна Save in (Сохранить в), выбрать диск и папку, где будет сохранена копия.

5. В окне File Name (Имя файла) указать название создаваемой копии. 6. Щелкнуть по кнопке Save (Сохранить) Созданная статическая копия отчета представлена на рис. 5.16 (показана лишь

часть страницы). Файл копии полностью соответствует оригиналу (ср. рис. 5.13), но обратите внимание, что копию можно просмотреть уже только в окне Snapshot Viewer

Expoit Report Приборы As на * J Избранное zj *• a ® >' CJ Ш - Tool* J Links J Media ll Каналы J Обновление приложений

Ссылки ^_)Мои документы

File name: |приборы|

ave as type Snapshot Foimat (» snp) 3 I

W Autostart

В s* ~3 Canrel

Рис 5 15

Резюме 1. В Access 2000 отчет создается почти так же, как форма. Разница между эти­

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

2. Отчет, созданный с помощью автоотчета, будет отображать все поля и запи­си базовой таблицы или запроса. Так же, как и в случае с формой, такой от­чет наиболее прост в построении и наименее гибок по своей структуре.

Page 108: Access 2000. Проектирование баз данных-OCR

104 Создание отчетов новой базы данных

W Snapshot Viewer - Приборы.inp File View Window hjelp

I jg Приборы, snp ШШ 3 Приборы

н Ы Г ~ 1 > | н | В | <| I

Ноле-р лод&лм "/uickChed. 106

Чярак-гврксткл'м ]-14 pH, рза решимте: 0,1 pH. тачюсп 0,1 pH, температур нал компенсация, Батарея ICO «ЬСОЕ

Bec.icr Прхборы.Кол ткна

л Прмборы.Кохфхрпы

26

№ до каталогу ЭЮЙОй

Г л л 1 « п Ь*лт rfiwnviu Ь* г» ¥ s h v n n u T nnL-и n I T A I TV • а Ь*п v x v ad

3

J

_•] zi

For Help, press F1

Рис 5 16

3. В первичный отчет Access 2000 позволяет включить подчиненный отче в рамках которого записи могут быть отсортированы на втором уровне груп­пировки. Но этот подчиненный отчет может быть создан уже с использо ванием конструктора отчетов, хотя саму группировку записей допускается выполнить и с помощью мастера отчетов. Наиболее гибкую структуру отче­та позволяет получить конструктор отчетов.

4. В версии Access 2000 появилась новая возможность - создать Snapshot (Ста­тическую копию отчета). По сути, это фотография отчета - файл с расшире­нием snp, который содержит копии каждой страницы отчета, сформирован­ного в Access 2000, двумерных графиков, чертежей и других элементов, включенных в отчет. Такой файл можно просматривать, печатать, посыла1Ь по электронной почте, рассылать по сети и архивировать, уже не работая непосредственно со средой Access 2000. В Access 2000 такая процедура рас­сматривается как разновидность экспортной операции.

Page 109: Access 2000. Проектирование баз данных-OCR

Глава VI Создание страниц

доступа к данным

• Свойства страниц доступа к данным • Страницы доступа к сгруппированным данным • Использование страниц доступа к данным

Страница доступа к данным (Data Access Page) - файл особого типа, создан­ный для работы с данными из Internet или Intranet н для их просмотра. Вооб­ще Data Access Page - одно из нововведений в Access 2000. Страница доступа загружается в базу данных Access 2000 или базу данных SQL-сервера, но мо­жет также создаваться и загружаться за пределами Microsoft Access. Data Access Page иногда включает данные из других источников - например, из Microsoft Excel. Кроме того, страница доступа к данным может использоваться при ра­боте непосредственно в базе данных или проекте, создаваемом с использова­нием Access 2000.

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

Page 110: Access 2000. Проектирование баз данных-OCR

106 Создание страниц доступа к данным

Страницы доступа к данным (Data Access Pages) тоже обеспечивают доступ пользователя к данным и работу с ними, но, кроме этого, позволяют вести поиск и структуризацию данных в информационных сетях. Фактически Data Access Pages выступают в роли форм и отчетов Access для Internet. При работе со стр , ницами доступа к данным не надо преобразовывать их формат, поскольку Da Access Pages - это HTML-файлы1. Они создаются с помощью Access, но работа к в браузере Internet Explorer.

По своим функциям страницы доступа к данным очень похожи на классиче< кие формы и отчеты. Понятно, что и процесс подготовки этих страниц практп чески не отличается от технологии построения формы или отчета. Для созданп'1 страниц доступа к данным в Access 2000 есть специальный пакет - Data Access Page Toolbox. В нем пользователь найдет и инструментарий, хорошо знакомы и разработчикам форм и отчетов, и новые средства, которые специально предна­значены для создания страниц доступа к данным в Web-среде. Нужный инстр\ -мент легко выбрать с помощью курсора. Как и другие стандартные наборы инстр\ -ментов, Data Access Page Toolbox доступен из меню View. Когда вы начинаем строить страницу доступа к данным, Data Access Page Toolbox выводится п<> умолчанию.

На рис. 6.1 показан пример страницы, которая создается для ввода данных в ре­жиме конструктора. Вводится запись Products (Изделие), содержащая сведения о коде изделия (Product ID), его наименовании (Product Name), имени фирмы (Company Name), цене за единицу продукта (Unit Price), скидке (Discontinued)

Э Product»: Dttt Access Page

Заголовок страницы

Заголовки групповых

полей

Поле номера записи

\ Products Header Products

Product 10 j

Product name j

Company Hame

Unit Price |

Discontinued Г"

NevKjalic-nSecliori Products

J j Pioduc[s|0 ot|2

J

Рис 6 1

Хотя страницы доступа к данным могут использоваться при работе с локаль­ной базой данных Access 2000, все-таки их основное назначение - обеспечивать просмотр, редактирование и составление отчетов в рамках Internet Explorer. Data Access Pages имеют ряд новых Web-функций и поддерживают перетаскивание объектов. По сути это HTML-страницы, которые содержат динамические ссылки на данные (иными словами, данные «связываются» со страницей). В отличие ог традиционных форм и отчетов, Data Access Pages сохраняются не в файле базы данных (с расширением . mdb), а в отдельных HTML-файлах. Это позволяет легко

Hypertext Markup Language (Язык разметки гипертекста) - язык, на основе которого формируются Web-страницы.

Page 111: Access 2000. Проектирование баз данных-OCR

Страницы доступа к сгруппированным данным 107

пересылать страницы доступа к данным по каналам электронной почты и разме­шать на Wcb-сервсрах.

В Access 2000 можно открыть любой НТМ L-файл с помощью конструктора Data Access Pages, а затем добавить в этот файл поля - ссылки на данные. Также кон­структор позволяет формировать страницы доступа к данным. Рабочая область кон­структора создастся с помощью Internet Explorer и использует такие хорошо зна­комые вам средства, как таблицы свойств, списки полей, наборы инструментов и мастера.

Каждый объект базы данных создается для определенной конкретной цели. Ниже, в табл. 6.1, обобщены сведения о том, пригодны ли различные объекты Access 2000 для достижения тех или иных целей. Позиция «Да» означает, что ис­пользование данного объекта по определенному назначению является оптималь­ным решением, «Нет» - недопустимым, «Да/Нет» - возможным, но не лучшим.

Табпица 6. /

Форма Отчет Статическая Страница копия отчета доступа к данным

Ввод, редактирование и обмен инфор­мацией в пределах БД ипи проекта

Ввод, редактирование и обмен динами­ческой информацией через Internet/ intranet за пределами БД ипи проекта

Печать данных для распространений

Распространение данных по электронной почте

Да

Нет

Да/Нет

Нет

Нет

Нет

Да

Нет

Нет

Нет

Да

Да (ста" данные]

Да

Да

Да/Нет

Да (статические Да (динамические

Основные типы страниц доступа к данным: а диалоговый отчет - используется для сбора и структуризации сведений,

которые вводятся в БД для последующего отображения; • ввод данных - используется для добавления, удаления и редактирования

записей; • анализ данных - может включать такие же электронные таблицы, формулы,

диаграммы, какие содержатся в Excel.

Страницы доступа к сгруппированным данным Страницы доступа к сгруппированным и динамически связанным данным откры­вают перед пользователями совершенно новые возможности работы с информа­цией с помощью единого HTML-интерфейса. Благодаря этому группы взаимосвя­занных данных легко просматривать и управлять ими. Например, можно создать страницу доступа к сгруппированным данным, где будут отражены объемы про­даж по регионам для разных торговых представителей. Интерактивный характер страннц доступа к данным позволяет не только получить итоговые сведения по конкретному региону, но и собрать при необходимости более подробную инфор­мацию

Page 112: Access 2000. Проектирование баз данных-OCR

108 Создание страниц доступа к данным

Практическое применение страниц доступа к данным рассматривается ниже при работе с новой БД.

Использование страниц доступа к данным Из табл. 6.1 видно, что для взаимодействия Access 2000 с окружением страницы доступа к данным значительно полезнее, чем статические копии отчетов. Если последние, в соответствии с названием, применяются лишь для рассылки стащ-ческнх данных, то страницы доступа к данным используются для ввода сведении и их редактирования, для передачи данных внутри БД/проекта, для информаци­онного обмена Access 2000 с внешним окружением и для оперативной связи но электронной почте.

Здесь мы подробнее рассмотрим, как эти страницы помогают осуществлять ин­формационное взаимодействие с внешним миром. В качестве примера возьмем тип страницы доступа к данным, предназначенный для их ввода и корректировки.

Страница доступа к данным: ввод данных Выше уже говорилось, что такая страница доступа к данным в Access 2000 очень напоминает форму для ввода данных. Уместна и другая аналогия: форма - стра­ница доступа к данным, отчет - групповая страница доступа к данным.

Однако ни форма, ни отчет не могут (см. табл. 6.1) использоваться для пере­сылки информации ни в Internet/intranet, ни по электронной почте. Как на самом деле выглядит страница доступа к данным, показано на рис. 6.2.

Создание и открытие страницы доступа к данным Для создания новой или открытия уже существующей страницы доступа к дан­ным на компьютере должен быть установлен Internet Explorer 5.0 или более поздней редакции.

Сформировать страницу доступа к данным можно одним из следующих способов: • с помощью Auto Page (Автостраница); • с помощью Page Wizard (Мастер страниц); • в режиме Page View (Конструктор страниц). Открыть уже существующую страницу доступа к данным можно: Q в режиме Page View; а в Internet Explorer.

Создание страницы доступа к данным в режиме автостраницы

1. В окне базы данных (см. рис. 3.1) выберите опцию Pages (Страницы) в раз­деле Objects (Объекты).

2. Щелкните по кнопке New (Новый) на панели окна базы данных. На экране появится окно New Data Access Page (Новая страница доступа к данным), как показано на рис. 6.3.

Page 113: Access 2000. Проектирование баз данных-OCR

Использование страниц доступа к данным 109

И Microsoft Лесе» I Fill? Edif View Insert Format Tools Window Help

ШШ

' U Страны

Код фирмы Название фирмы Код страны Адрес

Адрес 2

Примечания

Страна

_" «L Ф1 ipi it

Фирмы

02 YSI incorporated 03 Yellow Spring Ohio 453S7 USA Fa*' 513 767 9353

USA

= I W I : 1 of 26 • И * « , " '

1

'•" ••/ Fi!

Рис 6 2

3. В этом окне задайте последовательность команд AutoPage => Columnar (Ав­тостраница => По колонкам).

4. Укажите, какая таблица или запрос содержит информацию, которую нужно вывести на страницу.

5- Щелкните по кнопке ОК. Если в предыдущем пункте вы выбрали базовой таблицей Фирмы, то в результате получите страницу доступа к данным, представленную на рис. 6.2.

Создание страницы доступа к данным с помощью мастера страниц Мастер страниц обладает достаточно широкими возможностями. Мы подробно рассмотрим их на конкретном примере.

1. В окне базы данных выберите опцию Pages (Страницы) в разделе Objects (Объекты).

2. Щелкните по кнопке New (Новый) на панели окна базы данных. На экране возникнет окно New Data Access Page (Новая страница доступа к данным), выведенное на рис. 6 3. Теперь переходите к шагу 3. Вместо кнопки New мож­но активизировать опцию Create data access page by using wizards (Создайте

Page 114: Access 2000. Проектирование баз данных-OCR

по Создание страниц доступа к данным

New Data Access Page

Create a ne1».1 data access page without using a '/jizat d I

Existing Web page page Wizard AutoPage. Columnar

Choose the table or quer) where the object's data comes from.

OK Cancel

Рис 6 3

страницу доступа к данным с помощью мастера). В этом случае переходите сразу к этапу 5.

3. В окне New Data Access Page выберите опцию Page Wizard (Мастер страниц) 4. Выберите таблицу или запрос, где содержится та информация, которую сле­

дует вывести на страницу. 5. Щелкните по кнопке ОК. В результате появится окно Page Wizard (см

рис. 6.4). 6. Выбрав таблицу, вы можете перенести поля из нее в будущую форму с поме

щью кнопки > I (перемещение одного поля) или » I (перемещение ера i

Page Wizaid

Tables/Queries

|ТаЫе Страны

Available Fields:

Примечания

Which held-: do you want on your page7

Vou can choose from more than one table or query,

ГЗ Selected Fields'

К О Д фирмы Название фирмы КОД страны Адрес Адрес 2 Примечания

Cancel Next > Finish

Рис 6 4

Page 115: Access 2000. Проектирование баз данных-OCR

Использование страниц доступа к данным 111

всех полей). В нашем примере на страницу перенесены все поля из таблицы Фирмы и поле Страна из таблицы Страны. Таблица Страны вызывается из вкладки Tables/Queries (Таблицы/Запросы) после того, как вы разобрались с полями из предыдущей таблицы Фирмы.

7. Щелкните по кнопке Next. 8. На экране вновь появится окно Page Wizard. В его правой части показаны

перенесенные вами поля, а в левой - поля, по которым вы можете упорядо­чить расположение данных на странице. Выбор и фиксация этих полей про­изводится аналогично предыдущему. Раскрыв вкладку Priority (Приоритет), вы выбираете те критерии, по которым будут группироваться данные. В на­шем примере это страна и название фирмы (см. рис. 6.5). Если вы не собира­етесь пока структурировать информацию, щелкните по кнопке Finish (За­вершение). В этом случае на экране возникнет форма в режиме конструктора (Design View), как показано на рис. 6.6. Если размеры и расположение по­лей вас устраивают, то щелкните по кнопке View (Просмотр). Появится страница доступа к данным, которую вы уже видели на рис. 6.2. Процесс создания страницы доступа к данным закончен. Возможно, вы захотите внести в страницу какие-то коррективы. Это можно сделать как раз в ре­жиме конструктора, о чем будет сказано чуть ниже. Пока же отметим самое важное: если на настоящем этапе работы вы не воспользовались возмож­ностью упорядочить данные, то какие бы правки ни вносились в форму в ре­жиме конструктора, общая структура страницы сохранится неизменной. Листать ее вы сможете только по фирмам, и переход к другой стране будет происходить лишь тогда, когда вы будете просматривать данные по другой фирме.

Page Wizard

Do you want to add any grouping levels' Adding gioupmg levels result in a read-only page

В Ш ^од фирмы ^ J

Priority

Название фирмы

КОД фирмы, Код страны, Адрес, Адрес 2, Примечания

Grouping Options ,. Cancel <Back Next > Finish

Рис 6 5

Page 116: Access 2000. Проектирование баз данных-OCR

112 Создание страниц доступа к данным

В Microsoft Access шш I

File Edit Vie"' In nt Format Tools Windnw Hr-lp

m - у rf • ^ _ ' • в # [g [ f Normal - Tahnrna -r lu - В I U ЦЕ Д

1 ' 1 — — • — —

| l 3 P a g e 7 : Data/

Headei

<l

Код ф|

Назван

Код ст

Адрес

Адрес

Примем

Стран;

Navigat

• . iD l x l

CDhpMblWlZ j

Pllt l

ie фирг

)ЗНЫ

анич

lonSect

on: <t*

• i i >

. . . pubiWiz

• | C'MpHfclWlZ | O o f 12 » I ~ l ~ \~ I i

I I I I I

I I I

I .4

^ )

l> Рис 6 6

9. Теперь щелкните по кнопке Next и перейдите к следующему шагу, который показан на рис. 6.7.

10. мастер страниц предлагает рассортировать данные по определенным парамет­рам (кодам). Максимальное количество параметров, по которым можно про­вести отбор, равно 4. В нашем примере сортировка производится сначала по коду страны, а затем по коду фирмы. После этого снова щелкните по кнопы Next.

11. На последнем этапе работы мастер страниц предлагает вам выбрать одну из двух опций (см. рис. 6.8): Open the page (Открыть законченную страницу) или Modify the page's design (Перед просмотром внести в страницу какие-либо изменения в режиме конструктора). В последнем случае мастер пред­лагает дополнительную возможность: Do you want to apply a theme to your page? (Хотите ли вы использовать различные варианты оформления стра­ницы?) Имеются в виду цвета и фоновый узор Если вы согласны, устано­вите флажок в соответствующей ячейке. После этого вам будет предложена

Page 117: Access 2000. Проектирование баз данных-OCR

Использование страниц доступа к донным 113

Page Wizaid

What sor* order do you want for detail records7

[

1

ш

xxxxxxx

1 1 IZH

1

а I 1 = ] i

1 1 < C 1=1 1

1 1« 1 = 1 1

\ ou can sort records by up bo four fields, in either ascending or descending older

1 t- пд странь!

2 If ид фмрмы|

~3 i l l "3 Ji] 1] Jjj

•3] J

Cancel <Eack Next > Finirh

Рис 6 7

1 Page Wizard

\ ^ ^

r

-- - -

9".

- -

J(Wb

& » i .

"3

What title do у ou want fur your page7

[IlTpbHtl

That's all the information the wizard needs to create ^our page

Do you want to open the page in Access, or modify the page's design7

(" Open the page.

(•" Modify the page's design

f Do you want to appl/ a theme to your page'

Г Display Help on working with the page7

Cancel < Back Finish

Рис 6 8

еще одна опция: Display Help on working with the page (Вывести на экран справку, связанную с обработкой страницы). Модификация страницы в ре­жиме конструктора представлена на рис. 6.9. Сделав выбор, щелкните по кнопке Finish.

Page 118: Access 2000. Проектирование баз данных-OCR

114 Создоние страниц доступа к данным

В Microsoft Access • |Page7 : Data Access Page) Н И В

I \ АЛ аы D <= ^ И ЕВ _i п га \ • '

^ File £dil V 'w Ir-,tri- Fjrrnar Т-ю1, V_ir d J * н-lp _ \fl\xj

Headmg I - Ы" r a - 2-t - В / U E 5 31 * ^ * ^ | = • = S* - A -Header Страны Страна | * |

• i&sr i '. , . , 1 1 1 i i i i i i i i i, Header Страны Название фирмы '.'I 1 .1 'ofOUpO»fLTp.aH|:l | 1 [ I 1 1 1 i l l

| _Ф]| | HaiEdrine фирк 1 I 1 1 I I 1 ! I 1 I 1 I I Header ФирмыУЛг f\ \

Navtqat

H

Navrga*

onSect on Фир

К|эл4ир||ы |

гфд страны |

*

А

Г

MblWl2

арес

арес 2

нимеча

* | -I-upMbiWc 10 j l o f 12

onSection Страны Название

Navigat

H

on5ect

1ИЯ

Ф\ 1

фирмы г. J

< | Страны Название фирмы 10 j 1 of 12 • И > * »>' и * ' " ' i i г i I i l i i

on Страны Страна

* ' ? 11

I -РИС 6 9

Законченная страница доступа к данным выглядит так, как показано на рис. 6.10 Внимательно изучите рис б 10 и сравните то, что на нем изображено, с вложен­

ными таблицами и формами, которые обсуждались в главе 4. Как видите, упоря­дочив и отсортировав информацию с помощью мастера страниц, вы получили вложенную страницу доступа к данным. В самом деле, слева от окна Страны рас­положен значок <Q>|. Он уже знаком вам по вложенным таблицам. Если щелкнуть по этому значку, запись Страны раскроется, и слева от окна появится другой зна­чок - сз|, а также новая запись - Название фирмы (см. рис. 6.11).

Как вы уже знаете, «плюс» указывает на присутствие скрытой записи, а «минус > сообщает, что она развернута. Щелкнув еще раз по значку ф|, вы получите полно­стью раскрытую страницу (см. рис. 6 12). Если щелкнуть мышью по значку ==•] можно свернуть страницу, и она будет выглядеть так, как показано на рис. 6.10.

Создание страницы доступа к данным в режиме конструктора Выше мы рассмотрели создание страницы доступа к данным с помощью AutoPagc (Автостраницы) и Page Wizard (Мастера страниц), которые позволяют достаточ­но легко и быстро выполнить эту работу. Еще один распространенный способ

Page 119: Access 2000. Проектирование баз данных-OCR

Использование страниц доступа к данным 115

Ш Microsoft Access File Edit View Insert Format Took- Vjnduw Help

шш

111 Страны шш

I GroupOfСтраны- |umted Kmqdom v | Страна

14 4 I Страны-Страна 1 of 10 и >*»(*y>'$l'il'Z'Y

Ы Рис <5 10

Ы Microsoft Access

File Edit View Insert Format Tui-.L Vundiw Help

ku ' 0 c3i

1ШХ]

| ^ Страны

. , йгоирОгСтраны- (united Kingdom R:l Страна

, GroupOtCTpaHbi- |Randox Laboratories, Ltd _vil Название фирмы

И < | Страны-Название фирмы 1 of 1 '<•

и < | Страны-Страна 1 of 10 • И " . ,

«1

H - l n l x

•'to'-'

Рис 6 И

создания страницы - использование конструктора С нашей точки зрения, конструктор Действительно нужен тогда, когда требуется внести какие-либо исправления, о чем шла речь в предыдущем разделе. А вот создание страницы посредством конструк­тора - не самое рациональное решение. Тем не менее рассмотрим и такой вариант.

Чтобы войти в режим конструктора, надо открыть окно базы данных (см. рис •J1), выбрать опцию Pages в разделе Objects и выполнить одно из следующих дей­ствий:

• активизировать опцию Create data access page in Design view (Создать страницу доступа к данным в режиме конструктора);

Page 120: Access 2000. Проектирование баз данных-OCR

116 Создание страниц доступа к данным

(У Micro to l l Access

| File Edit \_icw Insert For mat Tools Window Help

м- У rJ ai ' e, :-*!' | ' j j Страны

, , , GroupOfCTpaHbi- lunited Kingdom =>! Страна

. - GroupOfCTpanbi-^ l Название фирмы

Код фирмы

Код страны

Адрес

Адрес 2

Примечания

g j j < | ФирмыW12 1 Of 1 •

К < | Страны-НазЕднп

f K < | Страны-Страна 1 of 10

«1

' ; . / - . - « | B dj J шт ШЕШ*

|Randox Laboratories, Ltd

05

02

Diamond Road, Crumlin, Co Antrim, BT29 4QY Fax 44 1849 422413

Галкин В А Ten 265 44-05

»i i - >'Л *•* _;. v i V Cj} I _J

e фиг.

ты 1 rf l >, i. • K< s • ''i* ^|ЩР^ V (31

м >'* • \ ; , / o ^ i T f 1 •!

Рис <5 /2

• щелкнуть по кнопке Design на панели окна базы данных; • щелкнуть по кнопке New на панели окна базы данных, а затем выбрать оп

цию Design view. В любом случае на экране появятся (см. рис б 13) пустой бланк страницы и па

нель инструментов (Toolbox) с набором кнопок, которые предназначены для до бавления и настройки информационных элементов страницы (в терминологш Access 2000 - элементов управления).

Над пустым бланком крупным шрифтом набрано указание' Click here and type title text (Щелкните здесь и напечатайте текст заголовка) Последуйте это му совету и задайте имя страницы. Дальше вы формируете страницу с помощью панели Toolbox практически так же, как в предыдущих версиях Access создава ли формы или отчеты Любая страница доступа к данным строится следующим образом вы помещаете на нее с помощью инструментов панели необходимые элементы управления и форматируете их. Табл. 4.1 содержит описание этих эле­ментов, включенных в панель Toolbox.

Page 121: Access 2000. Проектирование баз данных-OCR

Использование страниц доступа к данным 117

ШЕ1

- Toh г 1 - 1 г' - В / U S S 3=

Fie Edir ijr- v In rrt Fotr ot T -. -.k A c d ч H lp

© 9 .

"3 Я Page8 : Data Лесе»» Page QsE

Section Unbound

Д Ш * 1 [k \ Лд abl

' а p ЕЕ

- fj

(S

m _ i

El •

Ы Рис 6 13

Чтобы перенести на пустой бланк нужный элемент, следует щелкнуть мышью по его символу, расположенному на панели Toolbox Символ отделится от панели, и его надо поместить в любую точку страницы, при этом она будет определять точку левого верхнего угла элемента. Теперь с ним можно работать: вводить с его помощью информацию, перемещать текст, изменять его размеры и т.д Если по­том вы вновь захотите использовать этот элемент, щелкните по нему мышью В левом верхнем углу экрана появится большой маркер, а в остальных - маркеры поменьше. С их помощью можно менять расположение и размер элементов управ­ления Когда вы решите, что страница наконец закончена и готова к просмотру, Щелкните по кнопке J l j View (Просмотр) на панели в верхней части того диало­гового окна, в котором вы создаете страницу. Вот теперь вы увидите ее в оконча­тельном варианте'

Открытие страницы доступа к данным в окне базы данных 1. В окне базы данных активизируйте опцию Pages в разделе Objects 2. Укажите, какую страницу доступа к данным нужно открыть. 3. На панели окна базы данных щелкните по кнопке Open

Page 122: Access 2000. Проектирование баз данных-OCR

118 Создание страниц доступа к данным

Открытие страницы доступа к данным в Internet Explorer Для этого надо выполнить одно из следующих действий:

• в среде Access откройте страницу базы данных в режиме Design view или в Page view, а затем выберите опцию Page Preview (Предыдущая Web-стра­ница) в меню File;

Q если Internet Explorer является по умолчанию вашим Web-браузером, i в программе Windows Explorer дважды щелкните по имени HTML-файл . чтобы открыть страницу в Internet Explorer, не заходя в Microsoft Access.

При создании страницы доступа к данным в этих режимах Access 2000 автома­тически сохраняет се в текущей папке как HTML-файл и добавляет соответству­ющий значок в окне базы данных.

Передача страницы доступа к данным по электронной почте В отличие от традиционных форм и отчетов, страницы доступа к данным сохра няются в отдельном HTML-файле, а не в файле базы данных Microsoft Acce^ с расширением .mdb. Поэтому пользователь легко может пересылать страницы ни электронной почте или публиковать их на Web-серверах в виде статических HTML-страниц. Кроме того, в них допускается включать другие компоненты, с которыми работает система Microsoft Office - в частности, электронные табли­цы Spreadsheet и диаграммы Chart. Существующие формы легко обновить, про образовав их в страницы доступа к данным.

Страница доступа к данным связана с источником данных в интерфейсе OLh DB, то есть с БД либо в Microsoft Access, либо в Microsoft SQL Server. Для работг1

со страницей пользователь должен иметь доступ к этой БД. Следовательно, баз i данных Microsoft Access или Microsoft SQL Server, которая предоставляет исход ную информацию OLE DB для страниц доступа к данным, должна размещатьс : на разделенном сервере или компьютере. Тогда и другие пользователи смогуi просматривать страницы и работать с ними в Web-браузере или в тексте письм электронной почты. Лучше разместить базу данных на разделенном сервере ил г компьютере до того, как будет создана страница. Рассмотрим противоположным случай: вы этого не сделали. Значит, если вы сформируете страницу, а затем пере местите базу данных, с которой она связана, то вам придется изменить связь не ходных данных OLE DB со страницей. В режиме конструктора следует щелкнут правой кнопкой мыши по значку базы данных на панели Field List (Список по лей) и выбрать опцию Connection (Соединение).

Теперь поговорим непосредственно о передаче страницы доступа к данным И" электронной почте. Выполните следующие действия:

1. В окне базы данных активизируйте опцию Pages в разделе Objects. Затем выберите имя страницы, которую нужно переслать.

2. В меню File в строке меню выберите сначала опцию Send To (Послать), а по­том - Mail Recipient (Получатель сообщения). Страница доступа к данным открывается в Page Design view (Режим конструктора страниц), поэтом}'

Page 123: Access 2000. Проектирование баз данных-OCR

Использование страниц доступа к данным 119

при необходимости можно перед отсылкой страницы конкретному адресату внести в нес изменения - например, добавить какие-то сведения или приме­чания,

3. Введите имена получателей в ноля То и Сс. Имена разделяются точкой с за­пятой (;). Если вы хотите выбрать имя получателя из уже существующего списка, активизируйте опцию То или Сс.

4. По умолчанию имя откроется в строке Subject (Субъект), и там его можно заменить другим. Можно также произвести дополнительные операции пе­ред отсылкой.

5. Щелкнуть по кнопке Send (Отправить) в заголовке сообщения.

Экспорт страницы доступа к данным в существующую базу данных При экспорте страницы доступа к данным в уже существующую базу данных (Microsoft Access или Microsoft Access Project) вы экспортируете, в сущности, ссылку на связанный HTML-файл. Сам он остается на прежнем месте, что позво­ляет иметь две страницы доступа к данным, указывающие на один и тот же свя­занный HTML-файл. Если вам это не нужно, сохраните одну из страниц под дру­гим именем, используя команды Save As (Сохранить как) и Save As Data Access Page (Сохранить как страницу доступа к данным) в меню File. Затем удалите страницу, которую вы только что создали.

Список полей Опция Field List (Список полей) позволяет легко добавлять информацию из при­ложений Microsoft Access и SQL Server в страницу доступа к данным. Достаточно выбрать в списке имя нужного поля и перетащить это название на страницу. Каж­дое поле поддерживает прямую динамическую ссылку, которая связывает стра­ницу доступа и данные. Таким образом, поле «прикреплено» к информации и опе­ративно обновляется при изменении страниц доступа к данным. Если вы создаете новую связанную форму или отчет, на экран автоматически выводится список по­лей, даже если по умолчанию он был выключен.

Чтобы просмотреть список полей, надо открыть форму, отчет или страницу в режиме Design view, а затем щелкнуть по кнопке в | , которая расположена на панели дизайна страницы (Page design). На рис. 6.14 вы видите, как выглядит спи­сок полей для страницы, показанной на рис. 6.12.

Сводная таблица Компонент PivotTable (Сводная таблица) создается в Microsoft Access или Microsoft Excel и включается в страницу доступа к данным. С помощью PivotTable пользователи могут просматривать данные отчетов, выполнять их динамическую Сортировку и фильтрацию, группировать сведения по строкам или столбцам, по­лучать суммарные значения и изучать их отдельные составляющие. Все это по­зволяет эффективно обрабатывать как небольшие объемы данных, так и крупные Массивы информации. Формат, в котором изначально представлены данные,

Page 124: Access 2000. Проектирование баз данных-OCR

120 Создание страниц доступа к данным

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

Создание сводной таблицы для страницы доступа к данным

1. В режиме конструктора (Design view) вызовите панель инструментов. 2. На панели инструментов в меню Insert (Вставка) активизируйте опцию

Office PivotTable. 3. На странице укажите место, в котором следует разместить верхний левым

угол сводной таблицы. 4. Чтобы выбрать источник данных для сводной таблицы PivotTable, восполь­

зуйтесь одним из следующих способов: - предположим, вам нужна информация из текущей базы данных Microsoft

Access 2000 или Microsoft SQL Server. С помощью кнопки н] вызовите список полей страницы доступа к данным. Затем перетащите в сводную таблицу ту таблицу или запрос, которые вы хотите использовать в этом компоненте. Access 2000 автоматически установит для опции Data Source control (Управление источником данных) на панели свойств сводной таб­лицы значение MSODSC. Теперь вы сможете использовать в компоненте тот же элемент управления, что и в таблице. Будет установлена также опция Data member (Эле-

. мент данных) для имени таблицы или запроса, на которых осно­ван компонент PivotTable. Пос­ле этого переходите к пункту 6;

- если вы хотите обратиться к внеш­нему источнику данных, вызови­те панель свойств компонента PivotTable и задайте последова­тельность команд: Data Source => Connection => Connection Editor (Источник данных => Связь => Редактор связей). Затем вызо­вите таблицу Provider (Агент) и выберите провайдера OLE DB, с помощью которого вы восста­новите данные. Наконец, акти­визируйте таблицу Connection и введите информацию о связи в данные, которые вы хотите использовать для компонента PivotTable list Чтобы получить справку о диалоговом окне Data Link Properties (Свойства указателя данных), щелкните по кнопке Help в нижней части этого окна

Database |page |

^ dbS mdb 3 <£j Tables

; В П Name AutoCorrect Log € 3 Related Tables [13 Object Type OD Object Name IB Control Name 53 Property Name 53 Old Value S3 New Value

H П Менеджер >Z$ Related Tables 53 Номер =. Код фирмы

m ж

SI ! 1 j I 1 P —

z\ idr i -i v л - .

Рис 6 14

Page 125: Access 2000. Проектирование баз данных-OCR

Резюме 121

5. Откройте раздел Other на панели свойств сводной таблицы PivotTable. Те­перь выполните одно из следующих действий: - чтобы использовать данные из определенной записи в пределах базы дан­

ных, активизируйте опцию Data member и выберите нужный элемент из списка;

- чтобы использовать для отбора данных запрос или команду (например, выражение SQL), сначала щелкните по кнопке Command text (Текст ко­манды), а затем напечатайте в окне этот текст. (О том, как должен стро­иться текст вводимой команды, вы можете прочесть в документации к внешней базе данных.)

6. Используя панель компонента и панель свойств компонента (PivotTable Property Toolbox) для добавления итоговых данных, продолжайте корректи­ровать вид компонента PivotTable и задавать его свойства до тех пор, пока этот элемент управления не будет полностью отвечать вашим требованиям.

• Чтобы создать сводную таблицу PivotTable, которая использует данные из таблицы Microsoft Excel, нужно поместить их на Web-страницу. Если вы хотите открыть ее внутри страницы доступа к данным, сделайте это в Microsoft Access, а затем добавьте элементы, связанные с базой данных Microsoft Access или Microsoft SQL Sewer;

• если вы добавляете сводную таблицу PivotTable к групповой странице до­ступа к данным (странице, содержащей сгруппированные данные), ее список появляется для каждой отдельной группы сведений и содержит только относящиеся к ней записи. Например, на странице, где информа~ ция сгруппирована по годам в соответствии со списком PivotTable, кото­рый содержит данные о ЧС, появится список для каждого года, содержа­щий только сведения о ЧС этого года. В любой момент можно вывести на экран список PivotTable не более чем для одной группы;

• вы можете создать диаграмму, связанную со списком PivotTable. Тогда при его корректировке в диаграмму будут автоматически внесены со­ответствующие изменения.

Резюме 1. В Access 2000 введен новый тип файла - страница доступа к данным (Data

Access Page), созданный для просмотра данных из Internet или intranet и ра­боты с ними. Страница доступа загружается в базу данных Access 2000 или SQL-сервера, но может также создаваться и загружаться вне Microsoft Access. Страница доступа к данным способна включать данные из других источников - например, из Microsoft Excel. Кроме того, страницу доступа к данным используют при работе непосредственно в базе данных или проек­те, создаваемом в Access 2000.

2- Для взаимодействия Access 2000 с окружающей средой страницы доступа к данным значительно полезнее, чем статические копии отчетов. Если

©

Page 126: Access 2000. Проектирование баз данных-OCR

122 Создание страниц доступа к данным

последние, в соответствии с названием, применяются лишь для рассылкц статических данных, то страницы доступа к данным используются для вво-да сведений и их редактирования, для передачи данных внутри БД/проект, для информационного обмена Access 2000 с внешним окружением и для опе­ративной связи по электронной почте

3. Для создания страниц доступа к данным в Access 2000 есть специальный па­кет - Data Access Page Toolbox. В нем есть инструментарий, используемый разработчиками форм и отчетов, и новые средства, которые специально предназначены для создания страниц доступа к данным в Web-среде. Нуж­ный инструмент легко выбрать с помощью курсора. Как и другие стандарт­ные наборы инструментов, Data Access Page Toolbox доступен из меню.

4. Сформировать страницу доступа к данным можно одним из следующих спо­собов: - с помощью Auto Page (Автостранпца); - с помощью Page Wizard (Мастер страниц); - в режиме Page View (Конструктор страниц). Открыть уже существующую страницу доступа к данным можно: - в режиме Page View; - в Internet Explorer. Все эти способы подробно рассмотрены в главе.

5. Кроме того, в Access 2000 можно создать и включить в страницу доступа к данным компонент PivotTable (Сводная таблица). С его помощью пользо­ватели могут просматривать данные отчетов, выполнять их динамическую сортировку и фильтрацию, группировать сведения по строкам или столбцам, получать суммарные значения и изучать их отдельные составляющие. Все это позволяет эффективно обрабатывать как небольшие объемы данных, так и крупные массивы информации.

Page 127: Access 2000. Проектирование баз данных-OCR

Глава VI I Конвертирование баз

данных из других программных сред

• Процесс конвертирования баз данных • Импорт базы данных БД ЧЭС • Импорт базы данных Контроль ЧС

Мы уже говорили о том, что по мере появления новых, более совершенных СУБД все актуальнее становится проблема использования данных, которые накоплены в информационных банках предыдущих, в том числе и морально устаревших вер­сии. И сами эти СУБД, и организованные в них сведения очень разнообразны по составу, структуре и форматам данных, а также по программной основе. Эти БД часто создавались разными организациями и разработчиками, а какие-либо пра­вила, четко регламентирующие создание банков данных, отсутствуют. Несмотря па это в большинстве случаев информация, в какой бы форме она ни содержалась, сохраняет свою ценность, например, когда речь идет о статистических данных. Следовательно, нужно уметь использовать сведения независимо от того, в СУБД какого типа они хранятся.

В решении этой проблемы на сегодняшний день наметились два основных на­правления:

Q применение конвертеров, которые преобразуют данные из одного формата в другой. Наборы таких конвертеров, хотя и не всегда достаточно полные, есть практически во всех СУБД, и пока это основной путь решения про­блемы;

Page 128: Access 2000. Проектирование баз данных-OCR

1 24 Конвертирование баз данных из других программных сред

• использование технологии ODBC (Open Database Connectivity). ODBC-открытый интерфейс доступа к базам данных ил прикладных программ. О^ позволяет работать с документами «чужих» для конкретной БД форматов.

В настоящей главе рассматривается первый способ решения проблемы. Речь пойдет о конвертировании в Access 2000 двух баз данных, созданных в различных СУБД, Б различных организациях, в разное время п разными авторами. (Отме­тим, что по понятным причинам при разработке этих БД никакой предпроектной структуризации данных не производилось.) Первая - база данных по чрезвычай­ным экологическим ситуациям (БД ЧЭС) - была создана в программной среде Clarion версии 3.0 (MS DOS) в 1990 г. в Государственном институте прикладной экологии (ГИПЭ). Вторая - Контроль ЧС - в программной среде FoxPro версии 2.5 (Windows 95/98) в 1997 г. в Главном управлении Федерального агентства пра­вительственной связи и информации (ГУИС ФАПСИ). Обе базы данных ведутся в течение ряда лет и содержат информацию о чрезвычайных ситуациях, происхо­дивших на территории России. Таким образом, эти две БД дополняют друг друга. Мы объединим их с новой базой данных - Контрольно-измерительные прибо­ры, процесс создания которой в среде Access 2000 был подробно описан в преды­дущих главах. Полученную таким путем объединенную БД следует рассматривать как часть будущей, более широкой базы данных. Вообще говоря, совсем не обяза­тельно стремиться к тому, чтобы все файлы содержались в одной БД - как и всегда в жизни, гигантомания должна иметь свои пределы. Но это уже иная проблема, ко­торая не имеет отношения к проблеме конвертации БД и не влияет на ее процесс.

Как показывает опыт, при конвертировании баз данных могут возникнуть еще две трудности:

Q- несовпадение кодов словарей; • различие между форматами полей даты и времени в разных БД. Первая проблема носит чисто технический характер. Она вызвана тем, что в раз­

ных БД могут использоваться различные словари для одних и тех же понятий или объектов. Это, как правило, неизбежно, если для данного класса понятий отсут­ствуют словари, утвержденные на федеральном уровне. Здесь возможен простой выход: переводите все файлы, где используются «спорные» понятия, на единые коды (либо перекодируйте словари, либо оставьте для этих понятий только один словарь).

Вторая трудность связана с тем, что в СУБД разных семейств установлены раз­личные временные точки отсчета, поэтому вам придется дополнительно форма­тировать соответствующие поля. Более подробно такие ситуации рассматривают­ся ниже.

Процесс конвертирования баз данных Итак, перед началом конвертирования вы имеем:

• базу данных Контрольно-измерительные приборы, созданную в программ­ной среде Access 2000;

Page 129: Access 2000. Проектирование баз данных-OCR

зоцесс конвертирования баз данных 125

базу данных БД ЧЭС, сформированную в среде Clarion 3.0; базу данных Контроль ЧС, разработанную в программной среде FoxPro 2.5.

Наша цель - объединить все эти базы данных в одну, расположенную в про­граммной среде Access 2000. Вся дальнейшая обработка информации будет про­исходить в этой новой БД. Чтобы решить поставленную задачу, вы будем импор­тировать базы данных в Access 2000, одновременно преобразуя их из исходных форматов в новый.

Существуют ли какие-либо альтернативы такому решению? Да, теоретически их две:

• если структуры файлов двух или нескольких баз данных совпадают, можно свободно переносить информацию из одной БД в другую. Однако, как уже говорилось, такая ситуация крайне маловероятна;

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

Технология импорта для каждой из двух конвертируемых баз данных несколь­ко различается.

Импорт БД ЧЭС по необходимости состоит из двух этапов. Clarion 3.0 - до­вольно старая программная система, поэтому она содержит очень небогатый на­бор конвертеров. Из них практическую ценность имеет лишь конвертер данных из формата DAT в формат программы dBase3 - DBF. Именно этим инструмен­том вы и воспользуемся. Следующим шагом будет импорт файлов с их одновре­менным конвертированием из базы данных формата dBase3 в БД Контрольно-измерительные приборы в формате Access 2000 - MDB. Конечно, указанное имя этой базы данных уже не будет соответствовать ее содержанию, и его придется изменить.

Двухэтапным будет также и перевод базы данных Контроль ЧС из формата в формат, но по другим причинам. Дело в том, что при всей мощности и гибко­сти Access 2000 из этой версии (по сравнению с Access 97) исчез конвертор форматов данных FoxPro. В результате, даже несмотря на родственный фор­мат (DBF), с которым работают СУБД семейства dBase, при попытке прямого импорта файлов из FoxPro в Access 2000 с помощью конверторов возникают трудности с преобразованием текстовых файлов: во-первых, не конвертируют­ся файлы типа Memo, во-вторых, текстовые строки конвертируются с искаже­ниями, так что понять эти тексты нельзя. Поэтому порядок работы будет та­ким: первый шаг - переносим данные из FoxPro в Access 97, второй - из Access 97 в Access 2000.

Page 130: Access 2000. Проектирование баз данных-OCR

1 26 Конвертирование баз данных из других программных сред

Импорт базы данных БД ЧЭС Начнем с краткой характеристики базы данных БД ЧЭС.

Первый этап: импорт данных из среды Clarion в dBase Сначала посмотрим, как выгляди! фрагмент этой базы данных. На рис. 7.1 nptvi ставлена часть окна базы данных - ответ на запрос об авариях на магистральны трубопроводах, которые произошли на территории Российской Федерации в 1995 По каждой из чрезвычайных ситуаций, содержащихся в этом списке, можно п• лучить (в электронном или печатном виде) более подробную информацию.

Для импорта базы данных используем конвертер Ccvt, который входит в с став программного обеспечения среды Clarion (см. рис. 7.2). Как видно из piicyi ка, конвертер предоставляет не слишком широкие возможности преобразован и форматов: либо в текстовый файл на языке Basic, либо в универсальный обмен ный формат DIF, либо в один из форматов языка dBase. Однако Basic нам в да i ном случае не нужен, a DIF не получил широкого распространения. Значит, ост ется, как мы уже договорились, преобразовывать данные в формат dbf.

Как и раньше, мы будем рассматривать конвертацию данных на примере одн го файла. Возьмем самый представительный в базе данных БД ЧЭС файл Filel.dat, показанный на рис. 7.2. В сущности, само формальное преобразован!i происходит предельно просто. Выберите с помощью клавиатуры (а не мыши, 'i, как MS DOS вполне может обходиться и без нее) выходной формат (Output Тур и имя выходного файла (Output File), который назовите Filel.dbf. Теперь нажми

1 *™ А • :\ • | а | ВЦ g f g AJ

Рис 7 1

Page 131: Access 2000. Проектирование баз данных-OCR

импорт базы донных БД ЧЭС 127

Рис. 7 2

клавишу Enter. Указывать файл-источник (Source File) не надо: имя этого сис­темного файла Clarion введет сам. На данном этапе и произойдет преобразование: появится требуемый файл Filel.dbf. Если, вводя имя этого файла, вы не указали его расположение, то он будет помещен в ту же директорию, в которой нахо­дится конвертер Ccvt. Казалось бы, дело сделано, и можно переходить к следую­щему этапу конвертирования.

Однако не все так просто. В dBase действует ограничение на длину имени поля -оно не может превышать 10 символов. Кроме того, при конвертации в название включается префикс. Например, имя поля PEREDAL после преобразования пре­вратится в FIL_PEREDA. Но в результате конвертации точно так же будет выгля­деть и имя другого поля - PEREDAB. Тогда окажется, что в файле Filel.dbf содер­жатся два поля с одинаковыми именами, что недопустимо. Конечно, такая проблема разрешается относительно легко: войдите в систему dBase и там исправьте имя фай­ла Поскольку данная ситуация является частной, здесь она подробно не рассмат­ривается. Но очень важно помнить, что при переносе файлов из одной СУБД в другую (даже если речь идет о реляционных СУБД) необходимы повышен­ные осторожность и внимание. В следующем разделе будет показано, что описан­ный выше эпизод - не единственный случай, когда могут возникнуть проблемы.

Так или иначе, первый этап импорта файлов завершен (как вы помните, осталь­ные файлы конвертируются точно так же). Можно переходить ко второму шаг}'.

Второй этап: импорт данных из dBase в Access 2000 Теперь нам нужно импортировать в базу данных Контрольно-измерительные при­боры файлы из базы данных БД ЧЭС, конвертировав их при этом из формата dBase.

Page 132: Access 2000. Проектирование баз данных-OCR

128 Конвертирование баз данных из других программных сред

Импорт файлов Снова откроите окно базы данных. Напомним, что необходимо выполнить след ющие действия:

1. Из окна Access 2000 открыть базу данных по ее имени (БД ЧЭС). В резул тате на экране отобразится начальная форма (см. рис. 4.24).

2. Щелкните по кнопке _©| на панели инструментов базы данных. На экра: появится окно базы данных (см. рис. 3.1).

3. Если начальная форма вам почему-либо мешает, уберите ее, щелкнув г кнопке закрытия окна.

Теперь в меню базы данных выберите опцию File (Файл), а в открывшемся по. меню - Get External Data (Внешние данные). Затем активизируйте опцию Impoi i (Импорт), после чего на экране появится одноименное окно Import. Вам приде ся пройти по дереву файлов в поисках базы данных в формате DBF, которую к i получили в результате первого этапа работы (см. предыдущий раздел главы). К а , и раньше, возьмем в качестве примера файл Filel.dbf. Чтобы увидеть его либо др\ гие файлы этой базы данных в формате DBF, надо в поле Files of type (Файл! типа) активизировать или какую-либо модификацию dBase, или опцию All files (Все файлы). В противном случае файлы формата DBF будут невидимы. Hail дя нужный файл и пометив его, щелкните по кнопке ^ import J (см. рис. 7.3 i Если все прошло нормально, то Access 2000 выдаст сооощенис Successfully im­ported 'FILEl' ('FILEl' успешно импортирован), как показано на рис. 7.4. Щели ните по кнопке ОК.

| Import

Look in:

^5

Р^ч •Mr '

\_ 1 * 1 1

^^S='-* '44

^k£jMi i Wet/ Folders •

^^^ШВЯ

_J dBase

_J] Filel.dbf _-3]Olad.dbf J]Wa5te.dbf

File name:

U^j jgyeAs^m^bf^

ВЕЭ1 j <- (tj ® X CL, Ш - то* -

J шшшшшшшшшш^

& • Import

Cancel

Рис. 7.3

Page 133: Access 2000. Проектирование баз данных-OCR

Импорт базы донных БД ЧЭС 129

1 Microsoft Access • 1

1 ) Sue cessfully imported 'FILE 1 Г.

' 0K '.

Рис. 7.4

Теперь надо закрыть окно Import, и тогда вы увидите, что в окне базы данных появилась новая таблица Filel (см. рис. 7.5).

Поля даты и времени Итак, второй этап импорта прошел успешно, и кажется, что с базой данных все в порядке. Однако приглядимся повнимательнее к импортированной таблице (см. рис. 7.6), особенно к полям даты и времени FILDATAY, FIL_TIMECH, FIL_DATAS, F1LTIMESO. (Вы помните, как образовались эти имена? К исход­ным названиям полей файла Filel.dat при преобразовании его в формат DBF сле­ва добавляются префиксы FIL_, а общее имя поля «обрезается» до 10 символов.) На рис. 7.6 эти поля сгруппированы вместе, чтобы их удобнее было просматри­вать. Значения перечисленных полей выглядят необычно, и вы поймете, в чем дело, перейдя в режим конструктора с помощью кнопки Ы,-\. Окно режима

Ы Microsoft Access File Edit View Insert Tools Window Help

m*i Й' аё-М*?

dbl: Database Ш\ t^Open k£ Design j^New X

Create table in Design view

Create table by using wizard

Create table by entering data

232 Менеджер Назначение

Приборы, представленные на рынке2 Страны Типы приборов фирмы

a i - < * 8 g ^ i . i -«•>-

3

d Рис. 7.5

5-_

Page 134: Access 2000. Проектирование баз данных-OCR

130 Конвертирование баз данных из других программных сред

В Microsoft Access - (FILE1: Table! • file Edi

id- У

J_l

Re

ML_VID] 1Q305 10305 10109 10305 10109 10109 10305 10301 10305 10305 10302 10101 11002 10302 10301 10305 10305 10202 30303 30303 10801 10302 10305 10302 10302 10101

cod i* | *

View Incur Г n , ,i PE L I *

e a : e a ^

FILJ3ATAY | Fll__TIMECH | 70699 0 00 70890 0 00 70890 0 00 70891 0 00 70883 0 00 70883 0 00 70683 0 00 70885 0 00 70880 0 00 70В8Э 0 00 70861 0 00 70868 0 00 70893 12 20 70902 0 00 70909 0 00 70904 0 00 70912 0 00 70918 0 00 70919 0 00 70921 0 00 70921 0 00 70901 0 00 70903 0 00 70923 0 00 70918 0 00 70925 0 00

I 1 ,i |'l|>»J « Н И

Tools j/jndD

? J • ПО-

« i\ l\ FIL_OATAS |

70894 70S92 70691 70891 70884 70885 70885 70886 70883 70884 70861 7087D 70897 70904 70911 70912 70918 70918 70921 70921 70921 70901 70904 70924 70925 70925

Help

• e g - ^ - © -

^Ъ M » • * © £ ] . © . FILJTIMIESO | FILJ4AMIECH ]FIL_RESl| F I L _ N A M E R E 7

0 Обнаружение рзэл 1 5760001 Обнаружение ргуп 1

D Выброс газа из СКЕ 1 0 Обнаружение ртуп С Аварии на магистр 1 0 Аварии на магистр 1 0 Обнаружение (утрг 1 0 Авария с выброса* 1 0 Обнаружение (утре 0 Обнаружение ртуп 1 0 Аварии на транспо ' 0 Авария грузового г 1

4320001 Прорыа дамбы зол 1 450D001 Аварийный слиь бе

0 Отравление людей 1 0 Обнаружение ртун 0 Обнаружение ртуп 1 0 Выброс нефти и ее 0 Загрязнение водно 1 0 Загрязнение водно 0 Авария на канализ 1 0 Аеэр«я топливозап 0 Обнаружение ртуп 1 0 Авария на транспо 1 0 Утечка аммиачной 1 0 Авария грузового г \

1 Российская ф( 1 Российская ФЕ 1 Российская ФЕ 1 Российская ФЕ 1 Российская ф< 1 Российская ФЕ 1 Российская ФЕ 1 Российская ФЕ 1 Российская ФЕ 1 Российская ФЕ 1 Российская ФЕ 1 Российская ФЕ 1 Российская ФЕ 1 Российская ФЕ 1 Российская ФЕ 1 Российская ФЕ 1 Российская ФЕ 1 Российская Фб 1 Российская ФЕ 1 Российская Ф: 1 Российская ФЕ 1 Российская ФЕ 1 Российская ФЕ 1 Российская ФЕ 1 Российская ФЕ 1 Российская ФЕ

l - l a " J ? i l £ j £

FIL ME]]

fP 11 51 11 41 41 81 11 21

21 31 21 21 21 21 21 51 21 21 21 81 11 41 21

^

Рис 7 6

конструктора показано на рис. 7.7. Оказывается, эти поля, которые должны при­надлежать к типу Data/Time (Дата/Время), после преобразования относятся к типам Text (Текст) или Number (Числовой).

Внесите необходимые исправления. Задайте для полей тип Date/Time (Дата Время). В разделе Field Properties (Свойства полей) для полей дат F1L_DATAV и FIL_DATAS установите значение свойства Short Date (Краткая дата), что соот­ветствует изображению даты 09/12/1999, а для полей времени FIL_TIMECH и FILTIMESO - значение свойства Short Time (Краткое время), что соответству­ет изображению времени 12.36. Раз уж мы взялись наводить порядок, давайте зада днм для свойства Caption (Заголовок) перечисленных полей соответственно значе­ния Дата ЧЭС, Дата сообщения о ЧЭС, Время ЧЭС, Время сообщения о ЧЭС

Путешествия во времени Теперь посмотрим, что у нас получилось. Перейдя в режим формы с помощью кнопки • -1 (см. рис. 7.7), вы обнаружите крайне любопытную картину. Поля вре­мени теперь имеют привычные русскоязычные имена и выглядят нормально, если не считать того, что в большинстве случаев в эти поля введены нулевые значе­ния. (Заметим, что это не ваша вина; информация о времени ЧЭС и уж тем бо­лее о времени передачи сообщения поступает далеко не всегда ) Но взгляните на поля дат. На календаре базы данных должен стоять 1995 год - год, указанный

Page 135: Access 2000. Проектирование баз данных-OCR

Импорт базы данных БД ЧЭС 131

д Щ И Ш . Ц Ш Ш Ы Ц Ц Ш Л шп JsJiU

?- g» С? • S -Й • О. Description

Default Value Validation R jle validation Tc*t Peg jned Allow 2^0 Length 1ПОе<Н Unicode Curnpfession

Field Properties

j )ta type det^ oires the kjnd of values that irers L-ЗП 5to>e m the fHd Pte- s H for telpon data type-:

Рис 7 7

в запросе. А в таблице, которая представлена на рис. 7.8, вы видите 2094 год. Этот забавный факт имеет вполне рациональное объяснение, связанное с тем, что на­зывается несовпадением в исходных установках различных СУБД. Если не задать заранее точное значение типа поля1 - а для даты и времени это Date/Time (Дата/ Время), то каждая введенная дата будет заноситься в память СУБД в виде число­вого выражения. Оно представляет собой количество дней, прошедших от даты, принятой за точку отсчета (ей присвоено значение 1). Это имеет определенный смысл' при необходимости вы сможете выполнять с датами арифметические Действия. Если вы вводите значение времени, оно сохраняется в памяти в виде Десятичной дроби, которая равна прошедшей на данный момент части дня. (За точку отсчета принимаются 12 часов ночи.) А вот исходная дата в каждом се­мействе СУБД может быть разной. Например, в различных редакциях пакета Office, частью которого является Access, такой датой является 1 января 1900 года. В версиях языка dBase (одну из которых мы использовали) это 1 января 1800 года. Теперь вам понятны числа, которые появились в полях дат сразу после конвер­тации файла Filel в Access 2000 (см. рис. 7.6). А вот сутки во всех семействах СУБД начинаются в полночь, и тут при всем желании трудно придумать что-то оригинальное.

У яого понятия есть синоним - «формат данных», что, на наш взгляд, более точно Но в настоящей книге под форматом данных понимается тип расширения файла базы данных

Page 136: Access 2000. Проектирование баз данных-OCR

132 Конвертирование баз данных из других программных сред

I B Microsoft Access

F.le Edit view Insert FQrrrut Records

,o M

IP

о

Ре

,

Й Н S u " Jf • H i a ? *

F1LE1: Table Дата ЧЭС | Время

08/24/2094 08/26/2094 08/26/2094 08/27/2094 08/29/2094 08/24/2094 07/24/2094 09/10/2094 09/09/2094 09/09/2094 03/24/20941 03Я4/2094 03/05/2094 03/05/2094 03/20/2094 03/23/2094 05,90/2094 05Л5/2094 05/04/2094 05/09/2094 08/10/2094 09/16/2094 09/15/2094

cold i* | < | | 106 »

4a IB •' Qa I S •'

ЧЭС |Дата 12 40 03 15 17 25 09 00

00 00 00 00

10 30 00 OOiO 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

10 15 04 30

1 H|»*| ol 858

Tpol'E и^тНол'

?J • ОЛ

• < £1 I I

сообщения |Вра 08/26/2094 08/26/2094 08/26/2094 08/23/2094 08/29/2094 08/30/2094 07/29/2094 09/11/2094 09/10/2094 09/12/2094 04/21/2094! 04/21/2094 04/21/2094 04/21/2094 04/21/2094 04/21/2094 06/23Д094 06/23/2094 06/23/2094 06/23/2094 12/30/1899 ОЧ/1КД094 09'16'2U94

Help

"S -Й - @ -, "a ** •• ^ B -41- ITJ .

мя соовщвния| FIL_RESP

00 00

00 0П 00 00

00.00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 DO 00 00 00 00 00

• 1 1

| FIL_NAMIERE| 1 Российская Ф< 1 Российская Ф( 1 Российская Ф< 1 Российская Ф< 1 Российская Ф( 1 Российская Ф( Э Украина 1 Российская Ф( 1 Российская Ф( 1 Российская Ф( 11 Российская Ф(-1 Российская Ф< 1 Российская Ф< 1 Российская Ф( 1 Российская Ф( 1 Российская Ф* 1 Российская Ф( 1 Российская Ф< 1 Российская Ф< 1 Российская Ф( 1 Российская Ф( 1 Российская Ф( 1 Российская Ф(

ШШШ BZEH

• я п о FIL_MECTO | FIL^7!

6113200 1132С 7110400 1104С 9110500 1105C-J 9110800 1108С 5116500 1165С 3116000 11 БОГ

0 2111400 1114С 5116500 1165С 8117600 117ВГ 4119200 • • ! 4118700 4118000 1180С 4115700 115ГС 4118000 6115200 1152С 5116500 11 КГ J 4113600 1ПСС 411.8700 1187Г. 4115300 9111000 2112000 112ПС 8117600 1176Г-]

-1 _1 •&

Рис. 7.8

Возникает естественный вопрос: а почему нельзя при конвертации данных в dBa установить для полей дат соответствующий формат, а не цифровой, который бь использован в нашем примере? К сожалению, в dBase задано жесткое огранич ние на длину поля Date - 8 бант. Если вы считаете необходимым использова-четырехзначные символы для указания на год (вспомните страх проблем: 2000 года!), то в указанный лимит явно не укладываетесь: поля дат получатся пр •• сто пустыми, что вас, разумеется, не устраивает.

Однако, объяснив этот печальный факт, вы не избавились от необходимости ис­править положение. Чтобы сделать это, воспользуйтесь операцией замены-вставки Сначала выделите столбец Дата ЧЭС, щелкнув кнопкой мыши по его имени. Теперь в меню Access 2000 откроите таблицу Filel в режиме конструктора (см. рис. 7.8). Акти­визируйте опцию Edit (Правка) и выберите Find (Найти). Можно, не входя в меню, просто применить комбинацию клавиш Ctrl+F. В результате на экране появится окно поиска-замены Find and Replace (Найти и заменить), как показано на рис. 7.9.

Теперь откройте вкладку Replace (Заменить) и установите в этом окне следую­щие значения полей:

• Find What (Что найти) - /2094 (часть поля в столбце, которая подлежит замене);

• Replace With (Чем заменить) - /1995 (год, устанавливаемый в порядке за­мены);

Page 137: Access 2000. Проектирование баз данных-OCR

Импорт базы данных БД ЧЭС 33

Find and Replace 1*1 Find

Find What:

Replace With

Lock In:

Match:

Search:

Replace

|1И!Я1

|/.«

1 | д п / Part of Field

|AII

1

3

3 3

Г Match Case

Г

3

3

Find Next

Cancel

Replace

Replace All

<< Less

Рис. 7.9

D Match (Исправить) - Any Part of Field (Любая часть поля). Данная опция задается стрелкой прокрутки;

J Search (Искать) - All (Везде). Задается стрелкой прокрутки. После этого следует щелкнуть по кнопке Replace All (Заменить везде). Затем

повторите описанную процедуру для столбца Дата сообщения. В ходе операции поиска-замены по всем полям этих двух столбцов значение года - 2094 - будет заменено на 1995. Итоговый вид таблицы после внесенных исправлений представ­лен на рис. 7.10.

Но и это еще не все. Если вы сравните сообщение о ЧЭС, полученное из исход­ной базы данных в среде Clarion, и его изображение после конвертации в Access 2000 (см. выделенную запись 106 на рис. 7.10), то обнаружите одно различие, кото­рое, конечно же, свойственно всем записям. Согласно информации в исходной базе данных, авария на магистральном трубопроводе произошла 23.03.95 г. В но­вой БД этому событию соответствует другая дата - 24.03.95 г. В чем тут дело? Детальная проверка объясняет причину такого сдвига во времени: в разных СУБД заложены разные установки насчет того, как представлять дату 29.02 в високосном году. Это и проявляется при преобразовании базы данных. Там за несколько лет накапливаются большие массивы информации, и в каждом висо­косном году 29 февраля происходит своеобразная «мутация»: в преобразован­ных записях все даты отличаются от исходных на +1 день. Через 4 года сдвиг Увеличивается еще на 1 день, и т.д. Как видите, здесь необходима корректиров­ка, и осуществить ее технически несложно; потребуются лишь внимательность 11 Методичность. Просто сравните выбранные вами контрольные записи в исход­ной БД с их отображением в новой, итоговой базе данных и определите границы п°Дмассива с конкретным значением сдвига (например, +1). Теперь исправьте Данные этого подмассива с помощью операции поиска-замены так, как было по­казано выше.

Page 138: Access 2000. Проектирование баз данных-OCR

1 34 Конвертирование баз данных из других программных сред

|ЕЗ Microsoft Access File Edit View Insert Format Pecordo Toe Is Windo v

i D e J H l a t ' j . i b e y - i H a a ? * m ©

Re

F I L E l : Table FIL^VIPY | FIL_NAMECH |

10305 Обнаружение ; 30303 Загрязнение в( 20203 Обвалы грунта 30303 Загрязнение ei 10801 Авария на кан. 30303 Загрязнение р< 10109 Авария на мап 101091 Авария на мап| 10802 Авария водоес 10201 Пожар в цехе i 10302 Авария грузов' 10109 Авария на скв< 30202 Превышение Г 10201 Пожар на мета 10205 Пожар иэобутн 10701 Авария на эле! 10109 Авария на кон; 10203 Сход вагонов t 10301 Авария с выбр 10305 Разлив ртути е 10305 Обнаружение ( 10109 Авария на мап 10301 Авария с выбр

cord и | « ( I 10в » I » i l»* i of

' ' '•'> Ь - аа

• ^ -•- и i\

Help 1 ng-Й

.--•а • о.

м •* * © й

Дата ЧЭС | Время ЧЭС {Дата сообщения! Время 06/27 Л 995 06/29/1905 06/24/1995 07/24/1995 09/10/1995 09/09/1996 09/09/1995 03/24/1995! 03/04/1995 03/05/1995 03/05/1995 03/20/1995 03/23/1995 05/20/1995 05/05/1995 05/04/1995 05/09/1995 03/10/1995 09/16/1995 09/15/1995 06/26/1995 09/25 '1935 09/30'1ЛП5

ese

09 00

00 00 00 00

10 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

10 15 04 30

15 07 00 20 лл nn

03/26/1995 08/29/1995 08/30/1995 07/29/1995 09/11/1995 09/10/1995 09/12/1995 04/21/1995' 04/21/1995 04/21/1995 04/21/1995 04/21/1995 04/21/1995 06/23/1995 06/23/1995 06/23/1995 06/23/1995 12/30/1899 09/16/1995 09/16/1995

09/26/1995 09/30/1995 na/qn/iQQc.

• о. сообщения] FIL_RESP |

0U 00 11

0П 00 11 00 00 11

00.00 11! 00 00 11 00 00 11 00 00 11 00 00 11 00 00 11 00 00 11 0000 11 00 00 11 00 00 11 00 00 11

00 00 11 00 00 11 00 00 11 ПЛ ЛП 11

1-loJx

- iDlx j FIL . tQ Poccm POCCHI

POCCK U

Украиг- I РОССИ!

РОС СИ; , Doccm дВВД D O C C m

Россн* POCCHI

Россш 3 ОС-СИ» D 0 C C I U эОССИ( Doccm 3оссш Doccm Pdccm Purcm Рос cm Poccm Prxuu

- ^

Рис 7 10

Сортировка записей И, наконец, последняя операция: таблицу базы данных желательно, хотя и не обя­зательно, отсортировать. Операция сортировки записей в Access 2000 очень про­ста. В окне конструктора (см. рис. 7.10) выделите тот столбец, по которому требу­ется сортировать записи. Сама сортировка производится с помощью одной из двух кнопок: £i] или gjj . Посредством первой из них вы располагаете записи по возрастанию: для цифровых символов - от 0 до 9, для текстовых - от А до Z. Вто­рая кнопка, соответственно, используется для сортировки записей по убыванию. Щелкните по одной из кнопок.

Теперь оглянемся назад и посмотрим, что уже сделано и что еще предстоит вы­полнить.

Вы преобразовали и импортировали в Access 2000 один файл (Filel) базы дан­ных БД ЧЭС из СУБД, созданной в среде Clarion. Но, во-первых, вы импортиро­вали только часть информации (данные лишь за 1995 год), а в БД ЧЭС накопле­ны записи с 1990 года. Во-вторых, в БД ЧЭС есть еще несколько словарных файлов, которые тоже нужно перенести в новую базу.

Что касается первой части вопроса, то можно, конечно, пополнить базу данны4

новыми записями точно так же, как данными 1995 года. Впрочем, для осущеа вления этой типовой операции вполне достаточно обычного SQL-запроса п.

Page 139: Access 2000. Проектирование баз данных-OCR

Импорт базы данных Контроль ЧС 135

File £dtt ^iew Insert Format Records Tools Window

S ^ B # Й У P у - s # a v- <f

1Гм FILEl: Table

• Виды ЧС |Нанм9ноыни'|

10205 Пожар в хило!.. 10302 Аварии на трак 10205 Пожар на узле 20307 Сильный дожд 10101 Сход вагонов i 20307 Сильный дожд 10301 Отравление лк 10301 Пишевое отраЕ 10201 Пожар в гараж 10205 Пожар в здани 10205 Пожар в жилок 10201 Пожар на Teppi 10101 Авария грузов! 10107 Дорожно транс 30102 Заболевание л 10201 Пожар на шве! 10802 Авария на вод 10205 Пожар в клубе 10201 Взрыв в катет 10803 Авария котла к 30102 Групповое эаб>

[ 1 10107 Дорожно транс I 10301 Отравление лк

' * Ь - с£

/ ' • *1 И

Help

' =g

ъъ м- о-

М •« * © -Й1

Дата ЧЭС [ Врем* ЧЭС [Дата сообщания[Врамл Jii/02'iq% 01/02/1995 01/02/1995 01/03/1995 01/03/1995 01*3/1995 01/05/1995 01/05/1995 01/06/1995 01/07/1995 01/07/1995 01,08/1995 01/09/1995 01/09/1995 01/11/1995 01/11/1995 01/13/1995 01/14/1995 01/18/1995 01/19/1995 01/19/1995 01/19/1995 01/19/1395

i 1Л1Г1Я П п п л ^ п - т п я н г n i /1Q/ iqQ^ Ci-.orf " I - I I 1 • |ы|>»1 of 646

I

00 00

00 00 14 55 00 00

00 0U

•1

12/30/1699 01/02/1995 12/30/1899 12/30/1899 12*30/1899 12/30/1899 12/30/1899 12/30/1899 12/30/1899 12/30/1899 12/30/1899 12/30/1899 01/11/1995 12/30/1899 12/30/1899 12/30/1899 12/30/1899 12/30/1899 12/30/1899 12/30/1899 12/30/1899 12/30/1899 12/30/1899 ОПП/1Я99

- О-

сообщения! Код рвспуб 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 пппл

• -|П|Х| пм[ Наймем] 11 Росси - ' 11 Росси 11 Росси 0

11 Росси 0

11 Росси 11 Росси 11 Росси 11 Росси 11 Росси 11 Росси 11 Росси 11 Росси 11 Росси 11 Росси 11 Росси 11 Росси 11 Росси 11 Росси 11 Росси 0 Росси

11 Рогси 11 Рпггит]

- J

•I

Рис. 7 11

присоединение, о чем будет рассказано в главе 9. (Правда, вам все равно придется заниматься устранением временного сдвига.)

Импорт словарных файлов производится так же, как перемещение файла Filel. Поскольку файлы подобного типа не содержат полей даты и времени, никаких дополнительных проблем здесь не возникает.

В завершение работы надо привести базу данных в привычный вид. Ограниче­ния на длину имени поля практически отсутствуют, поэтому дайте всем полям в файлах русскоязычные названия. Вы уже начали делать это немного раньше -в разделе «Поля даты и времени» - с помощью поля Caption (Заголовок) кон­структора таблиц. В своем заключительном варианте таблица Filel представлена на рис. 7.11, а окно базы данных - на рис. 7.12.

Импорт базы данных Контроль ЧС Технология импорта базы данных Контроль ЧС в основном та же, что и в преды­дущем случае. Как вы помните, исходная база данных существует в среде FoxPro. Поскольку в программном обеспечении Access 2000 отсутствует конвертер фор­мата FoxPro, на первом этапе надо импортировать файлы данных в Access 97 (где нужный конвертер есть), а уже затем, на втором этапе работы - из среды Access 97 fi Access 2000. Снова подробно рассмотрим эти преобразования на наиболее

Page 140: Access 2000. Проектирование баз данных-OCR

136 Конвертирование баз данных из других программных сред

| Ш Microsoft Access

J File Edit View Insert l o o Is Window Help

j D e£ t •• v ' :. *; •- ':}:.- а л - .

с

<

• d b l : Database

Щореп k£ Design i t ] New > -a "V :':;: 111

Objects

П

[1

в ^ ^ u=i И И _-, ЯШ ^ ЧЙР

«•-J*

Groups

^ l |

1

llTilBCreate tabte in Design v i e w B S]J Create table by using wizard

0 J Create table by entering data

Щ CLRES

Ш Filel

Щ MYI4

Ш REGION

Щ TIPCHS

Щ UtCRCHS

• Ш Менеджер

ЦП) Назначение

(ПИ Приборы, представленные на рынке2

ЦЩ Страны

Ш Типы приборов

ШВ Фирмы

1

• • J n l x l !

• °5 / - ?

• I J a l x l

1 > Рис. 7.12

показательном примере - на файле ES_oper.dbf, одном из тех, где сосредоточена вся основная фактическая информация.

Первый этап: импорт данных из FoxPro в Access 97 Как выглядит исходная запись базы данных Контроль ЧС в формате DBF среды FoxPro, показано на рис. 7.13.

Последовательность действий при конвертации указанного файла практичес­ки полностью совпадает с первым этапом импорта базы данных БД ЧЭС. Еще раз перечислим необходимые шаги, но очень кратко.

1. Откройте окно базы данных в Access 97. В принципе можно было исполь­зовать любую БД в Access 97, так как импортируемый файл в ней долго не задержится. Но ради чистоты эксперимента все же откройте новую базу данных в Access 97 и назовите ее dbl .mdb, как и будущую БД в Access 2000. Однако поместите открытую вами базу данных в другую (по сравнению с dbl.mdb в Access 2000) папку, чтобы программа Windows не возражала, так как одновременное присутствие на одном жестком дис­ке Access 97 и Access 2000 может вызывать конфликты. Окно этой пустой базы данных показано на рис. 7.14.

Page 141: Access 2000. Проектирование баз данных-OCR

Импорт базы донных Контроль ЧС 137

L i I И НИМИ — фалл Правка Поиск Спраьм

гн^п ~э Республика Кони

Усинск

ДяТЙ ЧС : 22/05/97

Виц ЧС: Аварии на нефтепроводах

В 28 км от города Усинска произошел разрыв магистрального подземного нефтепровода диаметрам 700 мм- Разлив нефти на поверхности около 2000 кв. метров. Нефтепровод перекрыт. Ведутся работы по очистке загрязненной территории. МЧС РФ проинформировано. Причина и ущерб аварии устанавливаются

А Рис. 7.13

2. Войдите в меню базы данных и задайте ряд команд: Файл => Внешние дан­ные => Импорт.

3. Найдите файл ES_oper.dbf в исходной БД (см. рис. 7.15). Не забудьте ука­зать в этом окне тип выбранного файла.

4. Щелкните по кнопке импорт |. 5. В ответ на сообщение Выполнен импорт ES_oper, щелкните по кнопке ОК. 6. В окне базы данных появится новая таблица ES_oper. Если вы теперь откроете таблицу ES_oper, (см. рис. 7.16), то увидите, что

даты в исходной и в импортированной базах данных совпадают и отображаются

^ Microsoft Access

Q & У l-ln|x|

_ f i - -a ® 0> dbl: база данных

ПИ Таблицы _§1 Запросы ) E l Форк

[Готово

гЗ Отчеты S Макросы «<£ Модули

-оздать

NUM

Рис. 7.14

Page 142: Access 2000. Проектирование баз данных-OCR

1 38 Конвертировоние боз данных из других программных сред

Импорт

~3 т\ &\тЩ --ГИГ

Найти файлы, отвечающие условиям:

Имя ф зила:

Хип файлов: Microsoft FoxPro (+.dbf)

_j j Текст/свойство:

w\ Дата изменения:

Имя J ] Classp.dbf _j] Classq.dof _j] Classr.dbf _j] Classt.dbf _d] Classtr.dbf _j] Es_dg dbf &Щ*1Л!Ж.ВВ j ] Pegion.dbf

_j] Region_d.dbf ^yj Tipchs.dbf

1 Размер 1 Тип 1 Кбайт DBF 1 Кбайт DBF 2 Кбайт DBF 1 Кбайт DBF 1 Кбайт DBF 1 Кбайт DBF

975 Кбайт DBF 6 Кбайт DBF 1 Кбайт DBF

13 Кбайт DBF

j Изменен 10/16/19.. 10/16/19.. 09/01/19.. 04/01/19.. 04/01/19.. 04/01/19.. 04/26/19.. 03/29/19.. 03/26/19., 10/07/19..

1 d

"

Импорт 1

Отмена I

Отбор...

По умолчанию устанавливаются не все типы файлов. Для их добавления служит кнопка "Выбор компонентов" в разделе "Доступ к данным" при устано&г.е. Другир типы данных есть и в Ofhce 97 V'aluPack.

Найдено файлов: 20.

Рис. 7 15

Microsoft Access

о с#и § а ?

:

м- в ' § а ? М ES O P E R : таблица

3J

• 1 jPe

DAY | OBJ 01/01/1997 11320210 01/01/1997 11800340 01/01/1997 12711615 01/01/1997 11450010 01/01/1997 11450010 01/01/1997 11490010 01/01/1997 11051467 01/01/1997 11410050 01/01/1997 11920280 01/01/1997 11710450 01/02/1997 11410410 01/02/1997 11450010 01/02/1997 11B70240 01/03/1997 12441110

П.» - I ' l l 1 . | . l

КИИ Т а б л и ц ы

©, -' ' m ' •

| KES 30115 30106 30110 10603 10Б03 10206 10201 10206 10206 10101 10206 10903 10200 10603

!>•! «a 6348

25- an-* <*'' SI XI

| SES 0 D 0 0 0 0 0 0 0 0 0 0 0 0 • I

og-^l- О ъъ~~ ** »*•*

I TES | Кемеровская об.

Ханты - Манснйс!

Москва

Ленинградская о

_ 1

&-М- 5)

• M J n l x l l

ШШ-ЬЫ DEXU | CES | Ob_iJ 01/01/1997 01*1/1997 01/01/1997 01/01/1997 01/01/1997 01/01/1997 01/01/1997 01/01/1997 09/29/1997 01/01/1997 01/02/1937 # 09/29/1997 01/02/1997 10/27/1998

Ново Стер Окгя! Мое» Mock Новп ШКОТ

ВОЛК

Нижн Тобо CBBTI

МоСк Сосн Били-]

1 • ним ' ' '••"'

-J

Рис. 7.16

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

Page 143: Access 2000. Проектирование баз данных-OCR

Импорт базы данных Контроль ЧС 139

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

1. Откройте окно базы данных в Access 2000 (см. рис. 7.12). 2. Войдите в меню базы данных, а затем задайте ряд команд: File => Get

External Data => Import (Файл =» Внешние данные => Импорт). 3. Найдите файл ES_oper.dbf в исходной базе данных (см. рис. 7.15). Чтобы

файлы с таким расширением были видимыми, предварительно укажите в этом окне соответствующий тип файла (или «Все файлы»).

4. Щелкните по кнопке Вт import |. 5. На появившееся сообщение Successfully imported 'FILE1' ('FILE1' успеш­

но импортирован) следует ответить ОК. 6. В окне базы данных появится новая таблица ES_oper. Пока все в порядке, но не забывайте, что вы импортировали только один файл,

хотя и самый большой - ESoper. Однако в базе данных Контроль ЧС содержит­ся еще много словарных файлов. Проведите для каждого из них аналогичную двухэтапную процедуру импорта.

Опустим промежуточные детали, подробно рассмотренные на примере файла ES_oper. На рис. 7.17 представлено окно новой базы данных в Access 2000, в кото­рой собраны наконец все файлы - как свои, «родные», так и импортированные.

У Microsoft Access File Edit View Insert Tools Window Help

СПЙ a a у * ^

ГЛ5ТЗП

b - ОД ' a" a s * ! - GJ R3 dbl: Database

Щ1]0реп k£ Design JDNew X

Objects

Lroups

0J Ej 0 j

• ED И 11 Ш m m m .i

Create table in Design view

Create table by using wizard

Create table by entering data

CLASSA

CLASSC

CLASSCC

ClASSD

CLASSE

CLASSG

CLASSL

CLASSO

CLASSP

1

a m m m m m m m m m m

*m

CLASSQ

CLASSR

ClASST

CLRES

ES_OPER

Filel

MVN

REGION

REGION_D

TIPCHS

UKRCHS

Менеджер

; Sf> Рис. 7.17

Page 144: Access 2000. Проектирование баз данных-OCR

140 Конвертирование баз данных из других программных сред

В заключение надо русифицировать имена полей в файлах, подобно тому как это было показано на рис. 7.11 для файла Filcl из базы данных БД ЧЭС. Посвя­щать изменениям каждого файла по отдельному рисунку нет смысла - файлоц слишком много.

Кроме того, эти изменения будут рассмотрены в последующих главах, когда речь пойдет о программировании в базе данных.

Резюме 1. По мере появления новых, более совершенных СУБД все актуальнее стано­

вится проблема использования данных, которые накоплены в информаци­онных банках предыдущих, в том числе и морально устаревших версий.

2. В решении этой проблемы на сегодняшний день наметились два основных направления: - применение конвертеров, которые преобразуют данные из одного форма­

та в другой. Наборы таких конвертеров, хотя и не всегда достаточно пол­ные, есть практически во всех СУБД, и пока это основной путь решения проблемы;

- использование технологии ODBC (Open Database Connectivity). ODBC -открытый интерфейс доступа к базам данных из прикладных программ Он позволяет работать с документами «чужих» для конкретной БД фор­матов.

В настоящей главе рассмотрен первый способ решения проблемы. 3. Как показывает опыт, при конвертировании баз данных, кроме собственно

преобразования форматов СУБД, могут возникнуть еще две трудности: - несовпадение кодов словарей; - различие между форматами даты и времени в разных БД.

4. В процессе конвертирования, который описан в настоящей главе, необходи­мо преобразовать в программную среду Access 2000 базу данных БД ЧЭС, сформированную в среде Clarion 3.0, и базу данных Контроль ЧС, разрабо­танную в программной среде FoxPro 2.5. Третья БД в этом интегрированном банке данных - Контрольно-измерительные приборы - создана непосред­ственно в среде Access 2000. В результате все эти базы данных должны функ­ционировать совместно.

5. При переносе файлов из одной СУБД в другую необходимы повышенные осторожность и внимание, так как различие в исходных установках, поло­женных в основу той или иной СУБД, может привести к самым неожидан­ным коллизиям.

Page 145: Access 2000. Проектирование баз данных-OCR

Глава VIII Общие вопросы

программирования в Access

• Сравнительная характеристика языков программирования в Access

• Выбор языка программирования

Сравнительная характеристика языков программирования в Access В Access пользователь может работать с тремя языками программирования:

• SQL (Structured Query Language) - структурированный язык запросов. Это формальный стандартизованный язык высокого уровня, содержащий сред­ства непроцедурной (не требующей программирования) спецификации за­просов;

• макросы; • VBA (Visual Basic for Applications) - объектно-ориентированный язык про­

граммирования.

Язык SQL Язык SQL - это внутренний язык Access 2000, на котором формулируются запро­сы. В принципе SQL используется не только в среде Access 2000; он вообще широ­ко применяется в работе с реляционными базами данных. Поскольку сегодня

Page 146: Access 2000. Проектирование баз данных-OCR

142 Общие вопросы программирования в Access

подавляющее большинство БД относится именно к этому классу, язык SQL зна­чительно облегчает пользователю работу с различными СУБД.

Запросы - основной способ получения сведений пз базы данных. С помощью запроса вы можете отобрать определенную информацию и рассортировать ее по значениям полей. Очень важно, что запросы позволяют фильтровать данные, то есть выбирать именно ту информацию, которая удовлетворяет определенным, за­ранее заданным условиям. Запросы можно применять при создании форм, отче­тов, страниц доступа к данным. Использование запросов удобно при разработке таблиц и добавлении новых записей в уже существующие таблицы, при удалении записей, поиске дублирующихся данных и т.д. Работая с языком SQL, вы исходи­те из существующей организации БД и более или менее стандартного набора опе­раций, хотя структура самого запроса иногда бывает достаточно сложной. Прав­да, в запросе нежелательно использовать слишком разветвленные логические выражения: формального запрета на них нет и запрос построить можно, однако получившаяся структура будет громоздкой и неудобной. (Для подобных случаеь в Access есть средства программирования.) Чтобы запустить запрос, следует создать событие - команду, которая распознается формой, элементом управления формы или отчета. Таким событием может стать, например, щелчок по какой-либо кон­кретной кнопке. Однако пользователь должен еще задать область применения за­проса, так как он не запускается автоматически даже при возникновении события.

Макросы Макросы, или макрокоманды, представляют собой заранее созданные списки дей­ствий - программы, которые выполняются после щелчка пользователя по кнопке или после других определенных действий (возникновение ошибки, открытие, за­крытие элемента управления и т.д.). Каждое действие макроса выполняет опреде­ленную операцию: например, установка значения, открытие или закрытие фор­мы, диалогового окна и др. Макрос предназначен для объединения нескольких различных действий, представляемых макрооператорами, в одну процедуру, ко­торая легко может быть вызвана. В отличие от SQL, макрооператоры тесно связа­ны с командами данного программного продукта, в частности Access.

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

Макрос в среде Access состоит из перечня действий, которые в пошаговом ре­жиме выполняются в случае наступления определенного события. Допустим, мак­рос запускается, когда пользователь щелкает по командной кнопке, закрывает форму или активизирует панель управления текстовым документом, открывшим­ся в окне. Макрос может выполняться также при выполнении тех или иных усло­вий. Например, условные макросы могут отображать окно сообщения, если вводимые в поле данные имеют определенное значение. Макросы создаются в специальном окне макросов - Macro Builder (Построитель макросов).

Сопоставляя возможности макросов и языка SQL, отметим, что область при­менения первых заметно шире. Макросы могут использоваться для ситуаций,

Page 147: Access 2000. Проектирование баз данных-OCR

Сравнительная характеристика языков программирования в Access 143

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

Теоретически нет препятствий к тому, чтобы включить в макрос процедуру VBA. Однако на деле все обстоит скорее наоборот: макросы используются как составная часть этих программ, тем более что любой макрос легко конвертиро­вать пли включить в процедуру VBA.

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

По сравнению с SQL и макросами язык VBA является более современным, раз­витым и сложным, поэтому может использоваться для выполнения любых дей­ствий в ходе работы приложения. Данный язык включает в себя объекты, семей­ства, события, методы, процедуры, операторы и свойства. Программа VBA - это процедура, которая выполняет определенную операцию или рассчитывает и воз­вращает значение. Кроме того, очень важно, что VBA - язык программирования, управляемый событиями. Иначе говоря, с помощью программы VBA можно уста­новить необходимую реакцию объекта Access на определенное событие. Итак, язык VBA позволяет сделать все, что выполняют макросы, и даже существенно больше. В принципе с помощью VBA можно создавать и запросы. Однако специ­ализированный язык, каким является SQL, приспособлен для этого значительно лучше. (Ниже будет показано, что использование языка SQL в самом деле замет­но упрощает построение запросов.)

Существуют два вида процедур VBA: подпрограммы (subprocedures) и функции. Подпрограммы выполняют одну или больше операций, однако не возвращают

значение. Функции не только выполняют операции, но и возвращают значение. В справочной системе Access вы найдете множество примеров процедур событий. Эти процедуры можно скопировать и связать со свойствами события элемента управления. Затем вы можете изменить код и имена переменных, чтобы они соот­ветствовали вашему приложению. Для создания собственных процедур исполь­зуйте Code Builder (Построитель программ).

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

Cofiiii rue - это действие, которое может инициироваться пользователем, оператором VBA или самой сие i смой.

Page 148: Access 2000. Проектирование баз данных-OCR

144 Общие вопросы программирования в Access

Выбор языка программирования В приложении легко создавать и применять макросы и SQL-программы, но иног­да вам придется использовать язык VBA. Рассмотрим такой пример. Сообщения об ошибках, которые выводит система, обычно носят довольно абстрактный ха­рактер и скорее вызывают новые вопросы, чем дают ответы. Чтобы облегчить ра­боту пользователя, лучше отключить вывод таких сообщений и заменить их на короткие информативные «диагнозы», дополненные советами по решению про­блем. Все это можно сделать только с помощью программы VBA.

Макросы выполняются с заданными значениями аргументов. Аргументы - это параметры, используемые при вычислении значений функций и при выполнении процедур. Аргументы заключаются в круглые скобки. Если в ходе работы значе­ния аргументов требуется изменить, то вы должны написать процедуру VBA. Как видите, выбор между макросами и кодом VBA зависит от того, что вы хотите сде­лать. Макросы могут осуществлять простые операции - такие как просмотр отче­та или выключение панели инструментов. Некоторые задачи можно выполнять только с помощью макросов (например, определенные операции при первом за­пуске базы данных или установление соответствия между комбинацией клавиш и командой).

Access 2000 содержит много встроенных внутренних функций наподобие Date() и Pmt(), которые возвращают значения при указании аргументов. Внутрен­ние функции доступны и для макросов. Если вы хотите сами создать функции, то должны использовать соответствующие процедуры VBA. Кроме того, эти про­граммы позволяют создавать и модифицировать объекты точно так же, как и мас­тера. С помощью процедур VBA вы можете изменить оформление и функции эле­ментов управления формы и других объектов. Отметим, что процедуры легко открывать, поскольку они хранятся как модули. (Макросы содержатся отдель­но во вкладке Macro (Макросы) окна базы данных.)

Итак, программирование с помощью VBA имеет ряд преимуществ. Еще раз подчеркнем их:

• процедуры VBA находятся внутри определения формы или отчета. Если вы перемещаете или копируете эту форму или отчет в другую БД, то процеду­ры VBA автоматически перемещаются вместе с ней, в отличие от макросов (последние придется переместить или скопировать отдельно);

• если ни одна из встроенных в систему функций не удовлетворяет-вашим требованиям, то язык VBA позволяет создавать процедуры, состоящие из специализированных функций. Впоследствии они могут также использо­ваться вместо сложных выражений;

• макросы обрабатывают все множество записей. С использованием процедур VBA можно просматривать и обрабатывать записи по отдельности, изменяя команды в зависимости от установленных значений;

Q аргументы макроса нельзя изменить во время его работы. Напротив, когда выполняется процедура VBA, ей можно передавать другие значения или определять переменные в качестве аргументов;

Page 149: Access 2000. Проектирование баз данных-OCR

Резюме 145

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

• язык VBA чрезвычайно удобен для создания определений объектов БД и для манипулирования ими. Вы можете изменить свойства этих объектов, а так­же добавить или удалить элементы управления.

резюме 1. Access предоставляет пользователю возможность работы с тремя языками

программирования: - SQL (Structured Query Language) - структурированный язык запросов.

Это формальный стандартизованный язык высокого уровня, содержащий средства непроцедурной (не требующей программирования) специфика­ции запросов;

- макросы; - VBA (Visual Basic for Applications) - объектно-ориентированный язык

программирования. 2. Каждый из этих языков занимает определенную функциональную нишу.

В настоящей главе был приведен краткий обзор возможностей этих языков и даны общие рекомендации по их использованию.

Page 150: Access 2000. Проектирование баз данных-OCR

Глава IX Программирование

на языке SQL

• Типы запросов • Запросы на выборку • Создание объединенной выборки • Запрос на удаление записей • Удаление дублирующихся записей • Перекрестный запрос • Работа со средой Access 2000 без ее инсталляции

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

ТИПЫ запросов Запросы являются основным средством просмотра, изменения и анализа инфор мацни, которая содержится в одной или в нескольких таблицах базы данных. В этой главе, а также в главах 10 и 11, рассматриваются запросы, относящиеся к предметной области, обсуждаемой в настоящей книге.

Перечислим важнейшие типы запросов: • select query (запрос на выборку); Q action query (запрос на изменение); • SQL query (SQL-запрос).

Page 151: Access 2000. Проектирование баз данных-OCR

Гипы запросов 147

Запросы на выборку позволяют извлечь информацию, рассчитать показатели И создать перекрестные ссылки, но не изменяют данные в таблицах. Запросы на изменение дают возможность корректировать информацию, которая содержится в таблицах.

Существует четыре вида запросов на изменение: j make-table query (запрос на создание таблицы) - создает новую таблицу на

основе данных, которые уже размещены в одной или нескольких таблицах; j delete query (запрос на удаление) - удаляет все записи из одной или не­

скольких таблиц на основании критериев, заданных пользователем; • append query (запрос на присоединение) - добавляет целые записи или

только указанные поля в одну пли больше таблиц; • update query (запрос на обновление) - изменяет данные в существующих

таблицах на основании информации в окне конструктора. Эти запросы могут формироваться в окне конструктора запросов. SQL-запросы предназначены для решения более сложных задач и не создаются

в названном окне, а кодируются с использованием операторов SQL. Ниже пере­числены варианты SQL-запросов:

3 union query (запрос на объединение) - совмещает в одно поле поля, кото­рые расположены в одной или нескольких таблицах или запросах;

J pass-through query (запрос к серверу) - позволяет забирать информацию непосредственно из ODBC-таблиц (ODBC - Open Database Connectivity, средства работы с открытыми базами данных), так как напрямую связыва­ется с сервером, а не с таблицами системы Access;

• data definition (запрос па определение данных) - вносит изменения в опре­деление таблицы, то есть позволяет формировать и удалять таблицы, добав­лять в них поля и создавать их индексы;

• subquery (подзапрос) - создает оператор внутри существующего запроса на выборку или изменение. Подзапрос выбирает подмножество записей, уже извлеченных главным запросом.

Выполнение любых задач, связанных с таблицами, подразумевает использова­ние языка SQL. Запросы первых трех типов, перечисленных выше, встраиваются в средство просмотра SQL в окне запроса. Чтобы сформировать подзапрос, введи­те команду SQL SELECT в строке Критерии (Criteria) сетки Design (Конструктор).

Запросы в обеих редакциях Access (97 и 2000) могут создаваться как с помо­щью конструктора (Query Design), так и посредством мастера (Query Wizard). На наш взгляд, конструктор удобнее: во-первых, его операции оформляются более на­глядно, во-вторых, из конструктора легко переходить к инструкциям в форме SQL и наоборот. Тем не менее на конкретном примере будет показано, как формиро­вать запрос при помощи мастера.

Однако, как вы помните, есть и третья форма представления запроса - ин­струкции SQL. Между запросом, сформированным посредством конструктора, и инструкцией SQL существует жесткая и однозначная связь. Поэтому в дальней­шем мы будем показывать для каждого создаваемого запроса соответствующую ему инструкцию SQL, а также подробно рассматривать операторы, которые вхо-Дяг в ее состав.

Page 152: Access 2000. Проектирование баз данных-OCR

148 Программирование на языке SQL

Запросы на выборку

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

Формирование запроса с помощью мастера Откройте окно базы данных и щелкните по кнопке gl Queries |, чтобы перейти во вкладку Queries (Запросы). Затем выберите опцию Create query by using Wizard (Создать запрос с использованием мастера).

На экране появится (см. рис. 9.1) окно Simple Query Wizard (Мастер простых запросов), где содержится вопрос: Which fields do you want in your query? (Какие поля вы хотите включить в свой запрос?). Также мастер предупредит: You can choose from more than one table or query (Вы можете выбрать более чем одну таб­лицу или запрос). Выберите таблицу Страны и с помощью знакомой вам кнопки

» | перенесите все ее поля в будущий запрос. Затем щелкните по кнопке Next. Пропустите появившееся промежуточное окно, где вам предлагается задать имя за­проса (по умолчанию это будет Страны Query). Теперь на экране вы видите табли­цу (см. рис. 9.2), на которую ориентирован сформированный запрос. Одновременно

Simple Query Wizard

Which fields do you want in your query?

You can choose from moie than one table or query

Tables/Queries

|ТаЫе Страны

Available Field?:

d Selected Fields

Код Страна

ШИШЕ

Cancel Next > Finish

Рис 9 1

Page 153: Access 2000. Проектирование баз данных-OCR

Запросы на выборку 149

Ы Microsoft Access File Edit View Insert Format Records Tools

i Window Help

Ы, - 0 # B. v- •• - .

Щ]

lis1 Страны Query: Select Query H I s I D

*

Код | Страна | Примечания 01 Страна не укч: 02 United Kingdom 03 USA 04 Германия 05 Италия 06 Россия 07 США 08 Финпяндия 09 Франция 10 Швейцария

^

А

Рис 9 2

во вкладке Queries (Запросы) окна базы данных появится имя вновь созданного запроса - Страны Query.

Формирование запроса с помощью конструктора Теперь сформируем тот же самый запрос с использованием конструктора.

Как и при запуске мастера, откройте конструктор, выбрав вкладку Queries окна базы данных. Теперь активизируйте опцию Create query in Design View (Создать запрос в режиме конструктора). После этого вы увидите окно Show Table (Показать табли­цу). В нем вам нужно выбрать таблицы и/или запросы, на основе которых следует сформировать запрос (см. рис. 9.3). Как мы уже решили, это будет таблица Страны. На экране появится окно конструктора запроса - основного инструмента для по­строения запроса (см. рис. 9.4). В окне вы видите включенный в него макет таблицы Страны, которую вы только что выбрали. Кроме того, в окне расположены поля репликации (в данном случае они нас не интересуют) и поля таблицы: Код, Стра­на и Примечание. Щелкните дважды по каждому из них, и эти поля будут поме­щены в бланк запроса, расположенный в нижней части окна (см. рис. 9.5). Как видите, запрос действительно очень прост, и на этом его формирование можно счи­тать завершенным. Если вы теперь закроете окно конструктора с помощью обычной кнопки-«крестика», то Access 2000 попросит вас подтвердить выполненные операции или внесенные изменения (см. рис. 9.6): Do you want to save changes to the design of query 'Query Г? (He хотите ли вы сохранить изменения, сделанные в запросе За­прос 1?). Если вы соглашаетесь, система предложит назвать запрос. По умолчанию бу­дет предложено имя Query с каким-либо порядковым номером - в нашем случае, как показано на рис 9.6, это Queryl. Затем вы выходите в окно базы данных (см. рис. 9.7).

Page 154: Access 2000. Проектирование баз данных-OCR

150 Программирование на языке SQL

1 Show Table

Tables J Queries | Both |

ES OPER Filel MYM REGION REGION _D TIPCH5 UKRCHS Менеджер Назначение Приборы, представленные

Типы приборов Фирмы

на рынке2

• • •

»

Add

Close

Рис 9 3

Ы Microsoft Access - IQueryl: Select Query] [§l File Edit View Insert Query Tools Window Help

D c£ У , 5 • пл • rJ' ^ -^ • (3 . - IS lx f

• •

d J

У . Страны s_GUID A sjjneage

Страна Примечания _^

&• ! < Ъ Е А» - Cf V

T1

^

Рис 9 4

Перед вами та же БД, что была показана на рис. 7.17, только там открыта вклад­ка Tables (Таблицы), а на рис. 9.7 - вкладка Queries (Запросы). Дальше есть два варианта. Вы можете открыть запрос из окна базы данных или щелкнуть по кноп­ке { |. В обоих случаях произойдет запуск запроса, и на экране появится таблица (см. рис. 9.2).

Page 155: Access 2000. Проектирование баз данных-OCR

Запросы но выборку 151

Ы Microsoft Access File Edit V i e , In» it Cjuei^ Ton I; Window Help

шз D \3 У X 4n IB Ь - сю - й' °S -M - (*) -

г5 All й lis1 Queryl: Select Query шш

Страны s_GUID ~3 sjjneage Код Страна Примечания _^

1

Field Table

Sort Shov-1

riteria or

an LTpaHti

0

-1 1

Страна Страны

0

Прнм»=-чзнич Страны

0 •

— —

3

d

Рис 9 5

Microsoft Access

Do you want to save changes to the design of query 'Queryl'?

Cancel Yes No

Рис 9 6

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

CI в меню View (Вид) панели меню Microsoft Access активизировать опцию SQL View (Режим SQL);

Page 156: Access 2000. Проектирование баз данных-OCR

152 Программирование на языке SQL

j File Edit V ie* Incert Toole Window Help

Щ о р е п j ^ Design cflNew X Ее 7-"|:::Г YA

Create query in Design view Create query by using wizard

( 5 Query 1

# fffiWffif

1

i

Рис 9 7

а щелкнуть по стрелке прокрутки рядом с кнопкой • -1 на панели инстр\ ментов Microsoft Access, а затем снова выбрать SQL View.

Текст инструкции SQL приведен на рис. 9.8. Рассмотрим ее подробнее. Любой запрос в форме SQL состоит из нескольких ключевых слов и начинает

ся с команды SELECT. Она определяет возвращаемую информацию как набор запи сей и указывает, какие поля должны быть выбраны в ответ на запрос. Если пост SELECT нет других ключевых слов, то будут возвращены все записи. Следующп элементы строки, которая начинается ключевым словом SELECT, - это Код, Стран и Примечания. Они задают поля, включаемые в результат запроса.

Согласно синтаксическим правилам языка SQL, перед именем каждого поля указывается имя таблицы, которой принадлежит это поле. Названия таблицы и поля разделены точкой, а каждая пара значений (например, Страны.Код) отделяется от следующей пары запятой.

Ключевое слово FROM определяет таблицу, откуда производится выборка. В дан ном простейшем запросе используется одна таблица - Страны, не связанная с другп ми. Поэтому после FROM никаких ключевых полей нет.

Ключевой параметр WITH OWNER ACCESS OPTION не является обязательным. Он по зволяет пользователям, которым обычно не разрешается работать с базовыми таблицами, выполнить запрос и просмотреть его результаты - поля, включен ные в запрос Таким образом, пользователь получает право ограниченного досту­па к данным таблицы.

Page 157: Access 2000. Проектирование баз данных-OCR

Запросы на выборку 153 I Q Microsoft Access

iy File Edit View In;e i t Qnei / Tools Window Help

1 is1 Query 1 : Select Query

SELECT Страны Код, Страны Страна, Страны Примечания FROM Страны WITH OWNERACCESS OPTION,

1

H J n l x l

»

• _1пЫ _il

Рис 9 8

Запросы с использованием групповых операций Эта группа запросов предназначена для первичной обработки полученной ин­формации - ее суммирования, осреднения и т д. Такие запросы особенно полез­ны, когда нужно регулярно представлять обобщенные справки для руководства компании.

Еще один пример простого запроса: необходимо получить справку о том, сколь­ко человек погибло в результате различных аварий за два с лишним года - с нача­ла 1997 по март 1999 гг. Полная информация по этому вопросу аккумулирована в файле Es_oper. В каждой записи о конкретной аварии сведения о жертвах со­держатся в поле В том числе погибло.

Запрос, построенный таким образом, востребует данные только из одной таб­лицы - Es_oper.

Чтобы сконструировать этот запрос, сначала, как и в предыдущем примере, от­кройте окно базы данных. Затем задайте команды Create Query in Design view => Show Table (Создать запрос в режиме конструктора => Показать таблицу), как по­казано на рис. 9.3. В появившемся окне выберите опцию Esoper. На экране воз­никнет окно конструктора запроса (см. рис. 9.9). В макете таблицы Esoper на этом рисунке найдите интересующее вас поле В том числе погибло и щелкните по нему Дважды.

Итак, поле В том числе погибло зафиксировано в бланке запроса. Теперь по­думаем, как получить сумму значений этого поля по всем записям. Суммирова­ние - стандартная операция, и пользователю не надо специально организовы­вать сложение (хотя при большом желании вы можете сделать это). Для этого ^ожно использовать опцию Групповые операции. Щелкните по кнопке т\ на панели инструментов базы данных, и в бланке запроса появится дополнитель­ная строка Total (Итоги). (Обратите внимание, что на рис. 9.4 ее нет.) Если вы теперь щелкнете в строке Total на пересечении с полем В том числе погибло, то

Page 158: Access 2000. Проектирование баз данных-OCR

154 Программирование на языке SQL

Ы Microsoft Access I - 1 D | X | I File Edit Viev

j D \3 У IE - H

Insert Query Tools Window Help

& 4a !' r§] . °П г А"

{is1 Query! : Select Query ВЕЗ •

ES_OPER Пострадало E-cercclJ Б том числе рамем Рамено детей | Б том числе погиб Погибло детей _jj

LJJ 1

Field: Table: Total: Sort:

Show: Criteria:

or:

«1

Lh.

J Е: том чиспе погиб п ES OPER

^ ^ ^ ^ ^ ^ ^ ^ I

А>лЭ flin Мах —

Count StOev Var First .

П П

— —

±>r

1 • !

Рис. 9.9

появится стрелка прокрутки, которая позволяет открыть список групповых опе­раций:

• Group by - команда, включаемая в инструкцию SQL. Эта опция позволяе добиться того же результата, что и выполнение следующих действий: созда ние итогового запроса в окне запроса, а затем выбор для соответствующел поля групповой операции в строке Total (см. рис. 9.9);

• Sum - функция, выполняющая суммирование значений в поле; • Avg - операция, позволяющая вычислить среднее арифметическое набора

чисел, которые содержатся в указанном поле запроса; • Min - функция, возвращающая минимальное значение из набора значений

которые содержатся в указанном поле запроса; • Мах - функция, возвращающая максимальное значение из набора значении

которые содержатся в указанном поле запроса; • Count - операция, с помощью которой вычисляется количество записей

возвращаемых запросом; • StDev - функция, которая возвращает значение среднеквадратичного от­

клонения. Последнее вычисляется исходя из набора значений, содержащих­ся в указанном поле запроса;

Page 159: Access 2000. Проектирование баз данных-OCR

Запросы на выборку 155

• Var - функция, возвращающая значение дисперсии. Дисперсия вычисля­ется в соответствии с темп значениями, которые содержатся в указанном поле запроса;

j First - операция, возвращающая первое число из набора значений, которые содержатся в указанном поле запроса;

j Last - операция, возвращающая последнее число из набора значений, кото­рые содержатся в указанном поле запроса;

j Expression - функция, возвращающая результат выражения, которое содер­жится в указанном поле запроса;

• Where - функция, которая определяет, какие записи из таблиц, перечислен­ных в предложении FROM, следует включить в результат выполнения инструкций SELECT, UPDATE или DELETE.

Из приведенного списка вы, конечно, выберете Sum, так как вас интересует (если вы еще об этом не забыли) суммарное количество погибших. Активизиро­вав соответствующую опцию (см. рис. 9.9), закройте окно конструктора запроса [I сохраните изменения (см. рис. 9.6). Теперь следует назвать новый запрос или согласиться с именем, предлагаемым по умолчанию (ято, конечно же, Query с по­рядковым номером, - в данном случае Query 2). Под полученным именем новый запрос будет «прописан» в окне базы данных. Если вас такой вариант не устран­яет, вы можете воспользоваться кнопкой j j . Если вы теперь откроете этот зап­рос, то получите ответ, представленный на рис. 9.10. Здесь указано имя функции (Sum of), имя активного поля (В том числе погибло) и количество погибших за весь период (4008 человек).

| В Microsoft Access H E I D I File Edit View Insert Format

Records Tooh Window Help

His1 Query2 : Select Query B E I E 3 |

• LI

SumOIB том числе погибло | 400:3

1

Рис. 9.10

Уже показанным раньше способом перейдем к инструкции SQL (см. рис. 9.11). По сравнению с инструкцией SQL, изображенной на рис. 9.8, здесь появилось

Два новых элемента - AS [SurnOf В том числе погибло] и GROUP BY ES_0PER [В том числе погибло]. Смысл первого из них состоит в следующем. В Microsoft Access имена полей (здесь - поле В том числе погибло), указанные в режиме SQL окна запроса, используются в режиме таблицы в качестве заголовков столбцов. Чтобы вывести в режиме таблицы другие имена столбцов (в нашем примере - SumOf В том числе

Page 160: Access 2000. Проектирование баз данных-OCR

156 Программирование на языке SQL

Ш Microsoft Access пшш | File Edit Viev

[га - и

Insert Query Tools Window Help

в1 Query2 : Select Query ШЗ ELECT E'j_OPER.[B топ числе погибло], Sum(E3_OPER.[6 том числе погибло]) AS [SurnOfB том числе погибло] FROM ES_OPER GROUP BY ES_OPER,[B том числе погибло] WITH OWNERACCESS OPTION;

1

J

Рис. 9.11

погибло), следует включить в инструкцию SQL зарезервированное слово AS. Это бывает необходимо, если вы используете статистические функции в запросах, ко­торые возвращают слишком сложные или повторяющиеся имена полей.

Таким образом, рядом с исходным полем В том числе погибло появляется новое иоле суммы - SumOf В том числе погибло, поэтому и требуется добавить ключевое слово AS. Что касается квадратных скобок, в которые заключены имена полей в ин­струкции SQL, то здесь вы имеете дело со спецификой синтаксиса Access. Если имя поля не содержит пробелов, Access автоматически помещает название в квадратные скобки, а если содержит, то может и не поставить их. Поэтому советуем на всякий случай всегда делать это (окружать имена полей квадратными скобками).

Смысл второго ключевого параметра - GROUP BY ES_0PER. [В том числе погибло] -состоит в том, чтобы фиксировать необходимость ввода групповой операции по полю ES OPER.[B том числе погибло]

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

Запросы, в которых критерием является полное значение поля Начнем с самого простого условия. Допустим, необходимо узнать, какие фирм из общего числа предприятий, включенных в банк данных, работают в России. В> фирмы перечислены в таблице Фирмы, и поиск по запросу будет проводиться в ее пределах (пока вы создаем только простые запросы, то есть те, что отбирают данные из одной таблицы). Как открыть окно конструктора запроса и включить в бланк конструктора нужную таблицу, вы уже знаете. Поэтому начнем сразу с от­крытого бланка (см. рис. 9.12).

В данном примере нас будут интересовать три поля: Код страны, Название фирмы и Адрес. Введите их названия в бланк запроса, как вы уже делали это раныпс-

Page 161: Access 2000. Проектирование баз данных-OCR

Запросы на выборку 157

Кодфц*ы Название фир Код страны Адрес j j

I ,. i

Код страны Фирмы

0

Название фирмы Фирмы

0

Адрес Фирмы

0 "06"

< 1 1

— —

•г

Рис. 9.12

Чтобы отобрать именно российские фирмы, воспользуйтесь новым элементом -критерием. Он вводится в строке бланка, которая так и называется - Criteria (Ус­ловие отбора). В нашем случае критерий следует указать в единственном поле таблицы Фирмы, связанном со страной - Код страны. Здесь вы вводите код Рос­сии - 06 (см. рис. 9.12). Ясно, что это не самый удобный путь: придется или запо­минать коды разных стран, или тратить время на поиски в специальном справоч­нике. Проще будет расширить запрос, включив в него две или более таблицы. Мы обсудим такой вариант чуть позже, а сейчас обратим внимание на один существен­ный момент. Как вы заметили, в поле бланка запроса Criteria значение кода за­ключено в прямые кавычки - "06". Когда вы задаете в Access какое-либо символь­ное выражение в качестве фильтра, условия, критерия и т.д. и приводите это значение полностью, Access 2000 поставит кавычки автоматически.

Заполнив бланк запроса, закройте окно конструктора. Когда вы подтвердите выполненные действия (см. рис. 9.6), запрос будет включен во вкладку Query окна базы данных. Если вы теперь откроете этот запрос, на экране появится таб­лица, показанная на рис. 9.13. В ней перечислены 8 фирм, отобранных по при­знаку страны.

Теперь посмотрим, как выглядит инструкция SQL для нашего запроса (см. рис. 9.14). В предыдущих примерах вы переходили в окно SQL из окна конструктора запроса. Здесь такая возможность сохраняется, но проделать этот переход так же Просто и из результирующей таблицы вида (см. рис. 9.13). Сначала щелкните правой

Page 162: Access 2000. Проектирование баз данных-OCR

158 Программирование на языке SC

В Microsoft Access File Edit View Insert Format PPC

• Й У # El v'-M - H J Q ?

j fds X°oU Window Help

' • S l - i 0 - ' nS-^l Si 5J ^ Yn

is1 Query3 : Select Query Код страны Название фириы Адрес

ОАО "Цвет" Нефть-Газ-Наука НПП "ЭКОНИКС" ЭКОХЕЛП ИНСТРУМЕНТС АО "ЭКРОС" Петербургский институт ядерной физики РАН ОКБ ТЕСТ фирмы "Аналитические приборы" ГЕОХИ РАН

одской г,Сп С06000 Дзержинск Ннжегор.: Москьа 117071 Москва Москва 199106 Санкт-Петербург 188350 Ленинградская обл г Гатчина, Or,, ч

198103 г Санкт-Петербург, Рижский пр 2[

R.eoid " I • II 7 ' | " | " | <,< В

~3

Рис. 913

гшъ Ы Microsoft Access i File Edit View Insert Query Tools Window Help

is1 QueryS : Select Query SELECT Фирмы,[Код страны], фирмы.[Название фирмы], Фирмы.Адрес FROM Фирмы WHERE (((Фирмы.[Код страны])="06")) WITH OWNERACCES5 OPTION;

d J"

Рис. 9.14

кнопкой мыши в строке имени указанно)') таблицы. Затем в появившемся к текстном меню выберите, как и раньше, опцию SQL View (Режим SQL).

Наряду с теми ключевыми словами, которые вам уже знакомы, здесь вы ви­дите новое - WHERE с сопутствующими ему параметрами. Это слово - ва шее в базе данных, когда речь идет об отборе информации. Поэтому пара WHERE соответствуют критерию, который вы раньше ввели в бланк запроса. -WHERE не является обязательным, однако если оно присутствует, то должн довать после FROM. Если не задавать условие WHERE, запрос возвратит все таблицы.

Page 163: Access 2000. Проектирование баз данных-OCR

Золросы на выборку 159

осы в которых критерием является неполное значение поля • • южним условие, которое нужно задать в запросе. В таблице Filel собра-Теперь>'<--' ' " , . ^ г - гг

на тересУ ствня

:прс видах нефтепроводов, а не только на магистрал не

омаШ'Я обо всех авариях, случившихся в 1995 году. Предположим, нас нн-"Н т ппшь аварии на нефтепроводах. Конечно, можно отобрать те происше-

что по классификации БД отнесены к группе Аварии на магистральных лТ проводах (иоле Наименование ЧС). Однако нам нужны данные об авариях

ч видах нефтепроводов, а не только на магистральных. F ть пптой вариант: отбирать записи, у которых в иоле Характеристика ЧЭС

инакмся нефтепроводы. Но это слово может находиться в различном кон-. те попользоваться в разных падежах и т.д. В качестве критерия в запросе сле-

задать корневую часть слова, которая остается неизменной: в данном случае «нефтепровод». (Если бы нас интересовали, например, аварии при добыче и транс-оотнровкс нефти, то пришлось бы учитывать понятия «нефтепромысел», «нефте-

тобыча» и другие. Тогда в запросе фигурировал бы критерий «пефте».) Итак, вне­сем слово «нефтепровод» в знакомую строку бланка запроса - Criteria (см. рис. 9.15). Обратите внимание на синтаксическое оформление критерия. В отличие от пре­дыдущего примера, здесь использован фрагмент текста, то есть часть поля. Поэто-47 нам понадобятся, кроме прямых кавычек, еще и звездочки. Критерий будет оформлен так: "«нефтепровод*" (см. рис. 9.15). К символьной последовательности, помещенной в звездочки, Access 2000 всегда добавляет слово Like (Подобно). Та­ким образом задается команда на поиск записей, содержащих подобную подстро­ку. Как уже говорилось, кавычки вы можете и не ставить: Access 2000 не забудет

шш Ы Microsoft Access ! File Ed,t Vie*" Inneit Query Tools Window Help

; • ; У Щ о g - J °п 2 д | | " " „ [ft -Л © - ^ -

Filel

Бидь Наин Дата

ЧГ =J еновани* ЧС

БренчЧС zi bJj

Field: Table: Sort:

Show; Criteria

or.

ОаШ 1

J Пострадало

Ш _ _ _ _ _ _ . — 0

Погибло Filel

0

Характеристика Ч-Filel

0 J.ike """нефтепровод*"

.i

Материальный уще Filel

0

Мате—

*т -

^

3

Рис. 9.15

Page 164: Access 2000. Проектирование баз данных-OCR

160 Программирование но языке SQi

сделать это за вас. А вот звездочки - исключительно ваша забота. Если ко часть слова, которая используется в качестве критерия, находится на лей " ^ правой границе поля, то с этой стороны звездочку можно опустить. Н0 к ""'"' вило, вам неизвестно точное расположение критерия. Поэтому звездочки '^ ставить всегда

В случае, который мы сейчас рассматриваем, в запрос включены все по­лней. Это можно сделать двумя способами. Первый путь: введите в бланк з-ля за-

аПро са каждое иоле по отдельности, как вы делали раньше. Второй вариант- ввет в бланк все поля сразу. Открыв пустое окно запроса, дважды щелкните МЫШЬю по строке имени таблицы на ее макете, чтобы выделить в нем все поля таблщ Затем установите указатель мыши в выделенной области и нажмите левую кип ку мыши. Не отпуская ее, перетащите стрелку указателя в строку Field первогг столбца в бланке запроса. Теперь отпустите кнопку, и все поля записи будут вве. дены в бланк.

Отдайте команду на выполнение созданного запроса (как это сделать, уже обсуждалось). В результате вы получите перечень аварий на нефтепроводах (см. рис. 9.16).

Теперь посмотрим, как будет выглядеть в данном примере инструкция SQL. приведенная па рис. 9.17.

Ы Microsoft Access File Edit View Insert Format Records Tools VV

D e; у a a v-id - у # a ^ is1 Query4 : Select Query

Re

Виды ЧС | На и мв но вэ н HI| 10109 Аварии на мап 10109 Аварии на мап 10109 Авария на мап 10109 Авария на npoi 10109 Авария на мап 10109 Авария на мап 10109 Авария на мап 10109 Авария на мап 10109 Авария на мап 10109 Порыв нефтеп^ 10109 Авария на мап 10109 Авария на мап 10109 Авария на мап 10202 Возгорание ем 10202 Порыв и пожар 10109 Порыв нефтепр

cord и | ' 11 1 > I и |»» | of

ь-ndow Help

ал - • *S -& - LTJ „

, , _ 1.

Дата ЧЭС | 01/24/1995 01/24/1995 03/18/1995 03/20/1995 04/06/1995 04/13/1995 04/20/1995 04/25/1995 04/25/1995 06/25/1995 06/13/1995 07/17/1995 12/14/1995 06/16/1995 02/11/1995 12/22/1995

18

висни Время ЧЭС |Дэта сообщения Время (^

00.00 01/25/1995 00.00 01/26/1995 00 00 03/18/1995 00 00 03/21/1995 00.00 04/07/1995 00 00 04/16/1995 00 00 04/25/1995 J

00 00 04/26/1995 10 30 04/29/1995 00 17 00.00 06/14/1995 03.15 07/17/1995 04.30 12/16/1995

12/30/1899 J 12/30/1899 12/30/1899 J

Рис. 9.16

Page 165: Access 2000. Проектирование баз данных-OCR

на выборку

Fl|el.[KMHai

^ Ф У и [ЬияыЧС], File 1.[Наименование ЧС], File 1.[Дата ЧС], File 1.[Время ЧС], File 1.[Дата сообщения], __\ - i l , r -^ гопбщения] , File 1. [Код республики], File I .[Наименование республики], Filel .[Код области], __\ * ' n r i населенного пункта], File 1.[Название области], Filel.[Название района], File 1.[Название

пиквндации пос.

WHEREf((Filel.[Характеристика ЧЭС]) Like " 'нефтепровод* ^ITHOWNEF ACCESS OPTION;

I d Рис. 9.17

Как видите, по своей структуре, то есть по составу ключевых параметров, эта инструкция совпадает с предыдущей. Разница лишь в том, что предложение с ключе­вым словом SELECT включает не одно, как в предшествующем случае, а все поля записи. Синтаксические правила записи каждого отдельного поля, естественно, ;;с изменяются.

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

Запросы с несколькими критериями отбора, заданными в разных полях Сформулируем новый запрос так: «По информации, собранной в таблице Filel, выдать справку об авариях на нефтепроводах Тюменской области».

UKHO конструктора для этого запроса показано на рис. 9.18. Как видите, здесь зада-i два критерия: прежний - "«нефтепровод»", дополнительный - "Тюменская область". • ово «область» можно было и не вводить: название Тюменская уникально и само

е°е служит достаточным критерием.) Новый критерий тоже надо заключить • ЭДочки. Результатом выполнения запроса будет таблица, выведенная на рис. 9.19.

Р<>тите внимание, что в предыдущем примере, где не указывался конкретный 1*Г110Ц, '

'Чтилось оыло отобрано 18 записей. Теперь, как и следовало ожидать, их число со-

записей только 8. Рь изучим соответствующую инструкцию SQL (см. рис. 9.20). Как видно

че - ИКа' введение нового критерия отбора влияет только на предложение с клю-Т],п л о в°м WHERE. К этому предложению добавляется логическое выражение B()f

( И ) ' операндами которого являются "«нефтепровод*" и "Тюменская область".

•ном инструкция SQL остается неизменной. ~ 1 1 9

Page 166: Access 2000. Проектирование баз данных-OCR

162 Программирование на яэы,Р ?$0

FIIP £dit View Insert Query Tools Window Hp|p

i? Query4 : Select Query

FUel

ВИЛЫ ЧС

Н.зиисиое^мИ! Д«таЧС Время ЧС _-j

J U

Field Tabic Sort

Show Criteria

or

Название области Filel

0

Наэеэние г. эипна Filel

0 Тюменская область

Н^Еание смгекта Filel

0

Код ведомства Fllel

0

.1

Рис 9 IS

^ИДЩ*р:

Характеристика Ч Filel

Н

Jj

й е Г — q —1 pr

Like "нефтепровод*

.

У Microsoft Access Fie Edit View Insert F j m

• G? H § й ^ ^ - у § a ?

r FV u i d i l o o l s Wniduvt Help

ъ • ас • » s a - e j . £1 51 v ; Ъ *4 »- * © -a • (?).

IFP is1 Query4 : Select Query

ТГ R«

Виды ЧС | Наименован^ 10109 Авария на мап 10109 Авария на мап 10109 Авария на мап 10109 Авария на мап 10109 Порыв нвфтепг 10109 Авария на мап 10109 Авария на мап 10202 Порыв и пожар

coid н | 4 1 6 » 1 »i |»»| or

Дата ЧЭС | 04/06/1995 04/20/1995 04/25/1995 04/25/1995 06/25/1995 07/17/1995 12/14/1995 02/11/1995

в

Врамя ЧЭС |Дата 00 00 00 00 00 00 10 30 00 17 03 15 04 30

<l

сообщения! Врв 04/07/1995 04/25/1995 04/26/1995 04/29/1995

07/17/1995 12/16/1995 12/30/1899

_|

мя сообщеннл| Код распухли Н

00 00 00 00 00 00 00 00 00 00

[ 00 00 00 00

_. - 1

1 р

, к 1 И

^ I г

-' ••

V Рис 9 19

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

Page 167: Access 2000. Проектирование баз данных-OCR

Зопросы на выборку 163

^ p j ) e l [наименование ЧС]( Filel [Дата ЧС], File) [Время ЧС], Filel [Дата сообщения], File 1 [Бремя сообщения], Щ j Filel [ЕиДЬ'"1^1 р,|ё| [наименование республики], Filel [Код области], Filel [Код населенного пункта], Filel [Название области], _J ..од р«:пус г111^ *•, F | j e l [название объекта], FiJel [Код ведомства], File! [Название ведомства], Filel Пострадало, Filel Погибло,

ЛЕО

=jel [^36Эние ^ t ' ^ H B C ] , FMel [Материальный ущерб (колнч)] Filel [Материальный ущерб (натур)], Filel Последствия, :|el [характерис и д и м ф ^ р м а ц и я ] | p,|ei [Необходимая помощь] Filel [Работа по ликвидации последствий] Filel Абонент, Filel [Ki * ' 1А

т^Т<е7поДписаЛ, Filel [Название города]

sdOWrtel г н , ] вание области])» Тюменская область") AND «Filel [Характеристика ЧЭС]) 1*«''нефтепровод* )) Щ К « 5 5 OPTION,

J - I

Рис 9 20

Предположим, пользователя интересуют аварии не только на нефтепроводах, юесть при транспортировке самой нефти, но и шире - при транспортировке раз-1ПЧНЫХ нефтепродуктов: бензина, мазута, газового конденсата и др. Как выбрать в таком сучае критерий отбора? Можно просто ввести в иоле подстроку «про­вод», поскольку этот корень входит во многие слова, связанные с нашей темой: нефтепровод, бензопровод и т.д. Но тогда в выборку неизбежно попадут аварии на газопроводах (которых тоже немало), что не входит в наши планы. Итак, нам неизбежно придется задавать несколько критериев отбора для одного и того же паля записи п связывать их определенными логическими соотношениями. Пока­жем на конкретном примере, как это делается.

Предположим, надо получить справку об авариях, которые произошли: 3 на нефтепроводах, 3 на мазутопроводах; Э на бензопроводах; Э на продуктопроводах. 'Ibi предусмотрели практически все виды нефтепродуктов. Теперь построим

°ответствующий запрос. ак °°ыч1[о, сначала откройте пустой бланк запроса и введите туда все поля

11 (последнее делать не обязательно - любые поля можно вносить в бланк тдетьности). Критерий отбора сформулируйте так:

епровод OR «бензопровод* OR *мазутопровод* OR *продуктопровод* че говоря, вы выстраиваете логическую схему «ИЛИ». Теперь посмотрим,

1ы Реализуется на практике. с ок'но конструктора запроса для таблицы Filel. Как и раньше, введите

r ^ первого критерия: «нефтепровод* - в строку Criteria на ее пересечении ,т ' 1 0 м Характеристика ЧЭС. Следующие значения критериев вводятся

столбце, но в строках, расположенных ниже по вертикали. Каждая из

Page 168: Access 2000. Проектирование баз данных-OCR

164 Программирование на языке '

них помечена словом OR (Или), как показано на рис. 9.21. Количество таь-. практически не ограничено, поэтому составной критерии может включап

ДОГ]

вы Пс точно большое количество операндов. Запустив запрос на выполнение чите таблицу (см. рис. 9.22). Обратите внимание, что она похожа на резулГ '"Л

щую таблицу, представленную на рис. 9.16, когда вы сформировали запрос с критерием. Однако в новой таблице отобрано уже не 18 записей, а 21, и спел ' рийных объектов назван, в частности, бензопровод. '<Е

EJ Microsoft Access File Edit View Insert Query Tools Window Help

Гп -!H aa- C? °S •& - (3 .

'1 g - ! ° n l All fi\:> ©-а- д .

1

i? QueryS : Select Query

IU

FUel

Виды ЧС Наименоеанш ДатаЧС Бремя ЧС _J

Field. Table.

5ort: Show:

Criteria: or:

Нагеание ведомсте Filel

0

.!.!

Пострадапо File 1

0

Погиб по Filel

0

Харэктеристиг а Ч г " ' Filel

0

Патер Filel

lihe """нефтепровод*" J.if-£ '""бензопровод*" Lih<е- "*мазутопроеод*" О е " 'продуктопровод*

.1

^ ^ ^ ™ ^ ^ ™

lantHtin ущ*

0

"•^"•Ч-^Т*]

f f 1этери.зпьнь • дг-Filel

0

1 1

4 -1

Рис. 9.21

HI He

Наконец, открыв инструкцию SQL (см. рис. 9.23), вы можете лишний р:т°е ' диться: все изменения, которые внесены вами в логические схемы критериев, точ но отображаются в предложении с ключевым параметром WHERE.

Надо сказать, что структуры критериев бывают самыми разнообразны \ при их построении вам потребуются точность и аккуратность, чтобы отбор '•' сей производился правильно. Например, у критериев, выведенных на pHL

неизменяемая часть слова - "*опровод*". Исключением является лишь *нет вод*". Казалось бы, можно сократить условие в той его части, где вводятся кр рии. Чтобы при этом исключить записи, связанные с авариями на газопр сформулируем условие следующим образом:

("•нефтепровод*" OR "*опровод*") AND Not "«газопровод*"

Если вы введете такое условие в запрос, а затем выполните его, то действительно отберет записи, удовлетворяющие заданному критери • ко в их число попадут и сведения об авариях, связанных с повреждени • провода или электропроводки. Поэтому учтите, что похвальное стр

Page 169: Access 2000. Проектирование баз данных-OCR

3anp°Cbi на выборку 65

Ы> I n ^ t t Fgi mat Ptcorcte Tools Window (Help

•&•' ® .

ME Название обл| Названия района | Нззазимо об-ь| Код цдомств| Нзгвзиив_

1175DJ3J 11250540

1171044J 11870250 11710200 11710200

11710300 11670250 11710250 11710250

Mil

Коми ССР Коми ССР Челябинская о Иркутская обл; Республика Бг Тюменская OEJ Республика Ко Тюменская OBJ Тюменская об/ Тюменская O6J Тюменская O6J Республика Ко Тюменская об; Тюменская O6J Кемеровская о ^J of 21

31 км Возей - Головные Усинский район г Миасс (85 км юго-заг Тулунский район, г Ту/ Туймэзинский р-н, д Я г Уран (330 км северн* Усинский район, 130 кк, Еатинское месторожде Нижневартовский р-он Нижневартовский paiioi г Нягань (525 км сев г Усинский район, 100 ки< 15 км сев г Нижневар г Нижневартовск 3 км севернее г Анжер<

нефтепровод нефтепровод бензопровод нефтепровод промысловыйi нефтепровод нефтепровод нефтепровод нефтепровод д напорный нефп нефтепровод нефтепровод нефтепровод нефтепровод нефтепровод (

О 102211 108100 706411 706411 706411 102211 706411 706411 363100 706411 706411 700411

40 О

Корпораць Департам< Минтоп зн* МИНТОПЗН' Минтопэни Корпорац1 МиНТОПЭН! Минтолэн* АО "Рост Минтопэн* Минтопэж Минтопэн( акционерн

^

Рис. 9.22

Ш Microsoft Access

File Edi-

• • E

ndow Help

g l . - Ёг

мы

в -a • L-j. ? QaeryS: Select Query In lx -UECT Filel [EiutiHC], Filel [Наименование ЧС], Filel.[Дата ЧС], File 1.[Бремя ЧС], Filel.[Дата сообщения], Filel [Бремя

|Р!ЬГ Н М Я ^ F l 'el ^Кол РеспУ^1ЛИКИ]» Filel .[Наименование республики], Filel .[Код области], Filel .[Код населенного пункта], =£! п? 6 3 " 1 * ос™сти], Filel.[Название района], Filel .[Нагванме объекта], Filel .[Код ведомства], Filel [Название ведомства], ^ -1 Пострадало, Filel.Погибло, Filel.[Характеристика ЧЭС], Filel,[Материальный ущерб (колич)], Filel [Материальный ущерб \rr Fl'e1-Последствия, Filel.[Дополнительная информация], Filel.[Необходимая помощь], Filel.[Работа по ликеидаиии 'ROMN™" ' F ' l e l 'A6°hKHT< F l l e l • [ К о д абонента], Filel .Подписал, Filel .[Название города]

**№№'el.[Характеристика ЧЭС]) Like "'нефтепровод*")) OP. (((Filel.[Характеристика ЧЭС]) Like "-бензопровод*")) OR m « S * T e p " C T * a 4 3 C D L l t e ""мазутопровод*")) OR (((Filel .[Характеристика ЧЭС]) Like "*продуктопроеод*")) I nuv™ERACCE5S OPTION;

Л Рис. 9.23

V ткосщ и упрощению критериев запроса иногда приводит к нежелательным "бедствиям.

3а"Рось/ с параметрами ;,;ц ' ' Д л я получения какой-либо справки приходится неоднократно вводить \1ЙГП

Ые значения одного и того же параметра. Такая справка называется пара-'"> со' Скои- Например, на практике сведения об авариях на нефтепроводах обыч-

I ткутся по субъектам Федерации - краям и областям. Для подобных случаев

Page 170: Access 2000. Проектирование баз данных-OCR

166 Программирование на языке SOl

полезно иметь готовый типовой запрос: вы вводите в стандартное поле н-края или области, а в результате выполнения запроса получаете справку сг а""е

ного вида. Такой запрос несложно построить. ' Рт" Откройте запрос, который был сохранен под именем Query4 (см piir q

В столбец Название области вместо значения Тюменская область поместит сказку [Введите область] (см. рис. 9.24). Если теперь вы отдадите команд * выполнение запроса (с помощью кнопки j j пли предварительно сохрани '' в окне базы данных), то Access 2000 потреоует сначала указать название обла или края в диалоговом окне Enter Parameter Value (Введите значение папак ра). Этот этап работы продемонстрирован на рис. 9.25. Вам следует ввести пол! географическое наименование, а затем щелкнуть по кнопке ОК. Запрос будет вп полнен для заданного региона. Например, вы вводите значение Тюменская об­ласть и получаете таблицу, которую уже видели на рис. 9.19. Понятно, что точно так же можно задать любой другой критерий. Как видите, типовой запрос опера­тивен и удобен в использовании.

Ы Microsoft Access j l File Edit view Insert nuety Toul=. W» ulu ' Help

' | C - H - gi . • <t, г AH - й ' © - Й - \1), : Select Query

Filel

ЕмдыЧС — Нэименог?ани< Дата ЧС ЕрсмяЧС _-J

На-.Еание области Название района 1На:-Еание объекта |Код ЕЁДОПСТЕЗ

0 И

Ffcl Fill

0 [Введите область]

_ L Ы

ХарактеристикаЧ: М а т е р и и

0

3 Like ""нефтепровод*"

Рис. 9.24

Enter Parameter Value Введите область

OK Cancel

Рис 9.25

Page 171: Access 2000. Проектирование баз данных-OCR

выборку 167

q ос Показана инструкция SQL для такого запроса. Вы можете вновь На Рпс- чго соответствующие изменения уже включены в предложение с клю

чевым пар .бедить л'сд" чметром WHERE. В данном случае в этом предложении применяется логи-

•ема «И», которая содержит в качестве операндов и "«нефтепровод»', и при­веден^ критерия-

к'ТЯ CXe i 1 ^ ' ^ ' '

' -ю выше подсказку. Иными словами, Access воспринимает ее как значение

tM v e * 1гье,г 2'«У I" ' I Window Help ши

гз . тГс|1| ГЁНДС|Ч ] FilH [Наименование ЧС], Filel.[Дата ЧС], File 1 [Бремя ЧС], File] [Дата сообщения], Filet [бремя сообщения], Filel ~^~(\!*#у\1 Filcl [Наимен:ЕзНие республики], Fi lel.[Код области], File] [Код населенного пункта], Frlel [Название области], Filel [Назвг

ре1:пу 1 f-jgj [Кззеэнне объекта], Filel [Код ведомства], Filel [Название еедомства], Filel Пострадало, Filel Погибло, Filel [Характерист ^t-Tpiiel [Матерпэпьный ущерб (колич)], Filel (Материальный ущерб (натур)], Filel.Последстеия, Filel [Дополнительная информация], -

-if\ [необходимая помощь], Filel [Работа по ликвидации последствий], Filel Абонент, Filel [Код абонента], Filel .Подписал, Filel .{Наэвак--орода]

WHERE (((Filel [Н^Еоние области])=[Бведнте область]) AND ((Filel [Характеристика ЧЭСр Like ""нефтепровод*"))! AITHCWNERACCES5 OPTION,

,1 _ _ I А Рис 9.26

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

Для начала вернемся к уже рассмотренному примеру, когда вы создали запрос а выборку российских фирм из одной таблицы - Фирмы, а в качестве критерия ипользовали код России - 06" (см. рис. 9.12). Попробуем сформулировать этот *е запрос более естественным образом, задав условием отбора название страны -Россия.

Откройте окно конструктора запроса и введите туда две таблицы: Фирмы и Стра­ны Как п раньше, вы используете таблицу Show Table (Показать таблицу), но Г|-'перь по очереди выбираете из нее две или более таблицы (см. рис. 9.3). Вы сно-

Указываете в таблице Фирмы поле Название фирмы, а в таблице Страны -трана; однако в ячейке Criteria (Условие отбора) столбца Страна вводите

рни Россия (см. рис. 9.27). Отправив запрос на выполнение, вы получите ЧУ, содержащую отобранные сведения (см. рис. 9.28). Она похожа на табли-

V с 9.13, но вместо кода содержит название страны. - вы теперь откроете инструкцию SQL, то увидите в ней новый элемент, ко-

• ;з ; азьшает на связь между таблицами Фирмы и Страны. Это ключевое слово ' vm и п ерация INNER JOIN доступна в любом предложении FROM и позволяет ,Я1

, т ь с а мое простое связывание - объединить записи двух таблиц, если их ',Ъе

1е П о л я содержат одинаковые значения. При этом INNER JOIN определяет '"' им' МЬ'е та^лиЦЫ, а другое ключевое слово ON - объединяемые поля, кото-

К)т одинаковые значения.

iM

Page 172: Access 2000. Проектирование баз данных-OCR

168 Программирование на языке SQL

Q Microsoft Access j File Edit View Insert Query Tool : Window Help

[ D t * @ . «L • oil • G? *g -a • C?j .' | П - H g i - ! ° n z AII - rj? \ © -a - СЭ .

i ? QueryS : Select Query

Фирмы

Кодфц*** Издание фир Код страны Адрес _ J

ssT

Страны 5 GUID -^J s_Lmeage Код

Яг5ЯИИ Примечания _J

Ш _tT

Field: Table: 5ort:

Show; Criteria;

or:

НЗЗЕ эмие фирмы Фирмы

и

«i i

Страна Страны

0 "Россия" • • D

-1

•г ы if

Рис. 9.27

1 В Microsoft Access File Edit View insert Format Records Tools '

D cs В a a v; es ь м- s § Й У ш

lis1 QueryS : Select Query

* « 1

Название фирмы pAO "Цвет" Нефть-Газ-Наука НПП "ЭКОНМКС" ЭКОХЕЛП ИНСТРУМЕНТС АО "ЭКРОС" Петербургский институт ядерной физики РАН ОКБ ТЕСТ фирмы "Аналитические приборы" ГЕОХИ РАН

1

^Window Help

- °§-м~ Z-I1\ ъ

| Страна Россия Россия Россия Россия Россия Россия Россия Россия

п|х|

»

©V ^ ^

1

л Рис. 9.28

Теперь попробуем усложнить задачу и сформировать универсальный запрос Предположим, вы постоянно работаете с той частью объединенного банка данных, которая включает сведения о контрольно-измерительных приборах. Иначе гово­ря, вы имеете дело с базой данных Контрольно-измерительные приборы. ВзМ

Page 173: Access 2000. Проектирование баз данных-OCR

Запросы но выборку 169

IШ Microsoft Access ! File Edit View Insert Query Tools Window Help

i И • H S - ! • -is1 QueryS : Select Query 3.ELECT Фирмы.[Ha:-.E.dHhe фирмы]. Страны.Страна FROM Страны INNER JOIN Фирмы ON Страны.Код = Фирмы.[Код страны]" WHERE (((Страны.Страна)="Россия")) WITH OWNERACCE5S OPTION;

Рис. 9.29

приходится создавать запросы, очень разнообразные по своему построению. Од­нако вам некогда вникать в структуру таблиц и связей между ними, а также раз­бираться в том, какие таблицы нужны для подготовки ответа на какой-либо запрос. Необходимо более простое решение. Конечно, можно построить запрос с параметрами, но есть и другой путь. Он не противоречит первому варианту, d скорее дополняет его.

Введите в окно конструктора все таблицы базы данных Контрольно-измери­тельные приборы со всеми их связями (см. рис. 1.11). (Позднее дело дойдет и до других БД в составе объединенного банка данных.) Ничего не изменяя в ее струк­туре, будем в бланке запроса формировать запросы различных типов.

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

(Отметим, что не все таблицы будут привлекаться в конкретных запросах.) На рис. 9.31 выведена результирующая выборка записей, полученная в ответ на ваш запрос.

Предположим, теперь пользователь интересуется другой проблемой: каки­ми приборами для измерения кислотности занимается менеджер по фамилии Флеминг. На рис. 9.32 показан заполненный бланк соответствующего запроса. Вы видите, что здесь в разных столбцах введено два условия отбора: "*кислотн«" и Флеминг". В то же время перечень таблиц и схема связей между ними остаются неизменными. Результат выполнения этого запроса приведен на рис. 9.33. Ото­браны сведения лишь о тех приборах для измерения кислотности, которыми ве-Дает менеджер Флеминг.

Пояснения к инструкции SQL Теперь более подробно исследуем инструкцию SQL, приведенную на рис. 9.34. Мы "есколько раз усложняли структуру запроса, поэтому и инструкция нуждается b определенном комментарии.

Page 174: Access 2000. Проектирование баз данных-OCR

170 Программирование на языке SQL

Ы Microsoft Access File Edit V iew Inser t Quel у T o o l ; W indow Help

w All „ й" \ © ^

i? Queryfi : Select Query

Назначение £._Gerieration _ l l •-_GUID •.Jjneagi Код Назначение _ J

J Приборы, . Номер моделг-lJ Категория Примечание! —' Примечание2 Год по KaiancjJ

Ф1фМЫ

Типы при... 5 GUID s j jneoge Код т т а Тип Примечания

4 1 £

Страны

йеп_Примеча! 5_Generation 5_GUID s_Lineage _^J

Кодфц»ы _d Название фис Код страны Адрес Адрес 2 _ J

J Менеджер *. Номер Кид фирмы Ф НИИЛИЯ

Имя

*

—I d

Field. Table

Suit Show

Cntena or:

Назначение Назначение

0

. I I

Тип Типы приборов

0

Номер модели Приборы, предстае

0 • •

Рис 930

В предложении с ключевым словом SELECT содержится перечень используемых в запросе таблиц и их полей, как уже говорилось, группы (Имя таблицы Имя поля) разделяются между собой запятыми, а внутри группы имя таблицы отделяется от имени поля точкой. Если в имени есть пробел, оно заключается в квадратные скоб­ки. Параметр SELECT имеет следующий синтаксис:

SELECT [предикат] { * | таблица « | [таблица ]поле_1

[AS псевдоним_1] [, [таблица ]поле_2 [AS псевдоним_2] [, ] ] }

FROM выражение [, ] [ IN внешняя База Данных]

[WHERE ]

[GROUP BY ]

[HAVING ] [ORDER BY ]

[WITH OWNERACCESS OPTION]

Ниже перечислены аргументы ключевого слова SELECT: • предикат. Задается один из следующих предикатов отбора:

- ALL;

- DISTINCT;

Page 175: Access 2000. Проектирование баз данных-OCR

Запросы но выборку 171

В Microsoft Access File Edit \Vvv Ii-ce/t Fur mat R^co/di

D C& В & Ei ЧУ

ЖШ l ook Window H?lp

О-П '

5 1 J J ;,a -41 - О .

аБЕЗШЕНЕЯЗЯ Гт Назначение Тип Номер мода пи HU н-.-иение н* у, а'лни Н-значение не указано Н-лначение не указано 11 морение солености проводимости и температуры воды H-i значение не указано И пррение содержания хлоридов аммония, нитратов, Hmpt (1 морение параметров грунтовых вод И пррение мутности м температуры Одновременное изменение растворенного кислорода соле»-И мерение содержания кислорода И мерение растворенного кислорода, температуры провоД1 Д пговременный мониторинг растеоренного кислорода пров 11 мерение растворенного кислорода (I мерение растеоренного кислорода П..мерение температуры проводимости, кислотности и раст! 11 мервние проводимости, кислотности и ионов 7 е почренж И.мерение кислотности, проводимости, редокс потенциала Измерение кислотности проводимости редокс потенциала. Назначение не указано

Record м | . 1 ["'"^

ирогптиграф хроматограф хроматограф Многпорам Измер Фотометр Фотометр Многпорам Измер Изм Мутности Многпорам Измер Изм Раствор 02 Многпорам Измер Многпорам Измер Изм Раствор 02 Изм Рэстеор 02 Многпорам Измер Многпорам Измер Многпорам Измер Многпорам Измер Флюориметр

• 1 * М И о 1 7 е i L

Odyssey High Performance 1С Sys Odyssey Basic 1С System SRI Gas Chromalograph 8610C YSI 30 SCT Meier YSI 9000 YSI 9100 YSI 3000 T-L С Meier YSI 80 Turbidity Meter YSI 85 DO ^Conductivity Meter YSI 55 Grant/ YSI 3800 YSI 6000 YSI 50B YSI 52 YSI 800 YSI 3560 YSI Логгерная с ма контроля YSI Логгерная с ма контроля

J

Рис 931

Ш Microsoft Access

File Edit

• -

w Insert Quer I c r

• c# В ЬИр

гЭ-

ШЕ\

Ц.^,.Ш.Н.!ЛЯ!ЯЯ ма 1 Назначение .^Generation

.Jjneage Код J Назначение Ч

Приборы, Hi Мир МОДсЛк.^!

тегория Примечание 1 —* Примечание! Гол по ка гат • ]

Типы щи ,_GU1D ••^Lineagp

Код типа Тип Примечания

I. .

А Страны

"Ьеп_Примеча1 s_Generahon __

5 Jjneage _ J

Фирмы Кодф»фМ4 - l l Название фиг; 1 Кпд страны ндрес —' Адрес 2 zl

Менеджер 4-

Номер Код фирмы IЗМИЛИЯ

Ииа

л

—1 zi

ш А FHd

7аЫе На>начемир_ Назначение

Lite "кислотн*

«I I

Типы пр'иаорсв Нон^с мод Tin ПрИГиры, Пр-гДСТЗЕ Менеджер

.п Рис 9 32

Page 176: Access 2000. Проектирование баз данных-OCR

172 Программирование на языке SQL

- DISTINCTROW; - ТОР.

Предикаты ограничивают число нозвращаемых записей. Если предикат не указан, по умолчанию используется ALL. Это означает, что выбраны все ноля заданной таблицы или таблиц;

• таблица. Указывается имя таблицы, из которой надо отобрать записи; • поле_1, поле_2. Указываются имена полей, откуда следует отбирать данные. Све­

дения будут извлекаться из полей в том порядке, в каком они перечислены; • псевдоним_1, псевдоним^. Задаются имена, которые станут заголовками столб­

цов вместо названий, заданных по умолчанию; • выражение. Здесь указываются имена одной пли нескольких таблиц, содержа­

щих необходимые данные; а внешняя База Данных. Вводится имя тон базы данных, где расположены табли­

цы, которые указаны с помощью аргумента выражение, но находятся за преде­лами текущей БД.

При выполнении операции SELECT Access 2000 находит указанную таблицу пли таблицы, извлекает из нее (из них) необходимые столбцы, выделяет строки, кото­рые отвечают условию отбора, а затем сортирует или группирует результирую­щие строки в заданном порядке. (Отметим, что инструкции SELECT не изменяют ни самих данных, ни их расположения в БД.)

Ы Microsoft Access File Edit View Ipsei t Forrridt Records '^/mdow Help

V, n a •

П U Ъ M о.

l - ln |x |

luerjo: Select Query 1-laM Назначение _L Номер модели I Фамилия

[^онитиринг кислотности, прсеоднммсти, р Многпирям 11.мер Измерение кислотности, проводимости, р; Многпорзм Из мёр Измерение кислотности, проводимости, рг Иногпо|им Измер Измерение кислотности, проводимости, ре Многппрям И"-м [

YSI 1-ИГТРМ.Э мониторинга Флеминг Анализатор роды Флеминг Измеритрпьная система Флеминг YGI Логгерн.^я с ма контропя Флеминг

' 1 " 1 » 1 of 4

Рис 9.33

Ы Microsoft Access File Edit View Insert Query Tools Windovv Help

D & an - Й" ° S S - L?J . С -<Э - 3 •

пшш

0 d

is" Оаегуб : Select Queer Г№1 1 •ELECT Назначение Назначение, [Типы приборов] Тип, (Приооры, представ пенные на рыике2] (Номер модели], Менеджер Фамилия

FROM (Страны INNER JOIN (Фирмы INNER JOIN Менеджер ON Фирмы [Код фирмы] = Менеджер [Код фирмы]) ON Страны Код = Фирмы [Код страны]) INNER JOIN ((Типы приборов] INNER JOIN (Назначение INNER JOIN [Приборы, представленные на рынке2] ON Назначение Код = [Приборы, представ ленные на рынке2] [Код назначений]) ON (Типы приборов] [Код типа] = [Приборы, представленные на рынке2] [Код типа]) ON Фирмы [Код фирмы] = [Приборы, представленные на рынке2] [Код Фирмы] WHERE (((Назначение Назначение) Like "*кислотн*") AND ((Менеджер Фамилия )="Флеминг")) WITH OWNER ACCESS OPTION,

Рис 9.34

Page 177: Access 2000. Проектирование баз данных-OCR

Создание объединенной выборки 173

Обычно слово SELECT является первым словом инструкции SQL, поскольку большая часть этих инструкций SQL относится к типу SELECT или SELECT. INTO.

Минимальный синтаксис инструкции SELECT таков: SELECT поля FROM таблица

Чтобы были отобраны все поля таблицы, добавьте символ звездочки («). Если несколько таблиц, включенных в предложение FROM, содержат одноимен­

ные поля, то перед именем каждого из таких полей следует ввести имя таблицы и оператор «точка» ( ).

Предложение с ключевым словом FROM описывает связи между таблицами. По мере усложнения этих связей все более важную роль играет конструкция INNER JOIN ON, которая имеет следующий синтаксис:

FROM таблица_1 INNER JOIN таблица_2 ON таблица_1 лоле_1 оператор таблица_2.поле_2

Ниже перечислены аргументы операции INNER JOIN: Q таблица_1, таблица_2. Здесь указываются имена таблиц, записи которых нуж­

но объединить; Q поле J , поле_2. Задаются названия объединяемых полей. Если они не явля­

ются числовыми, то должны быть однотипными и содержать однотипные данные. В то же время объединяемые поля могут иметь разные имена;

Q оператор. Выбирается любой оператор сравнения (символы, входящие в каж­дый оператор, заключены в прямые кавычки):

- ' < , " ; - ' > , ' ; - ' < = , '; - > = , " ; - ' О".

Параметр WHERE содержит условия отбора - критерии, вводимые в запрос, - и име­ет следующий синтаксис:

WHERE условие отбора

Создание объединенной выборки В предыдущих разделах мы рассмотрели большую группу запросов на выборку, в том числе запросы с использованием нескольких таблиц, объединенных связя­ми. Однако в системе Access 2000 предусмотрены и запросы других типов:

• запрос на создание таблицы; • запрос на добавление записей в таблицу; О запрос на удаление записей из таблицы; • запрос на обновление записей в таблице; • перекрестный запрос. Запросы всех названных типов могут не только использоваться по прямому

назначению, но и быть частью более сложных, комплексных запросов. Предположим,

Page 178: Access 2000. Проектирование баз данных-OCR

174 Программирование на языке SQL

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

Пример сложного запроса Как вы помните, в объединенном банке данных содержатся три базы данных. Все эти БД имеют различное происхождение. Две из них (БД ЧЭС и Контроль ЧС) непосредственно связаны с оперативной информацией о всевозможных чрезвы­чайных ситуациях (ЧС). Следовательно, вполне естественна такая постановка задачи: получить из этих двух баз данных единую выборку сведений о ЧС опреде­ленного типа (скажем, происшедших в конкретном регионе).

В том, что таблицы этих БД не соединены связями, нет никакого скрытого под­воха. Конечно, разное происхождение баз данных наложило отпечаток на их структуру: записи из различных БД построены неодинаково, отличаются по со­ставу и формату полей. Все это осложняет работу пользователя В принципе мно­гие таблицы из разных БД достаточно легко объединить с помощью связей. Од­нако в каждой базе данных есть свои словари, на которых должны основываться важнейшие таблицы (об этом шла речь в главе 3 настоящей книги), поэтому коды одних и тех же понятий могут не совпадать. Информация в базах данных может дублироваться (дата возникновения ЧС, регион и т.д.). Таким образом, связи меж­ду обеими БД не реализованы отнюдь не по принципиальным, а скорее по мето­дическим причинам. Но интеграция возможна и в этих условиях. Мы хотели по­казать читателю, что система Access 2000 позволяет преодолевать серьезные трудности, даже если иногда они создаются несколько искусственно.

Итак, приступим к решению поставленной задачи. Оно включает по крайней мере два этапа:

1. Создать таблицу, в которую будет помещена выборка сведений из одной базы данных, полученная в соответствии с заданными критериями. Иными словами, необходимо сформировать запрос на создание таблицы.

2. Добавить в построенную таблицу записи из другой базы данных, удовлетво­ряющие тем же самым критериям. Это значит, что надо сформировать запрос на добавление записей в таблицу.

Запрос на создание таблицы В конечном счете полученная выборка должна содержать поля из таблиц Filel и ESOPER. Поэтому сначала сформируйте новый запрос на выборку (Select Query) Он должен указывать те поля, которые вы хотите скопировать в создавае­мую таблицу. Как и в предыдущих разделах книги, запрос будет построен с помо­щью конструктора. Все операции, связанные с созданием запроса, вам уже знакомы. Итак, введите в него все поля таблицы Filel, а также условия отбора: в поле Назва­ние области - критерий Название области, в поле Характеристика ЧЭС - крите­рий Нефтепровод* (см. рис. 9.35). Теперь с помощью кнопки j l проверьте, правиль­но ли производится отбор (см. рис. 9.36). Убедившись в этом, можете формировать запрос на создание таблицы. Щелкните по стрелке прокрутки справа от кнопки

Page 179: Access 2000. Проектирование баз данных-OCR

Создание объединенной выборки 175

Ы Microsoft Access Fi l^ ^cJit '^ I m e r t Query T L U I ' ^ W H J V " HPlp.

PHTi

is1 Query": Select Query

FUel

1 ЕмдыЧ' НэИменОЕЭНИ

ДатаЧ Ef-мя И- j j

1

^ Field

Table Surf

Show nteria

or

Нсг.е^ние r fпэгтн Ffcl

0 Тюменгкая о&пагть

<j i

*арэгтер| Tin <,Ч~-"С F iH

0 Lil^ "нефтепровод*

ЕгемяЧС F H I

0

Дата «общения Filel

0

бр^мя г P.lel

плющения

0

Код per File,

nvGOHFM

— 0

•Г

Рис 9 35

I B Microsoft Access

File Edit View Insert Fci roar PeL

• i^ у # & v- © id - н # Ei vc ca

* Re

Виды ЧС | Наименование 1U1IJJ ^ЕНрИЯ на М'аП

1010Э Авария на м^п 10109 А&ария на wan 10109 Авария на мап 10109 Порыв нефтепр 10109 Авария на мап 10109 Авария на мзп 10202 Порыв и поч'т[:

,o,d н | 4 1 1 • | и | . . | о.

' I

и d T O L !Ь \Ajndnyv hjp|p

Ь - ^ - eg Л1 - О -П 51 v ; ^ M • * « B ^ - 0

Дата ЧЭС | Название оСл| Характеристика ЧЭС j Время U4/T6/19'J5 Ткменская об г В 55 км севернее г Ур< 04/20/1995 Тюменская O6J UJ за ветхости произои. 04/25/1995 Тюменская O6J Неустановленный тракт 04/25/1995 Тюменская O6J В Нижневартовском pai 06/25/1995 Тюменская O6J ВО время экскаваторно 07/17/1995 Тюменская O6J На комплексном сборне 12/14/1995 Тюменская об; Произошел порыв напо 02/11/1995 Тюменская ofj Из за коррозии металла

a -I I

.

ЧЭС [ ш ш 00 00 00 00 10 30 00 17 03 15 04 30

I B H B H J n M

Чэта сообщвния| В 0-1.13Г/1У95 04/25/1995 04/26/1995 04/29/1995

07/17/1995 12/16/1995 12/30/1899 J

-ч I As

Рис 9 36

g] -J - Query Type (Тип запроса) на панели инструментов (см. окно, показанное на рис. 9.35) Активизируйте режим Make Table Query (Запрос на создание табли­цы). Можно выбрать ту же опцию, открыв меню Query (Запрос) на панели ин­струментов (см. рис. 9.35). После этого Access 2000 попросит вас назвать таблицу. Назовите ее просто Выборка1 (см. рис. 9 37). Запрос на выборку будет автомати­чески преобразован в запрос на создание таблицы, как показано на рис. 9 38. Если теперь вы отдадите команду выполнить этот запрос, то во вкладке Tables (Табли­цы) окна базы данных появится таблица Выборка1. Ее содержание полностью со­ответствует тому, что вы видели на рис. 9 36 Остается осуществить вторую часть задачи: сформировать и выполнить запрос на добавление записей в таблицу.

Page 180: Access 2000. Проектирование баз данных-OCR

176 Программирование на языке SQL

Make Table Make New Table Table Name рЯЗВЁЁП

<• Current Database

С Another Database

~3

ш OK

Cancel

Рис 9 37

SJ Microsoft Access ] Eile Edit View Insert Query Tools Window Help

ГТПТЙ]

П.-[М1^'Г4 • !°г i? Query7 : Make Table Query BSD

1

^

Filel

* Виды ЧС 4 Наименовани< Дата ЧС Время ЧС J

Field „Table

Sort Show

Criteria or

Дата ЧС Filel

0

•1 1

Название области Filel

И Тюненская область

Характеристика Ч File!

0

Время ЧС Flel

13 Lite *нефтепроеод*

дата сообщения Filel

0

Время сообщения —

Filel —

0

.г j j

Рис 9 3S

Запрос на добавление записей в таблицу Такой запрос позволит добавить в уже имеющуюся таблицу новые записи из дру­гой таблицы Существенно, что таблицы могут быть как похожими, так и различ­ными по структуре, они могут иметь неодинаковое количество полей с разными именами Итак, чтобы включить новые данные в таблицу, надо сначала создать и выполнить обычный запрос на выборку, а затем указать, в какие именно поля какой таблицы следует поместить поля с новыми записями

Создайте запрос на выборку из ES_OPER и укажите в нем условия отбора за­писей По структуре эта таблица отличается от таблицы Filel

В частности, основная текстовая информация таблицы E S O P E R содержится в поле Текст сообщения Поэтому условия отбора данных в запросе, который вы создаете, будут отличаться от критериев, введенных для таблицы Filel Посколь­ку необходимо отфильтровать записи об авариях на нефтепроводах Тюменской области, в запросе на выборку введите в поле Текст сообщения следующее выра­жение «Тюменск* AND нефтепровод* (неизменяемые части слов - с учетом того, что

Page 181: Access 2000. Проектирование баз данных-OCR

Создание объединенной выборки 177

говорилось выше о возможности употребления слова в разных падежах) Сфор­мированный запрос показан на рис 9 39

Теперь задайте тип запроса (Query Type) Пусть это будет Append Query (За­прос на добавление) На экране вновь появится окно Append (Добавить) В нем следует выбрать опцию Table Name (Присвоить имя таблице) Так как вы уже вводили ее имя на предыдущем этапе, просто щелкните по стрелке прокрутки и в открывшемся списке укажите позицию Выборка1 Затем активизируйте оп­цию Append To (Добавить записи)

Q Microsoft Access j File Edit View Insert Query Tools Window Help

| O ^ Q 6 . 1 , ' X lb В •$ | <n j & • £h - j й" i °S -Л - ф JO - Q • G> &. v ! * lb © ¥ i *"> r5 -1 ! | °n z A"

ГЛпГ*1

с? ч © in- о . i? QueryS: Select Query пша

1

^

ES_OPER

Дата ЧС Код насепепи Код вида ЧС Масштаб ЧС _J

Field Table Sort

Show Criteria

Tefcr сообщения Дата обноеяения и ES OPER

Like Тюменск* And Like ""нефтепровод*

Признак коктрдгтя населенный пункт—

-d

Рис 9 39

Щелкните по кнопке ОК, и на экране возникнет окно Append Query (Запрос на добавление) Перед тем как отдать команду на его выполнение, обязательно укажите, в какое поле таблицы-получателя Выборка1 надо поместить данные из соответствующего столбца таблицы ES_OPER Как вы помните, эти две таблицы различны по структуре, а также по набору и формату полей Поэтому соответствие обоих полей определяет пользователь согласно табл 9 1

Append

-Append To

Table Name

F Current Da

С Another D.

F >e fj.j'ne Менеджер Назначение

1 1

OK

Cancel

i*i ]

Рис 9 40

Page 182: Access 2000. Проектирование баз данных-OCR

178 Программирование на языке SQL

Таблица 9 1 Соответствие попей при добавлении записей

Поля таблицы ES OPER Поля таблицы Выборка!

Дата ЧС

Код населенного пункта

Код вида ЧС

Текст сообщения

Дата обновления информации

Населенный пункт

Пострадало всего

В том числе погибло

Материальный ущерб

Абонент

Дата ЧС

Код населенного пункта

Виды ЧС

Характеристика ЧС

Дата сообщения

Название города

Пострадало

Погибло

Материальный ущерб

Абонент

Введите имена полей из столбца Выборка1 в поля Append To тех столбцов, име­на которых указаны в таблице ES_OPER (эту операцию, к сожалению, придется выполнить вручную). Готовый запрос на добавление вы видите на рис. 9.41. Те­перь осталось только щелкнуть по кнопке j l . В результате запрос выполнится, и на экране появится таблица Выборка1. На данном этапе согласно условиям от­бора в таблицу включено 8 записей из таблицы Filel. На втором шаге, в соответ­ствии с теми же критериями, добавляется еще 9 записей из таблицы ES_OPER (см рис. 9.42). Название итоговой таблицы Выборка1 автоматически заносится во вкладку Table окна базы данных. Обратите внимание, что в тех потях, которые не приведены в табл. 9.1, информация отсутствует.

Итак, вы убедились, что Access 2000 позволяет объединять сведения из таблиц с разной структурой записей. Это очень важно в практической работе.

1Q Microsoft Access 1 File £dlt ^ - < [i P t Query I I I' L i n d j W HPlp

• t£ У -о *, - an • й> =g -£ . d j .

• • H -'• *\ - I °n T AH . a'

His1 Query8 : Append Query

LdJ

ES_OPER

Дата ЧС Код населенн Кол ьида ЧС Масштаб ЧС _ J

field Table Sort

Append To Criteria

or

Р.зненс д>=теи Еэ OPER

Е том чигле погибп ES OPER

Погибло

Погибло детей Е5 OPER

Материопьный уще Е5 OPER

Матери эпьный ущ<

•J 1

в -а - щ.

Потери Е5 OPER

1

Причина Ч'-ES OFER

• - | П | Х |

. | п | х

d

^

— —

•Г

^1

Рис 9 4}

Page 183: Access 2000. Проектирование баз данных-OCR

Запрос на удаление записей 179

Э Microsoft Access £le Edit View \\wrt Format Re

D & и a a v-' j- * ^ - и a a У и • Выборка! : Table

* R*

Виды ЧС | Наименование (l0109 Авария KJ нэп 10109 Авария нэ мап 10109 Авария на мап 10109 Авария на мап 10109 Порыв нефтепр 10109 Авария на мап 10109 Авария на мап 10202 Порыв и пожар 10301 10301 10301 10301 10301 10301 10301 10301 10301

ccid t'\ I ] 1 • I n 1>»l о

йГСИ T c m l W H «luvV H." Ip

' - Ь - ол- ' eg -S - Oil. ' • - £1 л! v ; "й A »«»/

Дата ЧС |Назваиме обл|Хэрактеристи{ 04/06/1^95 Тюменская of]; В 55 км ceeeph 04/20/1995 Тюменская об; Из за ветхости 04/25/1995 Тюменская O6J Неустановлени 04/25/1995 Тюменская D6J В НижневэртоЕ 06/25/1995 Тюменская O6J Во время экск 07/17/1995 Тюменская O6J На комплексно 12/14/1995 Тюменская O6J Произошел по| 02/11/1995 Тюменская O6J Из за коррозии 03/07/1997 04/27/1998 Тюменскз 11/17/1997 Тюмени 01/31/1997 01/19/1999 Тюменская. 05/24/1997 Тюме> 07/30/1998 Тюменская 07/25/1997 Тюменская о 07/27/1997 D Тю«,

М 7 . | |

© - 4 1 - 0

• Jnlxl

-И*| Время ЧС | Дата Сбобщви| Время соо< 00 00 00 00 00 00 00 00 00 10 30 00 00 17 00 03 15 00 04 30 00

04/07/1995 04Л5/19Э5 04/26/1995 04/29/1995

07/17/1995 12/16/1995

00 00 00 03/07/1997 05/05/1998 11/21/1997 09/29/1997 01/29/1999 05/24/1997 08/04/1998 07/25/1997 10/20/1997

00 00 00 00 оооо 00 00

01/09ЛЕ

01/1 ЗЛЕ 00 00

J j

^J

•1

Рис 9 42

Запрос на удаление записей Базы данных не только используются по прямому назначению; часто возникает необходимость произвести в них некоторые вспомогательные, служебные опера­ции. Например, время от времени базу данных надо чистить: там обнаруживают­ся дублирующиеся записи, устаревшая, бесполезная информация и т.д.

В принципе можно удалить запись из БД и без помощи запроса, а непосред­ственно из формы, как описывалось в главе 4. Кроме того, можно просто открыть таблицу и удалить выбранную запись Однако суть проблемы именно в этом сло­ве - «выбранная». Когда число записей в таблице растет и их счет идет на тысячи, определение «жертвы» превращается в сложное и трудоемкое мероприятие. Ис­пользование запроса на выборку помогает решить такую задачу.

В окне конструктора создайте обычный запрос (см. рис. 9.4). Затем с помощью уже хорошо известной вам кнопки rg] ~| откройте меню Query Type (Тип запроса) и активизируйте в нем опцию Delete Query (Запрос на удаление). Теперь надо ввести в запрос критерии отбора записей для последующего удаления. Здесь тре­буется уточнить, какие именно записи должны быть уничтожены.

Так как речь идет о базе данных но ЧС, то в ней не предусмотрено накопление и хранение информации о дорожно-транспортных происшествиях - подобные сведения должны содержаться в другом банке данных. Однако по разным причи­нам в нашу базу данных (в частности, в таблицу ES_OPER) такая информация иногда попадает. Пользы от этого все равно нет, потому что случайные разрознен­ные записи не дают полной картины по дорожно-транспортным происшествиям.

Page 184: Access 2000. Проектирование баз данных-OCR

180 Программирование на языке SQL

Естественно, такие сведения следует удалять. В бланке запроса в ячейке Criteria (Условия отбора) для поля Код вида ЧС введите код данного типа происше­ствии - "10101", как показано на рис. 9.43.

Ш Microsoft Access File Edit Vievv Insert Quei у l o o h Window Help

• c£ У "i Ь - ю - й1 ^

nm M

О - У •n X! Й"„> s a - о , P is1 Queryl2 : Delete Query

AA

ES_OPER

Дата ЧС г од насепенн код еида ЧС 1ЬоитабЧС . J

^ШШШШШШШ-\Ф\ d

^ Field

Table DeWe.

Critena: or

Дата ЧС E' OPER where

< l 1

Код наг*- пенного п Е: OPEF where

• ' одеид э ЧС Е5 OPER Where "10101"

Масштаб ЧС Е5 OPER Where

М е т сообщения ES.OfER Where

Дата обн— E5 OPEP — Where

•Г ы ^

Рис. 9.43

С помощью кнопки !J задайте команду на выполнение запроса. На экране по­явится сообщение о том, что удалению подлежит 421 запись (см. рис. 9.44). Затем Access 2000 предупредит: Once you click Yes, you can't use the Undo command to reverse the changes (Если вы ответите «Да», то не сможете вернуться назад и от­менить проведенные изменения). Кроме того, система попросит у вас подтверж­дения: Are you sure you want to delete the selected records? (Вы уверены, что хо­тите удалить отобранные записи?). Надеемся, что вы исполнены самых серьезных намерений и решительно ответите Yes, приведя приговор в исполнение. Таким образом, вы реализуете запрос на удаление, стерев 421 запись, или 6,6% от общего числа записей в таблице ESOPER (6348).

[Microsoft Access You are about to delete 421 row(s) from the specified table.

Once you click Yes, you can't use the Undo command to reverse the changes. Are you sure you want to delete the selected records'

" Yes 1 No I

Рис 9.44

Page 185: Access 2000. Проектирование баз данных-OCR

Удаление дублирующихся зописей 181

1 New Query

1:;::::'-,ПЭ\ L_—„_jr — " This wizard creates a query that finds records with duplicate field values in a single table or query,

ШШШ^^Ш?\х\ Design View Simple Query Wizard Crosstab Query Wizard

Find Unmatched Query Wizard

OK Cancel

Рис. 9 45

Удаление дублирующихся записей При ведении банка данных довольно часто приходится удалять повторяющиеся записи. Есть два традиционных пути решения этой задачи:

• не допускать дублирования записей непосредственно при вводе информа­ции в базу данных;

• находить и устранять повторяющиеся записи из уже сформированной БД. Напомним, что вы работаем с объединенным информационным банком, в ко­

тором собраны разнородные базы данных. Поэтому неудивительно, что для раз­ных БД эта задача решается неодинаковыми средствами. В последующих главах мы покажем, как предотвратить дублирование сведений при вводе информации в базу данных, используя средства языка Visual Basic. А сейчас речь пойдет о том, как удалять повторяющиеся записи с помощью стандартных запросов.

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

Запрос на поиск повторяющихся записей Начнем с таблицы ES_OPER. В окне базы данных откройте вкладку Queries (Запросы) и щелкните по кнопке illttew|. Затем в окне New Query (Новый запрос) выберите позицию Find Duplicates Query Wizard (Мастер запросов на поиск по­вторяющихся записей). Как видите, создаваемый запрос отличается от тех, что рассматривались ранее, тем, что он строится с помощью мастера запросов. Послед­ний содержит три шага, каждый из которых описывается своим окном.

В первом окне (рис. 9.46) мастер спрашивает: Which table or query do you want to search for duplicate field values? (В какой таблице или запросе вы хо­тите искать повторяющиеся поля?). Выберите таблицу ES_OPER и продол­жите работу.

Page 186: Access 2000. Проектирование баз данных-OCR

182 Программировониена языке SQL

Find Duplicates Query Wizard

1 >.\л хлк m |

3 W, XXX V.-AY. I 1

2 у/ли xxx xxx |

4 мл xxx xxx р ^

2 xxx xxx ^

2 х:.х хг X

Vhich table or query do you i*<arit to feah.fi for duplicate fiel" values'

For example, to find cities with mote than one customer you wuuld choose a Customer table below

CLAS5T CLPEb

Filcl fT'rN REGION REGION D TIPCHS

J

J

Jll View

(• Tables <~ Queries <" Belt.

Cancel Next >

Рис 9 46

В следующем окне (см рис. 9.47) вы должны ответить на ВОПРОС: Which fields might contain duplicate information? (Какие поля могут содержать повторяющую­ся информацию?) - и указать эти поля. Будем считать, что записидублнруют друг друга, если в них совпадает содержимое трех полей: Дата ЧС, Код населенного пункта,-Код вида ЧС. Иначе говоря, мы исходим из того, что в од-ш и тот же день

Find Duplicates Query Wizard Which fields might contain duplicate information7

For example, if you are looking for cities with more than one customer, you would choose City and Region fields here

Available fields: Duplicate-value fields

Дата обновления информации. Признак контроля Населенный пункт Серийный номер записи Широта Долгота Объект (место) j j

Дата ЧС Код населенного пут та

Cancel <Back Next > Finish

Рис 9 47

Page 187: Access 2000. Проектирование баз данных-OCR

Удаление дублирующихся записей 183

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

После этого мастер откроет следующее окно (см. рис. 9.48) и выведет на экран вопрос: Do you want the Query to show fields in addition to those with duplicates values? (Хотите ли вы включить в запрос какие-либо поля в дополнение к тем, которые дублируются?). Рекомендуем добавить поле Номер, где указывается но­мер записи (чуть позже будет объяснено, зачем). В следующем окне мастер пред­лагает вам назвать новый запрос.

Find Duplicates Query Wizard Do you want the query to show helds in addition to those with duplicate values?

1 xxx хм xxx

2 m>. XJX xx>.

3 XI-.X XI-.X XXX

2 xxx хьх ххь

4 xv x"' XT

For example, if ynu chose to look hot duplicate Cit/ values, you could choose CustomerfJame and Addiess heie

A mailable fields Additional query fields

Дэта обнпБп^ния инфор Признак контропя Населенный п^нкт Серийный номер иапис Широта Долгота Объект |'МРГТГ|'|

Cancel

d 3ftvwMf.tr-

* mm

<Въг_к Next > Finish

Рис 9 48

Пока советуем принять имя Find duplicates for ES_OPER (Поиск дублирую­щихся записей в таблице ESOPER).

Запустив этот запрос на выполнение, вы получите выборку в виде таблицы (см. рис. 9.49). Здесь аккумулированы записи, в которых повторяются поля Дата ЧС, Код населенного пункта и Код вида ЧС, определенные выше в качестве критери­ев отбора. Как видите, таких записей всего 307, или 5,0% от их общего числа -вполне правдоподобная оценка.

Удаление повторяющихся записей Если следовать формальной логике, при удалении записей нужно использовать запрос на удаление. Можно так и сделать, но это не идеальное решение. Попробу­ем разобраться.

Page 188: Access 2000. Проектирование баз данных-OCR

184 Программирование на языке SQL

1Ш Microsoft Access [ File Edit View Insert Format F

| О й @ # Й С ' * 4§> i >M.- H i i E i ? X. 4n t

ernrd; Tools w»"

, b -* 1

lis1 Find duplicates for ES_OPER: Select Query

. i .

Re

Дата ЧС | Код насаленн 01/01/199711U50010 01/01/1997 11450010 01Л37/1997 11450010 01/07/1997 11450010 01/03/1997 12710240 01/03/1997 12710240 01/08/1997 12710240 02/05/1997 11450010 02/05/1997 11450010 02/19/1997 11450010 02/19/1997 11450010 03/05/1997 11450010 03/05/1997 11450010

cord: к I • 11 i > I и I»»

| Код вида ЧС | 110603 10603 10206 10206 10206 10206 10206 10206 10206 10701 10701 10701 10701 оГм7 ?ЩГ

i ^ H - b M dow Help

i ia- °ё-М~ " l\ .- © V

•i- |n|x| Номер |_ i | 53B4H 725! 847 841!

2715 s

2784 i 3802 2289. 2197 883 826'

2946 2836

zl

Рис. 9.49

Когда вы удаляете определенные записи с помощью соответствующего запро­са, вы должны ввести какие-то условия отбора. Эти критерии могут быть основа­ны либо на внешних признаках (нужно отобрать значение, которое равно, больше или меньше указанного числа или выражения), либо на определенном соотноше­нии между полями одной записи (заданное соотношение должно соблюдаться во всех отфильтрованных записях). В условиях отбора не заложено сопоставление различных записей, а ведь именно это требуется при поиске дубликатов. Сформу­лировать критерии отбора так, чтобы они позволяли отследить именно повторя­ющиеся записи, не удается. Если же вы непременно хотите использовать для уничтожения дубликатов запрос на удаление, попробуйте следующий способ. За­дайте в качестве условия удаления номер записи, который указывается в запросе, на поиск повторяющихся записей, как показано на рис. 9.49. (Вот почему поле Номер следует включить в итоговую таблицу повторяющихся записей!) Чтобы осуществить эту идею, в строке Criteria (Условия отбора) бланка запроса на уда­ление введите выражение типа:

N1 AND N?AND N3 AND.

где: Q N] - номер первой записи, которую следует удалить; • N - номер второй записи, которую надо удалить; • N - номер третьей записи на удаление, и т.д.

Page 189: Access 2000. Проектирование баз данных-OCR

Удаление дублирующихся записей 185

Номера этих записей приведены в результирующей таблице повторяющихся записей (см. рис. 9.49). Однако учтите: вам придется либо вручную переносить номера из таблицы в запрос (при большом числе записей занятие малоприятное), либо писать для данной цели специальный макрос.

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

В таблице ES_OPER создается новое поле - назовите его Условие отбора. Вве­дите в него конкатенацию полей. Конкатенация - это объединение текстуальных, числовых символов или дат в одной ячейке, которое осуществляется с помощью оператора & (так называемого аиперсанда). В нашем случае следует ввести поля Дата ЧС, Код населенного пункта и Код вида ЧС, потому что именно они выше были заданы в качестве критериев отбора дублирующихся записей. При созда­нии этого поля разрешается дублирование записей, поскольку они уже существу­ют. Затем надо скопировать структуру таблицы ES_OPER (без ее содержания) и в полученной копии в поле Условие отбора задать запрет на дублирование ин­формации. После этого в пустую таблицу следует добавить записи из исходной таблицы ES_OPER. Тем самым повторяющиеся записи исключаются, поскольку их ввод запрещен в поле Условие отбора. Чтобы завершить операцию, удалите исходную таблицу ESOPER, а ее название присвойте скопированной таблице. Поле Условие отбора можно также удалить, но лучше его все-таки оставить, что­бы предотвратить дублирование записей в дальнейшем.

Мы разработали стратегический план операции. Теперь начнем его реализацию.

ВВОД НОВОГО ПОЛЯ Приступим к формированию и исполнению запроса на обновление. Сначала необ­ходимо создать новое поле Условие отбора с помощью конструктора таблиц. Так как об этом подробно рассказывалось в главе 3, здесь мы приводим лишь результат рабо­ты: итоговый вид поля Условие отбора в конструкторе таблиц (см. рис. 9.50).

Как уже говорилось, в новом поле для исходной таблицы допускается дублиро­вание: для свойства Indexed (Индексировано) установлено значение Yes (Dupli­cates OK) - Да (Дублирование разрешается). Когда вы будете сохранять это из­менение в структуре таблицы, Access 2000 поделится с вами своими сомнениями (см. рис. 9.51): Existing data violates the new setting for the "Required" property for field "Условие отбора" (Существующие данные входят в противоречие с новым значением свойства Обязательное заполнение для поля Условие отбора) - и пред­ложит подумать: Do you want to keep testing with the new setting? (Вы хотите продолжить работу при сохранении нового значения?). Здесь возможны следую­щие варианты ответа:

Q To keep the new setting and continue testing, click Yes (Чтобы сохранить новое значение и продолжить работу, щелкните по кнопке Yes);

• То revert to the old setting and continue testing, click No (Чтобы вернуть­ся к старому значению и продолжить работу, щелкните по кнопке No);

Page 190: Access 2000. Проектирование баз данных-OCR

186 Программирование на языке SQL

Ы Microsoft Access File Edit Vie'"" IncHrf Tool. Window Help

n - н (a i-> с

шш

" " ' ' ' — ' •

1 • ES O P E R : Table

_•.

Field Name Код Еида ЧС дополн2 Группы население ТребоЕанич Услссие отбора

_. __ General Lookup |

Field See Format Input Mast Caption Default Value Validation Rule Validation Text Required Allow Zero Length Indexed Unicode Compression

I Data Type I Text Text Text Text

Field Properties

40

'yes No Yes (Duplicates OK) Ves

1 Description

zi

_ | n | x |

k l

J z J

Alio w

umc ode

corn pre

n ГСП i-hi_.

hel d-

'1

Рис 9 50

Microsoft Access Existing data violates the new setting for the 'Required' property for field 'Условие отбора.'

Do you want to keep testing with the new setting? * To I eep the new setting and continue testing, click Ves * To revert to the old setting and continue testing, click No. * To stop testing, click Cancel.

No Cancel

Рис 951

• To stop testing, click Cancel (Чтобы прервать выполнение операции, вос­пользуйтесь кнопкой Cancel).

Оставьте сомнения и смело отвечайте Yes В результате вы получите таблицу ES_OPER с новым пустым полем Условие отбора.

Запрос на обновление записей Теперь сформируйте запрос на обновление, чтобы ввести в созданное поле Условие отбора конкатенацию полей - критериев, ио ко горим идет поиск дублирующихся

Page 191: Access 2000. Проектирование баз данных-OCR

Удоление дублирующихся записей 187

записей. Как обычно, сначала создайте запрос для таблицы ES_OPER. Чтобы пе возиться с лишней информацией, оставьте в запросе только одно поле - Условие отбора. Затем, как и раньше, откройте меню Query Type (Тип запроса) и выберите опцию Update Query (Запрос на обновление). В строку Update to внесите конкате­нацию: [Дата ЧС] & [Код населенного пункта] & [Код вида ЧС] (см. рис. 9.52).

г тзп Ы Microsoft Access File Edit Vie* Insert Query Tools Window Help

is1 QueryP : Update Query ШШ

sU

ES_OPER Дата ЧС - d Код населенн—' Код вида ЧС Масштаб ЧС Текст сообще Ч

d

* \

Field Table

Update То' Cntena'

01

Vr поеме отбор a ES OPER [Дата ЧС1 Ь, [Код населенного п-/мктз1 8*. [Код вида ЧС1

-1 i

— —

3

Рис 9 52

Обратите внимание, что имена полей необходимо заключить в квадратные скобки, иначе вместо значений полей будут введены их названия. Если вы те­перь отправите запрос на выполнение, то в поле Условие отбора будут включе­ны совокупные значения полей, полученные после их объединения. На рис. 9.53, 1де представлена часть таблицы ES_OPER, показан результат операции.

И снова - запрос на добавление Наконец, в заключение работы по удалению повторяющихся записей скопируйте ES_OPER в новую таблицу, где в поле Условие отбора будет задан запрет на дуб­лирование. Для этого в окне базы данных выделите таблицу ES_OPER и после­довательно воспользуйтесь кнопками 4i| (копировать) и |@,| (вставить). В окне Paste Table As (Вставить таблицу как) укажите имя новой таблицы - назовите ее ES_OPERl. Теперь активизируйте опцию Structure only (Копировать только структуру). (Отметим, что возможны и другие варианты: Structure and Data -Копировать структуру и данные, а также Append Data to Existing Table - Доба­вить данные в уже существующую таблицу.) Когда вы щелкнете по кнопке ОК,

Page 192: Access 2000. Проектирование баз данных-OCR

188 Программирование на языке SQL

Ы Microsoft Access File Edit View Insert Format Pucord; J_on|- Window H.= lp

15ТЗП

D c& w, - •Л -

»i 51 ~; ^ #4 © | • ES_OPER : Table

Re

Код вида ЧС ;| Группы

001 008 001 017 017 008 001 010 018 017 001 001

cord ч I • | | 1 •

насоп Требования

001 031 001 031 031 031 006 031 002 001 001 001

I »i |>»| of 5927

^ М ^ ^ Н l-l | Условна отворэ 10/14/19981107001020501 07/09/19981107003030503 09/16/19981198001030505 01/18/19991191012030505 03/18/19991165001030503 03/18/19991165001030503 04/04/19991132012030501 05/27/19981180001030504 07/27/19981101253630502 07/27/19981160001030504 07/27/19981115132430503 07/27/19981186001030505

_±.

07/27/19981107001030505 ,

3 J _L

J

— 'I

Рис 953

в окне базы данных во вкладке Tables (Таблицы) появится имя новой таблицы -ES_OPERl. Откроите ее в режиме конструктора и измените то свойство поля Усло­вие отбора, которое касается запрета на повторение записей. Сравните значение этого свойства, установленное для скопированной таблицы (см. рис. 9.55), с ана­логичным значением для исходной таблицы (см. рис. 9.50).

Теперь займемся формированием долгожданного запроса на добавление. Ал­горитм создания подобных запросов был подробно рассмотрен в этой главе, в разделе «Запрос на добавление записей в таблицу», поэтому здесь отметим лишь одну деталь. В данном случае таблицей-получателем является ES_OPERl,

Paste Table As T able Name

|E5_OPEPl

Paste Option?

"" structure Only

<~ Structure and Dat

<~ Append Data to Existing Tal

Ok

Cancel

Рис 9 54

Page 193: Access 2000. Проектирование баз данных-OCR

Удаление дублирующихся записей 189

\Ш Microsoft Access File Edit VIP Ir^prt

D & У • - Q

loo l : Wmdu! Help

А чи a l Ra (S

II • ES OPER1: Table

_• Field Name

>СЛиЕие Отбора

. , General ] Lookup |

Field Size Furrnat у Ь м ъ Input Mask ^ ^ H caption ^ ^ H Default Value 4 H | Validation Rule ' * " " " ' " Validation Text Requu ed Allow Zero Length Indexed Unicode Comoression

<l

\ Data Type | Те., г

Field Proper tier.

SO

По

Ves

i ^ ^ ^ ^ H H J n l x l

Ъ- ПО' og-M~

\v • [^ " ^ ^ ^ ^ H _ - l > 1

Description |

An

d

A A

index speeds

up search

es and urting on

the field, but may <;lni,\j

j ±fi Рис 9 55

a таблицей-источником - E S O P E R . В ходе выполнения запроса Access 2000 по­жалуется вам на то, что не можег включить в таблицу-получатель какое-то ко­личество записей, поскольку в ней не допускается наличие дубликатов. Именно к этому вы и стремились! Отбросив угрызения совести, смело отвечайте Да.

Итоговый вид бланка запроса показан на рис. 9.56, а очищенная от повторяю­щихся записей таблица ES_OPERl - на рис. 9.57.

По поводу последней необходимо небольшое пояснение. Если вы обратитесь к результирующей таблице повторяющихся записей, кото­

рая представлена на рис. 9.49, то убедитесь, что она включает 307 дубликатов. Меж­ду тем исходная таблица ES_OPER содержит 5927 записей, а таблица E S O P E R 1 -5754. Значит, удалено всего 173 записи.

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

Теперь, чтобы завершить всю операцию, удалите из базы данных таблицу ES_OPER, а ее имя присвойте таблице ES_OPERl. Что касается поля Условие отбора, то при желании его можно убрать. Однако мы уже рекомендовали вам не торопиться с этим: наличие поля позволит предотвращать дублирование записей при последующем вводе данных.

Page 194: Access 2000. Проектирование баз данных-OCR

190 Программирование на языке SQL

Ы Microsoft Access Fjle Edit View In.eit Query loolc vvmctjuvi Help

О Сё У . J( 4 3 f ' - Ь • о-а - Й* °ё -И -• • Н • & 42 Г" " • ••- « <>а г ли Й ' \ © - Й 1 L4.

iui.iiumiun.i.u.inaiHM МЗ ES OPER

Номер ДатаЧС Код населен Код вида ЧС

zl

d

1

^

ы Рис 956

1 В Microsoft Access

File Edit View Insert Format Pecords; j 0 | s

• tS В & & v" * ' • " l ,

у- в а а ? • ES O P E R 1 : Table

• Номер | Дата ЧС | Код кчаолёнь

5247 0MJ1/1997 110511 4L 5316 01/01/1997 1152CJ2J 5329 01/01/1997 1141СЖ

725 01/D1/1997 1145О01 3760 01/01/1997 1149CJ01 2641 01/01/1997 11B0Q34 1565 01/01/1997 1192C32S 5400 01/01/1997 12711 61 3720 01/01/1998 1130CD01 3665 01/01/1998 1145CD01 4892 01/01/1998 11870)25 4089 01/01/1998 1198Qin9

Retcid " j < l f 1 • | н | » « | of 5 7 5 ^ 1

bVmdow

• ой -£1 51

Help

' °$ -а • О -ъъ ** >• * е м- д.

| Код вида ЧС | Масштаб ЧС | Текст сообщения | 1U201 30115 10206 10603 10206 30106 10206 30110 20101 10702 10303 10603

Q 0 0 0 0 0 0 0 0 0 0 0

• I I

К е м "рйЕ:СК5я об

Л е н и н г р а д е ц о

XaHTfci • Мантйо г Петропаыов г Москва Республи а Кс

Республика

• Н Inlxl

. M - h M Дата обмовлцЧ

01/01Л99 01/01/199 01/01/199 01/01/199 01/01/199 01/01/199 09/29/199 01/01/199 02/04/199 02/04/199 02/04/199 02/13/199 .

Рис. 9.57

Перекрестный згырос Перекрестные запросы позволяиг подсчитывать данные по двуъ-d и более переменным. В ситуациях, подобных наше^ерекрестные запросы компактнее, ч;м обычные.

Как правило, при перекрестом запросе первый столбец по лучасмой в результа­те таблицы отображает значеэшя одной переменной - это заг-оловш строк. В пер­вой строке этой таблицы пр»иодятся значения второй пере-меннэй - заголовки столбцов. На пересечении стр»ош столбцов находится сумма («<оли^ество значений,

Page 195: Access 2000. Проектирование баз данных-OCR

Перекрестный запрос 191

среднее и т.п.) по третьей переменной. Чтобы отразить все это в отчете, можно со­здать сводную таблицу. Когда перекрестный запрос выполнен, в результирующей выборке заголовки строк и столбцов часто представляют собой поля, содержащие текст или даты. Поля значений обычно относятся к числовому или денежному типу. Поясним эти положения на конкретном примере.

Построение перекрестного запроса с использованием мастера Задача, для решения которой потребуется перекрестный запрос, формулируется гак: необходимо выяснить, сколько аварий (чрезвычайных ситуаций) определен­ных видов произошло на территории разных субъектов Российской Федерации (краев и областей). Источником информации послужит таблица Filel.

Формирование перекрестного запроса лучше всего начать в мастере запросов. Во вкладке Queries окна базы данных с помощью кнопки gpNew[ выйдите в окно New Query (Новый запрос), как показано на рис. 9.58. В этом окне активизируйте оп­цию Crosstab Query Wizard (Мастер перекрестных запросов). Откроется еще одно окно (см. рис. 9.59). На этом этапе работы мастер спрашивает: Which table or query contains the fields you want for crosstab query results? (Какая таблица или запрос содержит те поля, которые вы будете использовать в перекрестном зап­росе0). В нашем случае следует выбрать таблицу Filel. А что делать, если в какой-либо другой ситуации одной таблицы будет мало? мастер подсказывает: То include fields from more than one table, create a query containing all the fields you need and than use this query to make the crosstab query (Чтобы включить поля из бо­лее чем одной таблицы, сформируйте запрос, содержащий все нужные вам поля, л затем используйте этот запрос как основу для создания перекрестного запроса).

1 New Query

This wiza crosstab data in a spreadsh

Z. II!

\

'•\ър\а\ s

at

^^^^ШШ?Ы\ Design View Simple Query Wizard Crosstab Query Wizard Ш Find Duplicates Query Wizard Find Unmatched Query Wi2ard

OK Cancel

Рис 9 58

Когда вы сделаете выбор, на экране появится следующее окно мастера перекрест­ных запросов (см. рис. 9.60), где вам будет задан вопрос: Which fields' values do you want as row headings? (Значения каких полей вы хотите сделать заголовками строк?). Всего можно указать не более трех полей. Для нашей конкретной задачи в качестве заголовков строк послужат значения поля Название области. Щелкните

Page 196: Access 2000. Проектирование баз данных-OCR

192 Программирование на языке

Crosstab Query Wizard

Which table or quer\ contains the fields you want for the crosstab quen, result'?

To include fields from more than one table, create a query containing all the fields you need and then use thi«= query to make the crosstab query

LMSSO

LLASSP LASSQ

i_LASSR CLHSST

.LRES Ec OPER

_d

J

view

(' Tables Г Си С В th

farnple

...

H t a d e r l T JTML

JHeader2 JHeader3

Cancel Next >

Рис 9 59

Crosstab Query Wizard Which fields values do you want as row heading^

You can select up to three fields

Select fields in the order you want information sorted For example, you could sort and group values by Country and then Region

Available Fields

Виды ЧС Наименование ЧС Дата ЧС Бремя ЧС Дата сообщения Время сообщения Код республики Наименование респус Код области Код население го п/н

J

Selected Fields

Sample H&&/4 1 Название об |Название обла |Назеание обла |НазвгзНИР обг\а ^На Е ани»- "|Ьпз

Header 1 |Header2 |Header3 TOTAL

шшшшшпш^

1 ч

Cancel <Back next >

Рис 9 60

Page 197: Access 2000. Проектирование баз данных-OCR

Перекрестный запрос 193

по кнопке Next, a затем укажите поля (не больше трех), значения которых станут заголовками столбцов В данном случае будет выбрано поле Наименование ЧС После этого вы оказываетесь в следующем oicie мастера (см рис 9 61), где предсто нт ответить еще на один вопрос What nuirber do you want calculated for each column and row intersection? (Что вы хотите вычислить для каждой ячейки, рас­положенной на пересечении столбца и строш?) Вы уже использовали два поля Название области - для заголовков строк, аНаименование ЧС - для заголовков столбцов

Теперь понадобится третья переменная, значения которой можно подсчиты­вать, причем они должны соответствовать .начениям первых двух полей Глав­ное, чтобы это третье указанное поле не имею пропусков, то есть нулевых значе­ний Значит, лучше всего подойдет поле Номер В качестве функции для подсчета числа значений выберите Count (одна из функций групповой обработки данных) Иначе говоря, в конце концов будет определено количество значений поля Но­мер для каждой ячейки, которая находится та пересечении столбца (ЧС опреде­ленного вида) и строки (того или иного региона Российской Федерации) Ска­занное иллюстрирует рис 9 61 Теперь, когдавы подготовили все необходимое для создания запроса, щелкните по кнопке Next

Crosstab Query Wizard 'What number do \ ou want calculated for Fields each colurrn and row intersectiun?

Functions

I For example you cculd calculate the sum of the field Order Amount for each employee (olumn) by ccuntr/ and region (row)

Do /ou want to ^ummari^e ea h row"'

fv Yer in ludi- row sure

ЕидыЧС Дата ЧС Еремя ЧС Дата сообщения Е ремя сообщения h од респуб!ики Наименование республики г- од области У од населенного пунгта Ha j faHUr - С)И НЭ d

First Last Пах Г Tin

tDev Чит чаг

Sample

Название об Наигенованп Наименован!] Н а и м е н о в а ^ Ц

Название ofjiai Count Номер) Название обла! Название облс Название осп:

Cancel ч Езск Next >

Рис 9 6i

В результате на экране появится окно (см рис 9 62), где в формируемый за­прос нужно внести последние уточнения Вэ-первых, мастер спросит вас What do you want to name your Query? (Как вы хэтите назвать ваш запрос'?) В прин­ципе это ваше дело, но мы бы посоветовали тринять имя, которое по умолчанию

7 - 1 1 9

Page 198: Access 2000. Проектирование баз данных-OCR

194 Программирование на языке SQL

Crosstab Query Wizard

What do you want to name your query"-'

|Filel_Oo -.tab

That's all the information the wizard needs to create the query

Do you want to view the quel y, or modify the query design?

(*" \ lew the query

f~ Modify the design

Г Display Help on working "'ith the crosstab query

Cancel ; Back Finish

Рис 9 62

предлагает Access 2000. Filel-Crosstab. Следующий вопрос звучит так: Do you want to view the query or modify the query design? (Вы хотите выполнить запрос или изменить его оформление?). Выберите соответствующую позицию переклю­чателя (sj. Вы твердо настроены выполнять запрос, и дизайн вас не интересует По этой же причине откажитесь от следующего предложения мастера: Display Help on working with the crosstab query (Вывести инструкцию по работе с запро­сом). Теперь остается только щелкнуть по кнопке Finish, и запрос будет запущен на выполнение. А вот дальше в нашем размеренном сюжете возникает неожидан­ная интрига - сообщение: Too many crosstab column headers (489) (В перекрест­ном запросе слишком много заголовков столбцов - 489). Это означает, что даль­нейшее выполнение запроса невозможно (см. рис. 9.63). Озабоченность Access вполне понятна.

Crosstab Query Wizard

i V To° many ciosstab column headers (489)

OK

Рис 9 63

Page 199: Access 2000. Проектирование баз данных-OCR

Перекрестный запрос 195

Фактически вы объявили заголовками столбцов или нолей все наименования ЧС в таблице, кроме их дубликатов, которые система не пропустит (вместе с по­вторяющимися именами таких заголовков было бы даже не 489, а 846). Действи­тельно, многовато. Объяснение здесь простое: при формировании перекрестного запроса вы не вводили каких-либо критериев отбора. Впрочем, при использова­нии мастера перекрестных запросов этого сделать все равно нельзя. Если вы хотите задать такие условия, то нужно сформировать обычный запрос

Ввод условий отбора записей в конструкторе запросов В окне базы данных во вкладке Query откройте ваш перекрестный запрос в режи­ме конструктора (см. рис. 9.64). Теперь надо задать критерии отбора записей. Бу­дем считать, что нас по-прежнему интересует количество ЧС по регионам, но толь­ко если эти ЧС связаны с пожарами. Поэтому введите в запрос условие «пожар*, как показано на рис. 9.65. Если вы отдадите команду на выполнение запроса, то в результате получите таблицу, фрагмент которой приведен на рис. 9.66.

Ы Microsoft Access j File Edit View Insert Quel у Tools Window Help I

с? .:>' © -i lis1 Filel Crosstab : Crosstab Query l - ln lx l

Filel * Номер Виды ЧС Наименован! ДзтаЧС

4 U

-d

1

^

Field Table Total.

Crosstab Sort

Criteria or

Filel Group By Row Headinq

« I . I

Наименование ЧС Filel Group By Column Headinq

Номер Filel Count Value

Total Of Номер Ног* Filel Count Row Headinq

— —

>r Рис 9 64

Предположим, необходимо видоизменить запрос. Нужна справка о числе ЧС по регионам, но теперь нас интересуют не только аварии, связанные с пожарами, но и катастрофы на нефтепромыслах, нефтепроводах и других нефтяных объектах. Кро­ме условия *пожар*, введите еще один критерий отбора - *нефте*, используя схему «ИЛИ». Иными словами, вы запрашиваете число аварий по регионам, в которых про­изошли либо пожары, либо аварии на нефтяных объектах. (Если бы вы применили

v

Page 200: Access 2000. Проектирование баз данных-OCR

196 Программирование на языке SQL

Ы Microsoft Access | File Edit View Insert Query Tools Wirndow Help

IB - У \c'., ik. rv

Щ ]

cf •> i © i? Filel_Crosstab : Crosstab Query

J J

Filel

Номер Виды ЧС Наименовании Дата ЧС zj

• _ | П | Х |

d

^

Field Table; Total'

Сг osstab Soit,

Cntena 01

Назеание области Filel Group 6y Pow Headmq

Наименование ЧС Filel Group Bv Column Heading

Номер Filel Count Value

Total Of Номер: Hof Filel Count Row Heading

— —

"пожар*

Рис 9.65

ш Microsoft Access I File Edit View Insert Format Records Tools Window Help

ШЕ1

fS-^ i -is1 Filel Crosstab : Crosstab Query a

Название области |Total Ot Номе|| Взрыв и пожа| Взрыв и пожа| Лесной пожз.£]

Костромская область Краснодарский край Красноярский край _ Курганская область Курская область Ленинградская область Московская область Мурманская область Нижегородская Новосибирская область Омская область Оренбургская облает}. Орловская область

Rtcuid: н LUP

1 14 5 4 1 7

20 3 1 2 4 1 1

'££"&$&&&. у?2^^-72

-I

Рис. 9.66

Page 201: Access 2000. Проектирование баз данных-OCR

Работа со средой Access 2000 без ее инсталляции 197

схему «И», система Access 2000 стала бы отбирать сведения из регионов, где произо­шли и пожары, и нефтяные катастрофы, а это уже совсем другой блок данных.) Зап­рос будет выглядеть так, как показано на рис. 9.67. Обратите внимание: когда вы по­кидаете ту ячейку в бланке запроса, где было введено первое условие *пожар*, система тут же преобразует его в Like "*пожар* . Результат этого дополненного запроса вы ви­дите на рис. 9.68, где показан тот же фрагмент таблицы, что и в предыдущем случае. Во-первых, среди названий столбцов появились новые заголовки, связанные с нефтя­ной тематикой. Во-вторых, увеличился список регионов; например, добавилась Ма­гаданская область, которой раньше не было в этом перечне.

Ы Microsoft Access j j File Edit View Insert Query l o o Is Window Help

шш • : -> cf ::N ©

is1 FilelCrosstab : Crosstab Query ГЛЕШ 1 Fi le l

Номер Виды ЧС Наименов Дата ЧС

fj ЭНИ(

А J

Field: Table: Total:

Crosstab: Sort'

Criteria: ot:

На:ванне области Filel Group Бу Row Heading

НаименоЕание ЧС Filel Group By Column Heading

Номер Filel Count Value

Total Of Номер: Ног Filel Count Row Heading

— —i

Like "* 'no*ap*" *н1эфте'*

<l 1 ..Г

Рис. 9.67

Итак, в настоящем разделе мы подробно рассмотрели структуру перекрестного запроса и уяснили для себя существенное правило: чтобы обработать группу за­писей и получить справку по множеству объектов, надо сначала четко определить само это множество. В данном конкретном примере нам необходимо суммарное число ЧС определенного вида по разным российским регионам. Значит, в первую очередь надо получить такие сведения по каждому из этих регионов. В ряде случа­ев для решения указанной задачи придется создать запрос на выборку.

Работа со средой Access 2000 без ее инсталляции Подобная постановка вопроса может показаться несколько странной, однако она имеет определенные основания. Предположим, разработчик сначала создал базу

Page 202: Access 2000. Проектирование баз данных-OCR

198 Программирование на языке SQL

\Ш Microsoft Access ] File Edit View Insert Format Records Tools Window

j M - H j # & ! ? i • t V *" ' £1 51 j is1 Filel_Crosstab : Crosstab Query

Re

Название области |Total Of Номв|| Авария на Костромская область 1 Краснодарский край 14 Красноярский край 5 Курганская область 4 Курская область 1 Ленинградская область 7 Магаданская область 1 Московская область 20 Мурманская область 3 Нижегородская 1 Новосибирская область 2 Омская область 4 Оренбургская область 1 ~ cord и | • | | 1 » | и | - * | of 43

Help

ъъ м нвфт<| Авария на

А1

- H M _ b l x l

• ж © -^. г: шшпшш нафтв| Авэртл]

1

J

^

-I

РИС 9 68

данных в программной среде Access 2000, а затем установил эту БД иа другой ло­кальный компьютер, где не инсталлирована ни Access 2000, ни даже пакет Microsoft Office. Возникает естественный вопрос: может ли пользователь работать на таком компьютере с созданной базой данных? Оказывается, да, и в настоящем разделе мы расскажем, как этого добиться.

В главе 8 уже говорилось, что в большинстве СУБД использование языка SQL фактически является правилом. Наличие общепринятого языка позволяет стан­дартизировать работу приложений с источниками данных - различными СУБД. В Windows такую возможность обеспечивает Open Data Base Connectivity (ODBC) -стандартный набор функций, помогающих обрабатывать информацию на серве­рах баз данных SQL. Именно ODBC обеспечивает различным программам доступ к одному и тому же источнику сведений.

Принцип действия ODBC состоит в следующем. Чтобы то или иное приложе­ние могло воспользоваться информацией из базы данных какой-либо СУБД, не­обходимо установить драйвер ODBC для баз данных конкретной СУБД. Для каж­дой СУБД должен быть установлен свой драйвер. Папка, где устанавливается этот драйвер, обычно так и называется - ODBC - и устанавливается вместе с загруз­кой Windows. Драйвер ODBC - это динамически связываемая библиотека со стандартным интерфейсом, которая обеспечивает доступ к базам данных в опре­деленном формате. Из любого приложения пользователь может легко связаться с любым из установленных драйверов ODBC и получить доступ к информации в базе данных, даже если СУБД, где была создана эта база, не инсталлирована на пользовательском компьютере.

Page 203: Access 2000. Проектирование баз данных-OCR

Работа со средой Access 2000 без ее инсталляции 199

В составе пакета Microsoft Office, начиная с самой первой версии, есть програм­ма MS Query, обеспечивающая доступ к любым данным, для которых установле­ны драйверы ODBC. Отметим, что MS Query имеет собственный интерфейс н может функционировать отдельно от Microsoft Office. Мы воспользуемся про­граммой MS Query, взятой из ранних, русифицированных редакций Microsoft Office, поэтому в настоящем разделе диалоговые окна будут выводиться на рус­ском языке.

Рассмотрим работу с MS Query на конкретных примерах. Сначала откройте папку MS Query, а в ней запустите программу Msqry32.exe

(см. рис. 9.69). На экране появится основное диалоговое окно программы MS Query, показанное на рис. 9.70.

|Cfc MS query j Address | _ J ram Files\Common Files\Microsoft Shared\MSquery j j Fil*

. a li id is Up Cut Copy Paste

MSquery

M s q r y 3 2 . e K e Прило•ение

Изменен 1 0 / 2 8 / 1 9 9 5 00.00 J

1Й Customer cdx -3| Customer dbf

UH Employee cdx -3| Employee dbf - Mscreate drr

" Msqrv32 aid ^ M s a r v 3 2 hip Ш Orddtail cdx

J | Orddtail dbf ( Й Orders cdx P ] Orders dbf (fa Product cdx Ci] Product dbf %1 0rvint32 dll Щ Supplier cdx yi] Supplier dbf '•*] запрос ! arv

J643KE \M M y Computer

|_ |п |х |

»И1 »

.4

Рис 9 69

В нем следует воспользоваться кнопкой (тЩ (Открыть запрос). Так вы начнете формировать запрос на выборку данных из БД в Access 2000, не инсталлируя саму систему Access. Чтобы убедиться в этом, проведите небольшой эксперимент. Пере­несите в какую-нибудь другую папку программу, которая запускает Access 2000, -Msaccess.exe. Тем самым вы блокируете запуск СУБД.

Итак, щелкнув по кнопке Открыть запрос, вы откроете окно Выбор источника данных (см. рис. 9.71) Здесь можно выбрать опцию MS Access Database, а затем щелкнуть по клавише Использовать. Однако сначала откройте окно Источники данных ODBC, показанное на рис. 9.72.

Здесь приведен перечень тех СУБД и вообще файлов других форматов, к кото­рым можно получить доступ с помощью ODBC. Система Access 2000 далеко не един­ственная в этом списке. Теперь щелкните по кнопке ОК. После обычной Windows-процедуры поиска нужного файла вы открываете базу данных dbl.mdb и видите на экране знакомое окно Добавить таблицу (см. рис. 9.73).

Выберите и добавьте две таблицы. Фирмы и Страны. Данные из этих таблиц появятся в бланке запроса почти в том же виде, в каком они представлены в режиме

Page 204: Access 2000. Проектирование баз данных-OCR

200 Прогроммирование на языке SQL

. Microsoft Query №ГП Файл

ШШШ ИЗ ШШ Ш 0 Z 3 ШШ ШИЗ LM3

" T ' t - r "|"^ЩЧЙСЛ.Г:У Г

Рис 9 70

Выбор источника данных Доступные источники данных Использовать! MS Access Database • admin

Отмена

другие

Уд а пить

Источники данных ODBC

£ведите источник данных

IMS Access Database

'Visual FoxPro Tablei Visual FoxPio Database FoxPro Files Paradox Files Text Files MS Access 97 Database MS Access Database I d

Рис 9 71 OK

Создать

Отмена

Удалить

Рис 9 72

конструктора (см. рис. 9.74). Если вы не установите явную связь между двумя таб­лицами по коду страны, то в результате будет выведен полный набор имеющихся значений: все фирмы и страны независимо от того, в какой стране находится та или иная фирма. Чтобы упорядочить информацию, лучше обозначить связь меж­ду таблицами, что вы и видите на рис. 9.74. Если потребуется перейти из этого

Page 205: Access 2000. Проектирование баз данных-OCR

Работа со средой Access 2000 без ее инсталляции 201

Добавить таблицу Table Менеджер *] Назначение Приборы для измерения кислотнс Приборы представленные на рын Словарь стран Страны Страны Query Типы приборов

Лобаеить

Закрыть

'Т ирмы в России У .Опции

И Database ]c \Мои документы \E_jJ

Рис 9 73

1 •"- Microsoft Query Файл Правка Просмотр Формат Таблица Критерий Записи Окно

]дЕ]

ш и и шщ га игзп шщ i щ №? "•Запрос! пнтзп

Страны

Gen_npHMe43h s_Generation s_GUID s_Lmeage Kga ;

Фирмы Андрее -Адрес 2 Код страны Код Фирмы Название Фир| Примечания J

Код Фирмы | Название Фирмы | Примечания Страна

ишззписьи „..„иац Для показа и

ГЕОХИ РАН Sarlm Automation TAAG Milton Roy Company SYR US Systems НПП "ЭК0НИКС" Петербургский инстит ОКБ ТЕСТ Фирмы "Ан AD 'ЭКРОС"

"л1 J

Россия ФИНЛЯНДИЯ Португалия Страна не указана Страна не указана Россия Россия Россия Россия

>г «ггерия отбора выбери "Г~ПШУГ^Щ\

Рис 9 74

режима в режим таблицы, щелкните по кнопке f^j (Показать/спрятать таблицы). Режим таблицы показан на рис. 9.75.

Теперь предположим, что нужен список фирм, работающих в России. Иными словами, вы собираетесь создать запрос на выборку. Для этого воспользуйтесь кнопкой \$\ (Показать/спрятать критерии). На экране появится бланк запроса с перечнем условий отбора. Задайте в поле Страна критерий Россия, как показано

Page 206: Access 2000. Проектирование баз данных-OCR

202 Программирование на языке SQL

Microsoft Query TrJRI Файл Праька Просмотр Формат Таблица Критерий Записи Окно 2.

•Запрос! ЕШЗ Страны

s_GeneiaNon s_GUIO o_Lineage Код Примечания Страна

Фирмы .Адрес J Адрес 2 Код страны Код Фирмы Название фир|_ Примечания

Попе Значение

и пи

Страна Россия 1

Код Фирмы Название Фирмы ] Примечания Страна

ft 1«Н1 Запись И "ТЛмТ

ГЕОХИ РАН Sarlin Aufomofion TAAG

_Mil l r ,n Rr. l i Г г . т г .л ,

Россия Финляндия Португалия

• г Готово ЧИСЛ I

Рис. 9.75

на рис. 9.76. Затем, как обычно, с помощью кнопки j l отправьте запрос на выпол­нение. (Отметим только, что в данном случае знакомая вам кнопка называется иначе - Запросить сейчас.) Результирующая таблица, которая содержит отобран­ные записи, приведена на рис. 9.77. Сохраните запрос, как делали это раньше. Те­перь его можно вызвать и реализовать посредством кнопки [eg] (Вызвать запрос). И последнее: если вы щелкнете по кнопке |juj (Показать SQL), то получите текст запроса на языке SQL.

Таким образом, вы вошли в базу данных системы Access 2000 с помощью драй­вера ODBC и получили возможность нормально работать. Примечательно, что вы не инсталлировали саму систему, но получили почти полную иллюзию того, что находитесь именно в ней.

Резюме 1. Главной «специальностью» языка SQL является конструирование запросов

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

2. Основные типы запросов с использованием SQL: - select query (запрос на выборку); - make-table query (запрос на создание таблицы) - создает новую таблицу

па основе данных, которые уже размещены в одной или нескольких таб­лицах;

Page 207: Access 2000. Проектирование баз данных-OCR

Резюме 203

• " - M i c r o s o f t Q u e r y

Фа

I i i n Правка Просмотр

]{ЩЩ N Ф "•Запрос!

Название Фирмы | YSl incorporated Cole-Parmei Internatioric Alltech SEMSORTECHNIKMEI ,AMEL Instrument ОАО "ЦЕ-ет" Нефть-Газ-Начка НПП 'ЭКОНИКС" ЭКОХЕЛП ИНСТРУМЕ АО 'ЭКРОС" Петербургский инспгг ОКБ ТЕСТ фирмы "Ан. ГЕОХИ РАН LEEMAN LABS Sailin Automation DATA LINK Instruments Фирма не указана Wilks Enterprise. Inc FCI Envnonrnental Milton Roy Company

И Ш З а п м с ь П IMW1 <

Ф о р м а т

O U m Таблица Критерий Записи Огмо 9

йи \ш [ш ш Примечания

Для показа и правки критерия отбора выберите

1 Cij из 04 05 06 06 06 06 06 06 06 06 07 08 09 01 01 01 01

Код

J Просмотр К 1

| Примечания

щ> fjr ":

L ^ H J n l x l

L^LB.Inlxl 1 O p a i ^ i . USA _ j USA USA Германия Италия Россия Россия Россия Россия Россия Россия Россия Россия США Финляндия Франция Страна не ч.к; Страна не чк< Страна не чк; Страна не чк< ,

,числ [ Г~

Рис. 9.76

- delete query (запрос на удаление) - удаляет все записи из одной или не­скольких таблиц на основании критериев, заданных пользователем;

- append query (запрос на присоединение) - добавляет целые записи или только указанные поля в одну или больше таблиц;

- update query (запрос на обновление) - изменяет данные в существующих таблицах на основании информации в окне конструктора.

3. Запросы могут создаваться как с помощью конструктора (Query Design), так и посредством мастера (Query Wizard). На наш взгляд, конструктор удобнее: во-первых, его операции оформляются более наглядно, во-вторых, из конструктора легко переходить к инструкциям в форме SQL и наоборот. Тем не менее, показаны и примеры построения запроса с использованием масте­ра запросов.

4. Возможна и третья форма представления запроса - инструкции SQL. Меж­ду запросом, сформированным посредством конструктора, и инструкцией SQL существует жесткая и однозначная связь.

5. В главе были подробно рассмотрены конкретные примеры формирования запросов различных типов: - запросы с использованием групповых операций; - запросы с дополнительными условиями; - запросы с параметрами;

Page 208: Access 2000. Проектирование баз данных-OCR

204 Программирование на языке SQL

1 1 Microsoft Query ФйГт ПраЕка Просмотр Формат T&6J

Ю 1 N mm и R 1 "«Запрос!

• Название Фирмы | Примечания

ОАО "Цвет" Нефть-Газ Начка | нпп 'зконикс" ; ЭКОХЕЛП ИНСТРУМЕ. АО 'ЭКРОС" Петербчргский ннстит ОКБ ТЕСТ фирмы "Ан ГЕОХИ РАН

Wi l l Запись 11 \ШП i l

Для показа и правки критерия отбора выберите

тнца Критср

1 Код 1 06 06 06 06 06 06 06

1 Просмотр К. |

й Записи GKHO 2.

1

Г !

Примечания

Г "{""

н —'

в

|п|ж|

п|х| 1 Страна Россия Россия Россия Россия Россия Россия Россия Россия

|числ Г • J

г • -1

Рис 9.77

SELECT DISTINCT Фирмы Адрес. Фирмы 'Адрес 2", фирмы Код страны". Фирмы "Код Фирмы', Фирмы 'Название Фирмы'. Фирмы Примечания. Страны Страна FROM 'с \Моидокументы\Банки данными"!'Страны Страны, 'с \Моидокументы\Банки данны>.\с1Ы' Фирмы Фирмы w/HERE Фирмы 'Код страны' = Страны Код AND ((Страны Страна='Россия')|

Отмена

d

Рис 9 78

- запросы на создание таблицы; - запросы на добавление записей в таблицу; - запросы на удаление записей; - запросы на обновление записей; - перекрестные запросы, а также сложные запросы, формируемые на основе перечисленных. Поскольку в большинстве СУБД использование языка SQL фактически является правилом, наличие общепринятого языка позволяет стандартизи­ровать работу приложений с источниками данных - различными СУБД. В Windows такую возможность обеспечивает Open Data Base Connectivity (ODBC) - стандартный набор функций, помогающих обрабатывать инфор­мацию на серверах баз данных SQL. Именно ODBC обеспечивает различ­ным программам доступ к одному и тому же источнику сведений - напри­мер, СУБД, не требуя инсталляции этой СУБД. Так, в частности, возможны доступ и работа с данными, сформированными в Access, без ее инсталляции. В главе показан пример реализации такой возможности.

Page 209: Access 2000. Проектирование баз данных-OCR

Глава X Программирование

с использованием макросов

• Функции макросов • Использование макросов для обработки событий • Использование макроса

при выполнении сложного запроса

Функции макросов Макросы бывают двух видов: единичные, то есть состоящие из одной макроко­манды, и сложные. В последнем случае макрос включает несколько последова­тельно выполняемых макрокоманд, объединенных общим именем. Каждая мак­рокоманда осуществляет определенную операцию: установить значения, открыть/ закрыть таблицу, найти запись и т.д. Как правило, макрос автоматически запуска­ется при наступлении какого-либо события: например, пользователь щелкает той или иной кнопкой мыши, открывает таблицу, переходит от одного поля к другому и т.п. Чтобы запустить макрос, надо указать его имя. Если макрос запускается в ответ на событие, он должен быть присоединен к соответствующему свойству формы, отчета и т.д. (см. главу 4, например, раздел «Заголовок формы»). Макросы могут использоваться для выполнения довольно широкого диапазона операций. Например, макросы позволяют:

Page 210: Access 2000. Проектирование баз данных-OCR

206 Программирование с использованием макросов

• открывать отчет для просмотра или печати; • переходить от одного элемента управления (записи, поля) к другому; Q устанавливать свойства объекта; • выполнять разнообразные команды и т.д.

Использование макросов для обработки событий Наиболее часто макросы применяются для обработки событий. При этом макрос может функционировать и как самостоятельная программа, и в составе процеду­ры VBA (Visual Basic for Applications). Первый вариант иы рассмотрим чуть ниже, а второй станет предметом нашего внимания в следующей главе.

Понятие события Событие - это любое действие пользователя; щелчок кнопкой мыши, открытие формы и т.д. Событие может также инициироваться каким-либо оператором Visual Basic пли самой системой Access. События связываются с формами, отче­тами, разделами форм и отчетов, а также с элементами управления форм - в част­ности, с полями. Откликом на событие может быть выполнение процедуры об­работки событий на языке VBA (о чем речь пойдет Б следующей главе) или макроса.

Что такое обработка события? Например, давайте посмотрим, как выглядят свойства поля формы (пусть это будет форма Страны). Откроем ее в режиме конструктора (см. рис. 10.1).

Надо открыть также список событий, предусмотренных для какого-либо поля данной формы (например, для поля Код). Для этого следует либо дважды щелк­нуть левой кнопкой мыши в пределах этого поля, либо Щелкнуть там же правой кнопкой мыши и в появившемся контекстном меню выбрать опцию Properties (Свойства). Когда на экране возникнет одноименное окно, откройте в нем вклад­ку Event (Событие). В результате будет выведен искомый список возможных со­бытий (см. рис. 10.2).

Событие возникает для этого поля в следующих случаях: • при обновлении поля (до или после операции); • при открытии/закрытии поля; • при активизации/дезактивизации поля, когда оно получает или теряет фокус; • при использовании кнопок мыши (щелчок, двойной щелчок, движение

кнопки вверх или вниз); • при использовании клавиатурных клавиш (щелчок по клавише, ее движе­

ние вверх или вниз); • при перемещении курсора. Для другого элемента управления (например, для кнопки, текстового поля и т.д.)

перечень событий, предусматриваемых в Access 2000, может быть несколько иным, но тоже достаточно длинным.

Page 211: Access 2000. Проектирование баз данных-OCR

Использование макросов для обработки событий 207

Ш Microsoft Access File Edit View In:«tt Format Tools Window Help

IБ Страны: Form

• Form Header * Detail

Код

Стран

Дрш Ш-ЯЭг- \ЛЯ

i't o n

лрана

• *

Примечания

Рис 10 1

Ml • 10 • i • И i I 2 - 1 -

> г .

\\£ Text Box: Код Format ) Data Before Update . . After Update . .

On Exit

On Lost Focus . . On Click On 0Ы Click . . On Mouse Down . On Mouse Move .

On Key Up On Key Press . . ,

Event | other |

I « Щ

\

f-'-ffj;

Щх\ Ш "~"""* ш

\\ ) ' 1

Ни

1 |_ !

1 •• 1

Рис JO 2

Последовательности событий Разработчик, который встраивает в систему определенные реакции программы на действия пользователя, должен учитывать-следующее. Каждая отдельная опера­ция (допустим, переход от одного элемента управления к другому) может повлечь

Page 212: Access 2000. Проектирование баз данных-OCR

208 Программирование с использованием макросов

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

Порядок событий элементов управления в формах События элемента управления возник ают в форме при переводе фокуса на элемент управления, а также при изменении илш обновлении данных в этом элементе.

Перевод фокуса на элемент управления Так, при переходе фокуса в форму, в которой выводится один или несколько ак­тивных элементов управления, или при переходе к другому элементу управления в этой же форме возникают события On Enter (Вход) и On Get Focus (Получение фокуса^ в следующем порядке:

On Enter =» On Get Focus. Названные события возникают также после того, как пользователь откроет фор­му, то есть после операций Open (Открытие), Activate (Включение), Current (Те­кущая запись). Последовательность в данном случае такова:

Open (для формы) => Activate (для формы) Current (для формы) => On Enter (для элемента управления) => On Get Focus (для элемента управления).

Теперь рассмотрим иную ситуацию: элемент управления теряет фокус. Напри­мер, форма, в которой активизируются один или несколько элементов управле­ния, закрывается или пользователь п ереходит к другому элементу управления в той же форме. В таком случае возникают события:

On Exit =» On Lost Focus. Когда пользователь закрывает форму, события On Exit (Выход) и On Lost Focus (По­теря фокуса) возникают перед операциями, связанными с этим закрытием: Unload (Выгрузка), Deactivate (Отключение), Close (Закрытие). Порядок будет таким:

On Exit (для элемента управления) => On Lost Focus (для элемента управле­ния) => Unload (для формы) => Deactivate (для формы) => Close (для формы).

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

Before Update =» After Update. События On Exit и On Lost Focus для изменяемого элемента управления возни­кают после событий Before Update и A fter Update:

Before Update =» After Update => Oni Exit =» Lost Focus. Если пользователь модифицирует текст, который находится в поле, или изменяет содержимое поля со списком, то возн икает событие On Change (Изменение).

Page 213: Access 2000. Проектирование баз данных-OCR

Использование макросов для обработки событий 209

Отметим, что оно происходит при лнобом изменении содержимого элемента управления, причем до перехода к другому элементу управления или к другой за­писи (следовательно, до возникновени:я событий Before Update и After Update). Если курсор находится в поле, то щелшок по любой клавише, соответствующей символу, вызывает следующие событиям

On Key Down (Клавиша вниз) => O n Key Press (Нажать клавишу) => On Change (Изменение) => On Key Up ((Клавиша вверх). Событие Not in List (Отсутствие в сшиске) возникает, когда пользователь вводит

в поле со списком значение, отсутствующее в этом списке, а затем пытается перей­ти к другому элементу управления или ж другой записи. Событие Not in List проис­ходит также после событий клавиатуры ш события On Change (Изменение) для поля со списком, но до возникновения любых «событий в элементе управления или формы. Если для свойства поля со списком Limit. To List (Ограничиться списком) задано зна­чение Да, то сразу после Not in List возшикает событие формы Error (Ошибка):

On Key Down => On Key Press => Om Change => On Key Up => Not in List => Error.

Порядок событий записи в фор(ме События записи возникают в форме в (следующих случаях:

• при переводе фокуса на запись; U при обновлении содержимого загписи; • при удалении существующей зашиси/записей; • при создании новой записи.

Перемещение фокуса по записям и обшовление содержимого записей При переводе фокуса на запись, существующую в форме, при вводе новых или изменении существующих данных в защиси, а также при переходе к другой запи­си той же формы возникает такая последовательность событий:

Current (Текущая запись) => Before lUpdate (До обновления) => After Update (После обновления) => Current (Текущая запись). При выходе из измененной записи, шо до входа в новую запись возникают со­

бытия Exit (Выход) и On Lost Focus (Шотеря фокуса). Они происходят для того последнего элемента управления, на котором находился фокус. Эти события воз­никают после событий формы Before Update и After Update:

Before Update (для формы) => After lUpdate (для формы) => Exit (для элемента управления) => On Lost Focus (для элемента управления) => Current (для формы). При переводе фокуса с одного элемента управления на другой возникают со­

бытия для каждого из этих элементов. Иапример, возможны такие последователь­ности событий:

• открытие формы и изменение дажных в элементе управления: Current (для формы) => On Enter (для элемента управления) => On Get Focus (для элемента управления)) => Before Update (для элемента управле­ния) => After Update (для элемента управления);

Page 214: Access 2000. Проектирование баз данных-OCR

210 Программирование с использованием макросов

Q перевод фокуса на другой элемент управления: On Enter (для элемента управления 1) => On Lost Focus (для элемента управления 1) => On Enter (для элемента управления 2) => On Get Focus (для элемента управления 2);

• перевод фокуса на другую запись: Before Update (для формы) => After Update (для формы) => Exit (для эле­мента управления 2) => On Lost Focus (для элемента управления 2) => Current (для формы).

Удаление записей Когда пользователь удаляет запись, в форме возникают следующие события:

Delete (Удаление) =• Before Del Confirm (До подтверждения удаления) => After Del Confirm (После подтверждения удаления). Перед этим Microsoft Access обязательно выводит диалоговое окно, предлагая под­

твердить удаление. Если пользователь отменяет событие Delete, то события Before Del Confirm и After Del Confirm не возникают и диалоговое окно не выводится.

Создание новой записи Если пользователь переводит фокус на новую (пустую) запись в форме или со­здает новую запись, вводя символы с клавиатуры, то события возникают в следу­ющем порядке:

Current (для формы) => On Enter (для элемента управления) => On Get Focus (для элемента управления) => Before Insert (До вставки - для формы) => After Insert (После вставки - для формы). Отметим, что события Before Update и After Update для элементов управле­

ние в форме и для новой записи возншсают после события Before Insert, но до события After Insert.

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

События мыши возникают для форм, разделов форм и элементов управления в фюрмах при щелчке по кнопке мыши, если в этот момент ее указатель установ­лен на форме, разделе формы или элементе управления.

События клавиатуры Естчи фокус находится на элементе управления формы, а пользователь нажимает и отпускает клавишу или выполняет макрокоманду Send Keys (Команды клавиа­туры), имитирующую нажатие клавиши, возникает следующая цепочка событий:

Key Down (Клавиша вниз) => Key Press (Нажать клавишу) => Key Up (Клави-tna вверх). При нажатии или отпускании клавиши, а также при выполнении клавиатур­

ной команды, соответствующей символу из набора ANSI, всегда возникают собы­тия! Key Down, Key Press и Key Up. Если пользователь нажимает и удерживает клавишу ANSI, возникает иная последовательность событий:

Page 215: Access 2000. Проектирование баз данных-OCR

Использование макросов для обработки событий 211

Key Down => Key Press => Key Down => Key Press и т.д. Это продолжается до тех пор, пока пользователь не отпустит клавишу; тогда

произойдет событие Key Up. При нажатии и отпускании клавиши, которая не является клавишей ANSI, воз­

никают события: Key Down => Key Up. Если пользователь нажимает и удержива­ет такую клавишу, то до ее отпускания возникает и повторяется событие Key Down, а при отпускании происходит событие Key Up.

Если при нажатии той или иной клавиши предусмотрено другое событие эле­мента управления, то это событие возникает после Key Press, но до Key Up. На­пример, если нажатие клавиши приводит к изменению текста в поле, то последо­вательность событий такова:

Key Down (Клавиша вниз) => Key Press (Нажать клавишу) => Change (Изме­нение) => Key Up (Клавиша вверх) Если нажатие клавиши вызывает перевод фокуса с одного элемента управле­

ния на другой, то событие Key Down возникает для первого элемента управле­ния, а события Key Press и Key Up - для второго. Например, если пользователь изменяет данные в элементе управления и нажимает клавишу TAB для перехода к следующему элементу, то возникают следующие события:

• для первого элемента управления: Key Down (Клавиша вниз) => Before Update (До обновления) => After Update (После обновления) => Exit (Выход) => On Lost Focus (Потеря фокуса);

• для второго элемента управления: On Enter (Вход) => On Get Focus (Получение фокуса) =* Key Press (Нажать клавишу) => Key Up (Клавиша вверх).

События мыши Если указатель мыши установлен на элементе управления формы, а пользователь нажимает и отпускает кнопку мыши, то возникает следующая цепочка событий для элемента управления:

On Mouse Down (Кнопка вниз) => On Mouse Up (Кнопка вверх) => Click (Щелк­нуть по кнопке). Если фокус находится на одном элементе управления, а пользователь устанав­

ливает указатель мыши на другом и щелкает ее кнопкой, то возникают следую­щие события:

• для первого элемента управления: On Exit (Выход) => On Lost Focus (Потеря фокуса);

• для второго элемента управления: On Enter (Вход) => On Get Focus (Получение фокуса) => On Mouse Down (Кнопка вниз) => On Mouse Up (Кнопка вверх) => Click (Щелкнуть по кнопке).

Если пользователь устанавливает указатель мыши на элементе управления в другой записи и щелкает кнопкой мыши, то для формы событие Current (Теку­щая запись) возникает до события On Enter (Вход) для элемента управления.

Двойной щелчок по кнопке мыши приводит к возникновению двух событий: Dbl Click (Дважды щелкнуть по кнопке) и Click (Щелкнуть по кнопке). Например,

Page 216: Access 2000. Проектирование баз данных-OCR

212 Программирование с использованием макросов

если указатель установлен на элементе управления, который не является кноп­кой, то двойной щелчок кнопкой мыши вызывает следующую цепочку событий для элемента управления:

On Mouse Down (Кнопка вниз) => On Mouse Up (Кнопка вверх) => Click (Щелк­нуть по кнопке) =» Dbl Click (Дважды щелкнуть по кнопке) =* On Mouse Up (Кнопка вверх). При двойном щелчке кнопкой мыши на элементе управления, который являет­

ся кнопкой, эти события возникают после второго события Click. Событие Mouse Move (Перемещение указателя мыши) для формы, раздела или

элемента управления происходит при перемещении указателя соответственно по форме, разделу или элементу управления. Это событие не зависит от других со­бытий мыши.

Порядок событий для отчета и разделов отчета События для отчета и разделов отчета возникают, когда пользователь открывает отчет для печати или предварительного просмотра либо закрывает отчет.

События отчета При открытии отчета для печати или предварительного просмотра и последую­щем закрытии отчета (вариант - при переходе в другое окно Microsoft Access) со­бытия происходят в следующем порядке:

Open (Открытие) => Activate (Включение) => Deactivate (Отключение) => Close (Закрытие). При переходе из одного окна открытого отчета в другое возникает событие

Deactivate для первого отчета и Activate - для второго: Deactivate (для отчета 1) => Activate (для отчета 2). Событие Deactivate отчета происходит также при переходе из окна отчета в дру­

гое окно Microsoft Access. Однако Deactivate не возникает при переходе в диало­говое окно, в окно формы, где установлено значение Да для свойства Pop Up (Всплывающее окно), или в окно другого приложения.

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

События разделов отчета Если отчет открывается для печати или предварительного просмотра, события разделов отчета Format (Форматирование) и Print (Печать) возникают после со­бытий отчета Open и Activate, но до событий отчета Deactivate и Close. Последо­вательность будет такой:

Open (для отчета) => Activate (для отчета) => Format (для раздела отчета) => Print (для раздела отчета) => Deactivate (для отчета) => Close (для отчета).

Page 217: Access 2000. Проектирование баз данных-OCR

Использование макросов для обработки событий 213

Кроме того, либо на стадии форматирования отчета, либо по завершении форма­тирования, но до наступления события Print могут возникнуть следующие события:

• Retreat (Возврат) - происходит при возвращении в предыдущий раздел от­чета на стадии его форматирования;

a No Data (Отсутствие данных) - возникает при отсутствии записей в отчете; • Page (Страница) - возникает, когда отчет отформатирован, но еще не начал

печататься. Вы можете использовать данное событие, чтобы изменить офор­мление отчета для печати.

Как видите, событий много, и они довольно разнообразны. Это делает объекты базы данных и элементы управления очень чувствительными к любым действиям пользователя и к внутренним изменениям, которые происходят в БД. Зато такой набор событий обеспечивает гибкую реакцию программы практически на каждое уточнение, вносимое в базу данных.

Обратите внимание на кнопки, которые расположены справа от каждого собы­тия в таблице свойств элемента управления. Щелкнув по стрелке прокрутки, вы откроете список имеющихся макросов и сможете подключить к обработке собы­тия любой из них. Кнопка ^ J позволяет активизировать процедуру обработки со­бытия на языке VBA. Об этом речь пойдет в следующей главе.

Автоматический перевод фокуса при помощи макроса Конкретная задача, которую нам надо решить, заключается в следующем. Как было показано в главе 4, вы используем форму для ввода новых записей. Напом­ним, что в качестве примера рассматривается форма Страны (см. рис. 10.1). Когда вы внесем новые данные в первое поле (скажем, в поле Код), курсор по умолча­нию останется в нем. Однако нам нужно, чтобы он переместился в следующее поле - Страна, потому что после ввода кода надо указать название страны. Кур­сор придется переводить вручную. Конечно, это не бог весть какая сложная опе­рация, но когда таких операций много, пользователь испытывает дополнительные неудобства. Если применять при обработке событий макросы, подобных непри­ятностей легко избежать.

Итак, автоматический переход курсора (например, из поля Код в поле Страна) должен произойти, когда вы завершим ввод информации в поле Код. Следова­тельно, макрос в данном случае стоит привязать к событию After Update (После обновления). Однако для поля Код принята несколько другая схема обработки -с помощью операторов VBA. Подробно она рассматривается в главе 11, но вкрат­це сводится к следующему. Когда форма Страны открывается, она изначально го­това к вводу новой записи: в поле Код автоматически устанавливается ее поряд­ковый номер, а остальные поля пусты. Если пользователь собирается не вводить новую запись, а заглянуть в какую-либо из старых, он может сделать это с помо­щью стрелки прокрутки в этом поле. Но программа не знает заранее, какая запись понадобится пользователю для просмотра, поэтому форма по умолчанию на­строена на то, что наиболее вероятно: она будет открыта для ввода новой запи­си. Таким образом, нет необходимости вручную вводить значение в поле Код: при открытии формы новый код появляется автоматически. Значит, переход к следующему полю также можно связать с событием Open (Открытие) в окне

Page 218: Access 2000. Проектирование баз данных-OCR

214 Программирование с использованием макросов

свойств формы. Но возможен и другой путь: соотнести такой переход с событием On Get Focus для поля Код в окне его свойств. Мы выберем второй вариант.

Чтобы реализовать его, нужно создать команду перехода к следующему элемен­ту управления - полю. Используем для этого макрос.

В окне базы данных откройте вкладку Macros (Макросы) и щелкните по кноп­ке 'inNew|. На экране появится окно конструктора макросов (см. рис. 10.3). В столб­це Action (Макрокоманда) стрелкой прокрутки надо вызвать выпадающее меню и в нем выбрать нужную команду - в нашем случае Go To Control (К элементу управления). (Использовать стрелку прокрутки не обязательно: введите несколь­ко первых букв названия макрокоманды, a Access 2000 допишет его. Но для этого вы должны точно знать имя макрокоманды, что бывает далеко не всегда.) В поле Comment (Примечания) вы при желании можете включить любые комментарии к макрокоманде. В поле Action Arguments (Аргументы макрокоманды) для каж­дой из них вводятся специфические параметры. Для выбранной нами макро­команды Go To Control требуется указать только название того элемента управ­ления, к которому надо перейти, - Control Name. Естественно, для других макрокоманд аргументы могут быть значительно сложнее, в чем вы убедитесь дальше. Итак, введите в поле Control Name имя следующего поля формы, в кото­рое необходимо перейти, - Страна. После этого макрос в окне конструктора можно назвать (по умолчанию предлагается имя Масго2) и закрыть.

шш Ы Microsoft Access File Edit View Insert Run Tool?; Window Help

! У В. I За (р, ' 1 й ^ ^ ! ^ © д - (3 -* Macro2 : Macro шш т Action

GoToControll GoToControl GoToPage GoToRecord Hourglass Maximize Minimize MoveSize MsgBox

Control Name

Comment

Action Arguments

Страна

g

j

Moves the focus to a specified field or

control on the active datasheet or form. Press Fl for help on

this achon

UJ

Рис. 10.3

Page 219: Access 2000. Проектирование баз данных-OCR

Использование макроса при выполнении сложного запроса 215

Е Text Box: Код Format | Data Esent | other |

Before Update Alter Update On Change On Enter On Exit On Got Focus Д Ш Я З On Lost Focus On Click On Dbl Click "~ ~ On Mouse Down On Mouse Move _ _ _ On Mouse Up On Key Down _ _ _ _ On Key Up On Key Press

. All

JP--1

H I

Рис. ]QM

Теперь надо связать созданный макрос с событием On Get Focus (Получение фокуса). В окне поля Код (см. рис. 10.2) щеелкните по стрелке прокрутки в поле свойства On Get Focus. В выпадающем мееню снова выберите макрос Масго2 (см. рис. 10.4).

Этого достаточно, чтобы установить свяязь созданного макроса с событием. Окно, где она задана, надо сохранить.

Точно так же задается автоматический пере;ход от одного поля к другому и в этой, и во всех остальных формах. Единственная огсоворка: как уже отмечалось, в этих слу­чаях макрос нужно связать с другим свойствош - After Update (После обновления).

Использование макроса при выполнении сложного запроса Как вы помните, в предыдущей главе описывзалось создание объединенной выбор­ки записей из разнородных файлов, которые шмели различную структуру, были раз­работаны в различных организациях и в различных программных средах, но инте­грированы в единый банк данных в программной среде Access 2000. Выполнять задуманную операцию пришлось в два этапаа: сначала формировать запрос на со­здание таблицы Выборка1, куда вошли записей из одного файла, а затем генериро­вать запрос на добавление данных в эту таблшцу из другого файла. Сейчас с помо­щью макроса вы можем объединить оба этапа (работы, упростив решение задачи. Мы будем по-прежнему использовать запросы, но > организуем их в макропоследователь­ность, которая имеет название и выполняется^ как целостная операция.

Прежде чем показать, как это делается, прооизведем чисто техническое, вспомо­гательное действие - переименуем запросы,, которые нам понадобятся. Запросу Query7 дадим название Запрос на создание таблицы, а запросу Query8 - Запрос на добавление записей. Такое переименовашие нужно лишь для того, чтобы при объединении запросов их новые названия шаглядно свидетельствовали о функ­ции каждой части созданного макроса.

Page 220: Access 2000. Проектирование баз данных-OCR

216 Программирование с использованием макросов

Ы Microsoft Access File Edit View Insert Run Tools Window Help

ЩпШ

•"* % - DO •

* МасгоЗ : Macro Action

OpenQuery 5 шш

Comment g

: опрос на создание таблицы Ciat =-,heet ~ Edit-

Opens a select or cro-.sfab query or runs -an action

query The query can be opened

in Datasheet

Рис 10 5

Как и раньше, откройте окно конструктора макросов, а затем активизируйте оп­цию Open Query (Открыть запрос) Этот этап работы показан на рис. 10.5. Как видите, у макрокоманды Open Query уже другой список аргументов (Action Arguments), каждый из которых имеет свои значения:

a Query Name (Имя запроса) - имена запросов, которые вы хотите включить в создаваемый макрос;

• View (Просмотр)' - Datasheet (Таблица); - Design (Конструктор); - Print Preview (Предварительный просмотр при печати);

a Data Mode (Режим): - Add (Добавить); - Edit (Редактировать); - Read Only (Только для чтения).

Выбранные значения показаны на рис. 10.5. Теперь добавьте к создаваемому макросу второй запрос (см. рис 10 6): в следу­

ющую строку столбца Action (Макрокоманда) точно так же, как и в первом слу­чае, введите макрокоманду Open Query. Все дальнейшие действия полностью

Page 221: Access 2000. Проектирование баз данных-OCR

Резюме 217

Ы Microsoft: Access J File Edit View Insert Run Tools Window Help

ЩЩ]

* Macro4 : Macro

Action | Opf-nQu^ry OpcnQuny

Comment

_ | n | x |

4 J

d Action Arguments

lanooc на добавление запиг d Г SHei t the

nanie oh the

quer/t: open The Int

chows all querir"; in the

current '

J Рис 10 6

повторяются, изменяется лишь имя второго запроса - теперь это Запрос на добавление записей

В сущности, задача решена, осталось только присвоить новому макросу имя. Назовите его Запрос на объединенную выборку. Если вы запустите этот запрос на выполнение, то Access 2000 по ходу процесса выдаст все информационные со­общения и расскажет о том, что из первой таблицы будет добавлено 8 записей, а из второй - 9 Наиболее важным сообщением является предложение удалить таблицу Выборка1. макрос создает ее заново и не хочет делить эту заслугу ни с кем. Впрочем, если у вас не поднимется рука удалить указанную таблицу, сис­тема осуществит данное действие сама Когда новый макрос выполнится, в резуль­тате вы получите в точности такую же таблицу Выборка1, как та, что показана на рис 9 42.

Резюме 1. Макросы могут использоваться для выполнения довольно широкого диапа­

зона операций. Например, макросы позволяют: - открывать отчет для просмотра или печати; - переходить от одного элемента управления (записи, поля) к другому; - указывать свойства объекта; - выполнять разнообразные команды и т.д.

Page 222: Access 2000. Проектирование баз данных-OCR

218 Прогроммировоние с использованием макросов

2. В рамках настоящей главы макросы наиболее часто применяются для обра­ботки событий. Событие - это любое действие пользователя: щелчок кноп­кой мыши, открытие формы и т.д. Событие может также инициироваться ка­ким-либо оператором.

3. Каждая отдельная операция (допустим, переход от одного элемента управ­ления к другому) может повлечь за собой ряд событий, возникающих в опреде­ленной последовательности. Для Access 2000 такие последовательности со­бытий для разных ситуаций четко определены и подробно рассматриваются в главе. Их очень важно знать, поскольку от порядка событий зависят усло­вия и очередность выполнения макросов и процедур обработки событий.

4. В главе были рассмотрены конкретные примеры использования макросов при обработке событий. Диапазон возможностей макросов в данном случае очень широк: от вспомогательных операций, расширяющих удобства для пользователя (например, автоматический перевод курсора в новое поле при вводе данных) до серьезных функциональных задач (например, формирова­ние запроса на создание сложной выборки из базы данных, включающей записи с различной структурой и составом данных).

Page 223: Access 2000. Проектирование баз данных-OCR

Глава X I Программирование

с помощью процедур VBA

• Основные положения VBA • Программирование приложений с помощью VBA • Предупреждение дублирования записей

при их вводе из формы • Установка на последнюю запись при открытии формы • Удаление записи с установкой на последнюю запись

Как уже говорилось, VBA - это объектно-ориентированный язык программи­рования. В свое время он был разработан специально для записи макросов в приложениях в Microsoft Excel 5.0. Затем он начал использоваться и други­ми приложениями Microsoft Office, в частности, Access. Сейчас VBA стал стан­дартным языком макропрограммирования, что очень полезно, так как облегча­ет взаимодействие различных приложений. VBA позволяет записать не только последовательные действия, выполняемые пользователем, но и все необходимые для языка программирования высокого уровня элементы, включая разнообраз­ные средства организации ветвлений, циклов и ведения диалога с пользовате­лем. Кроме того, VBA - это язык, управляемый событиями, поэтому с его помо­щью можно установить требуемую реакцию объекта на определенное событие.

Основные положения VBA Начнем эту главу с краткого обзора основных положений VBA.

Page 224: Access 2000. Проектирование баз данных-OCR

29П Программирование с помощью процедур VBA

Базовь*ь,е термины R гяч1ле д " Р а с с м о т Р и м наиболее важные термины VBA Они приведены в табл. 11.1

Таблица < т Определение Термин ^ , , М A I IMo о'1о1Упь1 Контейнер для процедур и функций

г. I *ц ule Семейство процедур и функций, принадлежащих форме или отчету п 1 п асса) (Модуль кла»1' ' <. , , (fnodule Модуль, главные процедуры которого доступны для приложения .г. ^иый модуль] в цепом (Стандартна1 ' ' р I Последовательность инструкций, выполняемая как целое (Процедура) ( ^ <• , redu^ure Процедура, выполняющая определенную задачу (Процедура & S u b ' р ,. 1ф .Оункция) Процедура, возвращающая определенное значение

F f o r o c e » ^ e c ' u r e Процедура, вызывающая реакцию объекта на определенное (Процедура £3 обработки событий) событие

У ,t j ii, ^>етод) Процедура, выполняемая над определенным типом обьекта

с, , irQ Оператор) Комбинация инструкций с ключевыми словами, символами, констан­тами и переменными Одиночная строка или строки, объединенные символами продолжения строки (пробел и знак подчеркивания)

К rci / « ' г ^ 1 - л ю ч е в о е спово) Слово, имеющее определенное значение для компилятора VBA

Аг t /л/"А 'Р гУм е н т) Дополнительная информация, передаваемая функции или процедуре Sub Называется также параметром

0£ъек^;тно-ориентированный язык VBA базируется на трех основных компо­нентах- о 0 ° ^ ъ е к т ы ' события vi методы.

Объек*-™' к а к Уж е неоднократно говорилось выше, представляют собой элемен­ты входя* я щ и е в с о с т а в приложений: таблицы, формы и их элементы управления, отчеты з 5 0 а п Р о с ы и т д - События подробно рассматривались в предыдущей главе.

ПоследЗ-Дним компонентом являются методы. Для каждого объекта определен на­бор метогЗ-дов ' к 0 Т 0 Р ы е могут быть к нему применены. Метод представляет собой действие <"' например GoToRecord (Перейти на запись), Apply Filter (Применить Фильтр) • Op e n F" o r m (Открыть форму). Такие действия указываются в установках свойств с«-обытия объекта. Если пользователь не определил свойство события для объекта Ы н е с в я з а л е г о с каким-либо действием), то объект отвечает на событие дей­ствием 3 ^ а д а н н ь ш д л я е г о т и п а п о умолчанию. Например, если текстовое окно по­лучает фс^-^У0 и н е о пР еД е л ено свойство события OnGotFocus (Получение фокуса), то BCTpoei*HHbI" м е т°Д может изменить цвет этого окна. Если вы установили свой­ство собь^°1ТНЯ объекта для макроса или процедуры обработки события, то Access сначала о обрабатывает встроенный режим, а затем выполняет заданный вами мак­рос или п *Р°ЦедУРУ- Например, вы щелкаете по командной кнопке, которая активи­зирует вт*'°РУю стРаН11ЦУ формы. Отображается щелчок по кнопке - кнопка на эк­ране на м^ гновение «утапливается» (поведение по умолчанию), затем выполняется переход к ^ следующей странице формы.

Page 225: Access 2000. Проектирование баз данных-OCR

Основные положения VBA 221

Окно модуля Программа VBA создается, редактируется и отображается в окне модуля. Такое окно для класса, связанного с формой или отчетом, можно открыть либо из окна базы данных, когда объект закрыт, либо из окна объекта в режиме конструктора. Чтобы открыть окно модуля, надо выполнить одно из перечисленных действий:

1. В окне базы данных выберите имя формы или отчета на соответствующих вкладках Forms (Формы) или Reports (Отчеты).

2. Выберите позицию Программа в меню View (Вид) или щелкните по кнопке Code (Программа) ^ 1 на панели инструментов.

На экране появится окно модуля VBA (рис. 11.1), разделенное на две области.

| £ i Microsoft Visual Basic - dbl

I File Edit View Insert Debug Run Tools Add-Ins Window Help

|И А - И ^ P M Propert ies Ф и р м ы х\

[фирмы Роггп_Фирмы _2J

В Event AfterDelCarihi i After Insert AfterUpdate BeforeDelConfi Befurelnsert —' BeforeUpdate KeyPreview False OnActivate OnApplyFilter OnClick OnClose [Event Prore< OnCurrent OnDblClick ,

ю - • и шШ Ы@ЪР (3 1 К dbl - Form_0HpMbi (Code)

JForm -J j c i o s e

Ы

O p t i o n E x p l i c i t

P r i v a t e Sub Form C l o s e ( ) On E r r o r GoTo E r r Form Clc

DoCmd. RunMacro "Макрос DoCmd.RunMacro "Макрос

E x i t Form C l o s e : E x i t Sub

E r r Form C l o s e : ИздВох E r r . D e 3 c r i p t . i o r Resume E x i t Form Close

End Sub|

з е

3 9 " 4 0 "

i«1 i |

l - l n j x l

»

- | Q | x |

d -

d iD

Рис 111

Левая область - окно свойств. В верхнем поле этой области показано, свойства какого элемента программы здесь представлены. Если вы выходили в окно моду­ля непосредственно из окна базы данных, то будут представлены свойства формы или отчета в целом. Если вы попали в окно модуля из конструктора форм или отче­тов, будут представлены свойства того элемента управления, который был акти­визирован перед переходом в окно модуля. Щелкнув по стрелке прокрутки спра­ва от этого поля, вы легко можете перейти в любой элемент управления, и в левой области появятся его свойства. Свойства могут быть отсортированы в алфавит­ном порядке - вкладка Alphabetic (Алфавитный) - или разбиты по разделам -вкладка Categorized (Категории): Date (Данные), Event (Событие), Format (Со­бытие), Other (Другие). С таким способом отображения информации вы уже встре­чались при работе с конструкторами (см., например, рис. 10.2). Разделы, содержащие

Page 226: Access 2000. Проектирование баз данных-OCR

222 Программировоние с помощью процедур VBA

свойства, могут сворачиваться или раскрываться с помощью значков плюса (+) и минуса ( - ) , расположенных слева от названия раздела.

Кроме того, в левой области вы можете соотнести какое-либо свойство с мак­росом или процедурой обработки событий. Но поскольку здесь отсутствует поло­са прокрутки и нельзя использовать списки, имена макросов и процедур надо вно­сить с клавиатуры, что неудобно.

В окне правой области отображается полный текст программы, связанной как с активным элементом управления, так и выбранным свойством. Конкретное зна­чение этой пары задается в верхних полях области - в левом верхнем поле вы можете указать элемент управления, в правом - свойство. Тогда в нижнем окне правой области появится текст процедуры, определенной данным сочетанием Если такая программа отсутствует, то отображаются две строки - открывающая процедуру Private Sub с аргументами и закрывающая End Sub.

Для перемещения между процедурами модуля используются также сочетания клавиш Ctrl+PgUp (для перехода к следующей процедуре), Ctrl+PgDn (для пе­рехода к предыдущей).

В окне модуля предусмотрена удобная возможность быстрого перехода к дру­гому модулю класса, то есть к процедурам, относящимся к другой форме или от­чету. Щелкните по кнопке Project Explorer %|| на панели инструментов. Окно модуля изменится (см. рис. 11.2) - в левой области появится новое окно Project и три кнопки. Правая, нажатая по умолчанию, выводит перечень объектов базы данных: форм, отчетов, модулей класса.

Выберите здесь, например, форму Страны. Если теперь щелкнуть по средней кнопке, то в основном окне правой области появится эта форма в режиме конструк­тора (на рисунке не показано). Щелчок по левой кнопке выведет на экран модуль

гл Microsoft Visual Basic - dbl | File Edit View Inser t Debug Ri

МЫ

Project-A3

Й @ Q EH Form_KOHTpont>HO M3f_±] Pal Form_MeneA>Kep ED Рогт_Назмйчение Ffl Form_npM6opbi

Щ Form_TMnbi Приборпе ED Form_<DMpMbi Fl) Рогт_Экологические Я ReportjDMpMbi

Г~! Modules 1 ~ Class Modules

Properties С тралы *J Страны Рогт_Страны J

in Tools Add-Ins Window Help

«3 dbl - Fomi_<t>HpMbi (Code)

9i dbl - Form Страны (Code) IrJRl ICipaHd " "^ j JAfterUpdate J

P r i v a t e Sub C T p a H a _ A f t e r U p d a t e ( ) j On E r r o r GoTo Е г г _ С т р а н а _ А г t e r U p d a t e _ C l i c k

Dim Cod As I n t e g e r Dim a n s w e r As I n t e g e r

a n s w e r = D C o u n t ( " [ С т р а н а ] " , " С т р а н ы " , I f a n s w e r = 1 T h e n

MsgBox P r o m p t : ' " З н а ч е н и е уже с о д е р ж и т е — ' DoCmd.RunKacro " Н а к р о с 2 7 " E l s e DoCrnd.RunMacro " Н а к р о с 2 " DoCmd.RunKacro " Н а к р о с 1 " MsgBox P r o m p t : ' " З а п и с ь в в е д е н а " »J

Рис 112

Page 227: Access 2000. Проектирование баз данных-OCR

Основные положения VBA 223

класса, относящийся к форме Страны, что показано на рис. 11.2. Эта возможность очень полезна при написании и отладке программ, когда бывает необходимо про­смотреть текст похожей процедуры, созданной для другого объекта базы данных.

Модули могут содержать описания, процедуры обработки событий, процедуры Sub (субпроцедуры) и функции.

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

Основные элементы Прежде чем обсуждать реальные примеры программирования на основе VBA, рас­смотрим вкратце его основные элементы:

а переменные; а константы; • аргументы; Q процедуры VBA и их элементы; • инструменты, управляющие выполнением программы.

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

Возможны два способа описания переменной: неявный и явный. Для неявного определения переменной достаточно использовать имя переменной в процедуре, не задавая его специально. Явное описание переменной означает присвоение ее имени и определение ее типа до первого оператора в программе. Чаще всего пере­менные описываются с помощью инструкции Dim

Константы Константами называются именованные значения, которые не изменяются в ходе ныполнения модуля или процедуры, где они определены. Установка и изменение шачсний констант производится только однажды - при их описании. Константа может представлять численное или символьное значение или указывать на другую константу. Выражение, содержащее комбинацию арифметических или логических

Page 228: Access 2000. Проектирование баз данных-OCR

224 Программирование с помощью процедур VBA

операторов, также рассматривается как константа. После определения константы ее разрешено использовать в любом месте в границах области определения.

Access поддерживает два типа констант: символьные и внутренние. Символь­ные константы (или константы, определяемые пользователем) определяются в модуле или процедуре с помощью оператора Const и сохраняют свое значе­ние в ходе их выполнения. Внутренние константы (или константы, создаваемые системой) могут быть использованы в любом месте во всех модулях.

Область действия символьной константы определена местом ее описания. Если константа объявлена в процедуре, она будет доступна внутри этой процедуры, если в модуле, то, соответственно, доступ к ней разрешен во всем модуле. Кон­станты, описанные в модуле, считаются личными (Private). Исключением из дан­ного правила являются константы, специально объявленные как общие (Public). В этом случае они доступны для любого модуля во всем приложении. Как прави­ло, рекомендуется для всех определяемых пользователем констант указывать тип Private, чтобы не возникало возможных недоразумений, если в другом модули встретится константа с таким же именем. Кроме того, следует явно описывать тип Private в модуле. Рекомендуется также имя символьной константы начинать с обозначения con, например, conKoeff, чтобы указать, что речь идет о константе. причем символьной.

Внутренние константы всегда доступны пользователю. Они поставляются вме­сте с Access 2000. Но кроме них можно использовать и другие, например, из биб­лиотеки VBA. Все константы (и не только константы) доступны в диалоговом окне Object Browser (Просмотр объектов), которое будет рассмотрено ниже. Имена внутренних констант имеют приставку из двух букв, указывающую на их принадлежность к той или иной библиотеке. Так, константы Access 2000 начина­ются с букв ас (например, acColorlndexBlue - константа, устанавливающая голубон цвет), константы из библиотеки VBA - с букв vb (например, vbNullString, устанав­ливающая нулевую строку).

Аргументы Аргументы - это биты информации, которые используются процедурой или ме­тодом в ходе выполнения. Они могут быть обязательными или необязательными Чтобы передать аргументы процедуре, надо указать их в определении процедуры сразу после ее имени. Например, процедура Название_фирмы_Кеуир требует указания двух аргументов: KeyCode и Shift, которые описываются как одно целое.

Private Sub Название_фирмы_Кеу11р(KeyCode As Integer, Sh i f t As Integer)

Для того чтобы выполнить созданную процедуру, надо ее вызвать. При этом аргументы можно задавать как по позиции, так и по имени. В первом случае зна­чения аргументов располагаются в том же порядке, что и в определении процеду­ры, и разделяются запятыми. Это будет выглядеть следующим образом:

Название_фирмы_Кеуир 15,10

или Cal l Название_фирмы_Кеуир (15,10)

Page 229: Access 2000. Проектирование баз данных-OCR

Основные положения VBA 00^

При задании аргументов по имени их !,„__,, .,п^.„„ ,,„ е v i „ эядок можно не соблюдать, так как определяется каждый аргумент. П о с л е и м е н ^ - , , . ^ , , ^ „ „ ' р . ч . ' J РГУментаследуетдвоеточие(:)изнак равенства (=). Аргументы при этом раздел,, _„„„,., u y

^ v / i j i i "• ы запятыми. Ниже показан пример такого задания: ^ ^

Название_фирмы^Кеу11р. Агд2:=10, Агд1:=15

С помощью описателей ByVal и ByRef (см й „ л 1 о\ 7 v юл. 11.J) можно осуществить пере­дачу переменных в процедуру пли ф у н к ц м „„ , „„ , F J , F p J M i .у качестве параметров либо по ссыл­ке, либо по значению. Ьсли переменная пе„„л„ , , „ чается по ссылке, то процедуре или функции будет передан адрес этой перемен- „ „ ^ Jy

^- J v r ^ и в памяти. Тем самым вызываемая процедура может изменить значение факти „

v J F , ^ ского параметра, если она произве­дет какие-либо действия над параметром. , „ ^ v v ш же фактический параметр пере­дается по значению, то процедура или фун„„ „ „ l y

. ' J K H J ия получают в качестве аргумента только фиксированное значение этого паг, „ v J 4 ' тетра, но не саму переменную, ис­пользуемую для его изменения. ' J '

Способ передачи параметров процедуре i . ~ ' п и \ функции определяется при описа­

нии ее аргументов. Описатель ByVal задает пс,_„ „ „ , г

с ' Дачу по значению, a ByRef-по ссыл­ке. Ьсли явное указание спосооа передачи J и )аметра отсутствует, то по умолча­нию подразумевается передача по ссылке. " J

Поясним сказанное на примере. Допусти?. , 1 f ^ J [меются следующие описания двух процедур: "• J

Sub Main() а = 10 b = 20 с = 30 Cal l Example1(a, b, с) Call MsgBox(a) Call MsgBox(b) Call MsgBox(c) End Sub Sub Example1(x, ByVal y, ByRef z)

x = x + 1 у = у + 1 z = z + 1 Call MsgBox(x) Call MsgBox(y) Call MsgBox(z)

End Sub Вспомогательная процедура Examplel испольэ , ,

r Jy y в качестве формальных аргумен­тов три переменные, описанные по-разному.; „ . „ , е е в т е л е э т о и процедуры каждый из формальных аргументов увеличивается н; , „„ . ,. п _ кницу, а затем их значения выво­дятся на экран с помощью функции MsgBox. Ос, ,„„ ь , ' , а <ная процедура Main устанавлива-•* значения переменных a, b и с, после чего „„„ v , , ' -Дает их в качестве фактических араметров процедуре Examplel. При этом пег. „ „ „ , „ r r ' Jy v м аргумент передается по ссылке Ьт- 119

Page 230: Access 2000. Проектирование баз данных-OCR

226 Программирование с помощью процедур VBA

(действует умолчание), второй по значению, а третий снова по ссылке. После воз­врата из процедуры Examplel основная процедура также выводит на экран значения трех переменных, передававшихся в качестве аргументов. Всего на экране отобра­жается шесть значений: сначала 11, 21 и 31 (все полученные значения увеличены на 1 и выводятся процедурой Examplel); затем 11, 20 и 31 (эти значения выводятся процедурой Main: переменные, переданные по ссылке, увеличились, а переменная, переданная по значению - нет).

Типы процедур и их элементы Существует два типа процедур VBA - процедуры Sub и функции. Процедуры Sub выполняют операции, но не возвращают значения и поэтому не могут быть ис­пользованы в выражениях. Функции же возвращают значения и не имеют огра­ничений по применению.

Процедуры содержат описания, инструкции и выражения. Описания явно устанавливают тип переменных и констант в процедуре или модуле. Раздел опи­саний должен находиться в начале процедуры. Инструкция (оператор) выполня­ет определенную конкретную операцию, описание или определение. Инструкции обычно помещаются по одной на строке. Если же в строке размещается несколько инструкций, они разделяются двоеточием (:). Например:

cod = 1 answer = 4

Если инструкция на одной строке не помещается, она может быть продолжена на следующей. В таком случае в начале второй строки ставятся символы пробела и подчеркивания.

Выражения приравнивают значения объекта слева от знака равенства значе­нию, полученному из элементов справа.

При указании имен процедур, констант, переменных и аргументов VBA реко­мендуется использовать стандартные правила Access:

• первый символ должен быть буквой; • имя может содержать буквы, цифры и символ подчеркивания, но знаки пре­

пинания не допускаются; • имя может содержать не более 255 знаков; • не следует использовать одинаковые имена для функций VBA, методов или

инструкций; • не следует использовать одно имя дважды в одной процедуре.

Процедуры Sub Процедура Sub содержит одну или более определенных операций. Можно ис­пользовать процедуру Sub для автоматизации повторно выполняемых задач: на­пример, назначить одну из процедур элементу меню, так чтобы запускать ее именно оттуда.

Процедуры Sub полезны для операций, выполняемых при щелчке по кнопке, име­ющейся в форме, или получении фокуса определенным элементом управления.

Page 231: Access 2000. Проектирование баз данных-OCR

Основные положения VBA 227

Инструкция Sub определяет имя процедуры, аргументы и операторы програм­мы и имеет следующий синтаксис:

[Private|Public] [StaticjSub name [ (arglist) ] [инструкции] [Exit Sub] [инструкции]

End Sub

Это синтаксическое определение является стандартным. Жирным шрифтом выделены слова, которые должны вводиться в точном соответствии с примером. Слова, набранные курсивом - это имена, определяемые пользователем. Слова, стоящие в квадратных скобках, являются необязательными. Ключевые слова, раз­деленные вертикальной чертой ( |) , представляют собой взаимоисключающие па­раметры, поэтому можно использовать лишь одно из двух - либо Private, либо Public. Если в процедуру Sub включается список аргументов (arglist), то он должен быть заключен в скобки, а аргументы разделены запятыми.

Если в определении указано два или более ключевых слов, разделенных верти­кальными чертами и при этом заключенных в фигурные скобки, то одно из них должно быть введено обязательно, иначе будет выбран параметр по умолчанию.

Ключевое слово Sub описывает процедуру по имени. Все инструкции, которые находятся между строками Sub и End Sub, выполняются при запуске процедуры.

Функции Процедура Function генерирует значение и возвращает его в приложение. Воз­вращаемое значение имеет то же имя, что и функция, и может быть использова­но в любом месте выражения. Синтаксис инструкции Function выглядит следую­щим образом:

[Private | Public] [Static]Function имя [ (a rg l is t ) ] [As тип] [инструкции] [имя = выражение] [Exit Function] [инструкции] [имя = выражение]

End Function

Значение, которое возвращает функция, присваивается ее имени. Если функ­ция не присваивает значения, то она возвращает значение по умолчанию: 0 в слу­чае числовой функции, строку нулевой длины в случае строковой функции или Empty в случае функции Variant.

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

Элементы процедур Оба типа процедур совместно используют одни и те же элементы синтаксиса, ко­торые поясняются в табл. 11.2.

8*

Page 232: Access 2000. Проектирование баз данных-OCR

230 Программирование с помощью процедур VBA

объекта (например, на рисунке выбрана функция - Date Serial) нижней части окна показан соответствующий ему синтаксис и повторены (другим цветом) на­звание библиотеки и имя класса. Если вы щелкнете по выделенному цветом име­ни библиотеки, то оно сменится ее адресом (путем). Выбранный объект можно перенести непосредственно в текст программы: скопировать его имя в буфер и от­туда вставить в нужное место текста. Однако помните, что при этой операции пе­реносится только имя объекта без аргументов - их придется вводить вручную.

Управление выполнением программы Наряду с рассмотренными выше элементами важным компонентом VBA являют­ся элементы управления выполнением программы. Кроме операторов, которые вызывают подпрограммы или функции, таких основных элементов четыре:

• выход из программы или временная остановка ее выполнения; • переход к другой части программы; Q организация циклов; • выбор действий, которые должны производиться дальше. В табл. 11.4 указаны ключевые операторы, которые позволяют управлять вы­

полнением программы. Все они имеют определенный стандартный синтаксис. Вот несколько примеров.

1. Синтаксис инструкции On ... GoSub: On expression GoSub Здесь expression - целое или округленное до целого число в диапазоне от 0 до 255, a destinationlist - список номеров строк, или меток. Каждая из них соответствует значению, принимаемому выражением.

2. Синтаксис инструкции Do ... Loop: Do [ (While|Until) condition] [инструкции"!] [Exit Do]

[инструкции]

Loop

Здесь condition - условие цикла; инструкции1 - операторы, которые много­кратно выполняются до тех пор, пока истинно условие цикла; инструкции -операторы, выполняющиеся, если условие цикла ложно.

3. Синтаксис инструкции If...Then...Else: If [условия] Then [условные операторы] [Else операторы else] End I f Для выполнения этой инструкции необходимо наличие хотя бы одного усло­вия. Если условия истинны, выполняются условные операторы; в противном случае - операторы else. Инструкция должна заканчиваться строкой End If.

Page 233: Access 2000. Проектирование баз данных-OCR

Программирование приложений с помощью VBA 231

Таблица 1 1.4

Ключевой оператор Описание

Команды, закрывающие программу или приостанавливающие ее выполнение

Exit Выход из блока программы (Do.. Loop, For. Next, Sub, функция, процедура). Определяет лишь переход к концу блока, но не конец программы

End Завершает процедуру или блок программы Закрывает файлы и освобождает переменные

Slop Приостанавливает выполнение. Ничего не закрывает

Do Events Функция, переключающая операционную систему на выполнение

других событий

Команды, осуществляющие переход к другому набору инструкций

GoTo Осуществляет обязательный переход к строке указанного номера

или метке в процедуре

GoSub...Return Выполняет переход к подпрограмме внутри процедуры и возвращается

On Error При возникновении ошибки осуществляет переход к программе обработки ошибки

On.GoSub Переходит к одному из пунктов в списке в зависимости от значения выражения и затем возвращается к следующему оператору после On...Sub

On ...GoTo To же, что и On.GoSub, но не возвращается к следующему оператору после завершения

Команды, осуществляющие выполнение цикла

Do...Loop Повторяет набор операторов до тех пор, пока условие истинно

For. Next Повторяет набор операторов указанное число раз

For Each...Next Повторяет набор операторов для каждого обьекта в выбранном семействе

While...Wend Повторяет набор операторов, пока указанное условие истинно

With Выполняет набор операторов для одиночного обьекта

Команды, осуществляющие выбор решения о дальнейших действиях

Choose Функция, выбирающая значение из списка возможностей на основе номера позиции в списке

If...Then...Else Выполняет ту или иную последовательность операторов в зависимости от истинности условия

Select Case Выполняет один из нескольких возможных наборов операторов в зависимости от значения определенного выражения

Switch Функция, которая проверяет список выражений и возвращает значение или выражение, связанное с первым истинным выражением в списке

Программирование приложений с помощью VBA Что может делать пользователь с помощью VBA? Ответ очень прост: все. К сожа­лению, ни в одной книге нельзя рассмотреть все вероятные сферы программиро­вания, в которых вы найдете применение возможностям VBA. Поэтому ограни­чимся тем, что нас непосредственно интересует, - созданием БД.

Когда мы формируем новую базу данных, то хотим сделать ее удобной для пользователей. Однако у каждого из них свои взгляды на эти удобства, и нередко сервис базы данных приходится дорабатывать. Примеры, которыми мы будем иллюстрировать использование VBA, взяты именно из этой области.

Page 234: Access 2000. Проектирование баз данных-OCR

!32 Программирование с помощью процедур VBA

Практическая логика подсказывает: если какую-то задачу можно решить штат-ыми средствами Access 2000 (стандартные запросы, макросы), то так и следует оступить. Обращение к VB А оправдано тогда, когда средства, заложенные в Access, ибо не позволяют добиться нужного результата, либо предлагают сложное и гро-оздкое решение.

1редупреждение дублирования записей >ри их вводе из формы главе 9 мы обсуждали вопрос об очистке базы данных от повторяющихся записей, ггорые попали в таблицы, и выяснили, что этот механизм может работать и в про-илактическом режиме, предотвращая попадание дубликатов при вводе записей. А теперь покажем, как решить ту же задачу средствами VBA. Сначала решим, как будет запускаться создаваемая нами программа. Очевид-

), что проверка на наличие дубликатов должна проводиться не только для опре-•ленного поля, но и для комбинации полей. Естественно, тестирование начина-ся с того момента, когда в проверяемое поле вводится какая-либо информация, тче просто нечего тестировать. Следовательно, надо «привязать» создаваемую юграмму к какому-либо свойству проверяемого поля. Например, возьмем поле азвание фирмы. Откройте его окно свойств, где есть несколько подходящих для щей цели параметров: After Update (После обновления), Key Press (Нажать авишу), On Change (Изменение), On Lost Focus (Потеря фокуса) и др. Выбе-гге свойство On Lost Focus и щелкните по строке, которая ему соответствует, перь активизируйте кнопку ^J . В результате откроется окно Choose Builder (Выбрать построитель). В нем вы жете выбрать один из трех вариантов обработки свойства (см. рис. 11.4): • Expression Builder (Построитель выражений); • Macro Builder (Построитель макросов); • Code Builder (Построитель программ). О построителе выражений мы поговорим несколько позже; построитель макросов -) конструктор, уже рассмотренный в предыдущей главе. Наконец, построитель эграмм открывает окно модуля, которое было выведено на рис. 11.2, хотя и со-эжало другую информацию. Чтобы начать создание процедуры, выберите имен-эту третью опцию. Тогда в окне свойств поля Название фирмы установится ре-м Event Procedure (Процедура обработки событий), как показано на рис. 11.5, ткроется окно модуля (см. рис. 11.6). Оно примечательно следующим. Хотя процедуры еще нет и вы даже не приступили к ее созданию, в этом окне по элчанию уже появляются операторы, обязательные для будущей программы. Это:

3 Private Sub Ha3BaHMe_<t)MpMbi_LostFocus ( ) ; 3 End Sub.

1ервый оператор - имя процедуры Sub, которое автоматически присваивается ей эответствии с именем поля и свойством (последние объединяются символом

Page 235: Access 2000. Проектирование баз данных-OCR

Предупреждение дублирования записей при их вводе из формы 233

Choose Builder

Exoression Builder

И Mact о Builder Code Builder Cancel

Рис. 11.4

\S Combo Box: Название фирмы Format j Data Event | other | All |

Before Update After Update МакросЗб On Change _ . _ _ _ _ _ „ _ On Not in List On Enter |

On E> it _ _ _ _ _ _ On Got Focus On Lost Focus (Event Procedure] On Click [E'/ent Procedure] On Dbl Click [Event Procedure] On Mouse Down On Mouse Move On Mouse Up Ont e/Down On Key Up

-«*»* Рис 11.5

Microsoft Visual Basic - dbl - [Form Фирмы (Code)] I c U B I e Edit View Insert Debug Run Tcol i Add-Ins Window Help

Propei-ties - Ниванне фнрмыХ| {Название фир СспЬэЬг

Alphabetic Categorized

~3

OfdBr.rder5tyle 1 5crollBarAlign 0

5peci3lEfTect 2 TextAlign 0

Top 623 Visible True

Width 4560 В Other

(Name) Название Ф

AllowAuroCtirrt True

ColumnHidden False

ControlTipText

Control Type Ш

ГСЕИНИИДИ '

3]

J 2i

На шание_фирмы * j LostFocus

P r i v a t e Sub Название_фирмы_ЬозсГосиз ()

End Sub

l - la|x|

~3 ^

_J

S Рис 116

Page 236: Access 2000. Проектирование баз данных-OCR

234 Программирование с помощью процедур VBA

подчеркивания). Область действия процедуры (Private) - данный модуль класса (форма Фирмы). Второй оператор, End Sub, закрывает процедуру.

Дальше начинается заполнение создаваемой процедуры конкретными опера­торами.

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

О во время работы приложения некоторые действия могут войти в противоре­чие со стандартами программы. Например, при попытке открыть таблицу, которая была удалена пользователем, возникнет ошибка;

• сама программа может содержать логические ошибки, то есть в ней заложе­на недопустимая операция - к примеру, деление на нуль. Это приводит к не­ожиданным последствиям.

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

Добавляя процедуру обработки, следует учитывать способ передачи управле­ния процедуре при возникновении ошибки. Первое, что надо сделать для зада­ния маршрута передачи управления, - это подключить обработчик ошибок пу­тем включения некоторой формы инструкции On Error в процедуру. Инструкция On Error передает управление процедуре обработки события данной ошибки.

Если подключен обработчик, то при возникновении ошибки в процедуре VBA не выводит обычного сообщения. Вместо этого управление передается в обработ­чик (если он присутствует), который сразу же активизируется. В активном обра­ботчике ошибок может определяться тип ошибки и осуществляться произволь­ная обработка.

Обработчик ошибок определяет, какие действия будут выполняться при воз­никновении ошибки в процедуре. Например, может быть завершено выполнение процедуры или исправлены условия и произведен повторный запуск. Инструк­ции On Error и Resume определяют способ передачи управления при возникновении ошибки.

Инструкция On Error Инструкция On Error служит для подключения и отключения процедуры обработ­ки ошибок. Если такая процедура подключена, то при возникновении ошибки ей передается управление.

Есть три формы инструкции On Error: • On Error GoTo метка; • On Error GoTo 0; • On Error Resume Next.

Page 237: Access 2000. Проектирование баз данных-OCR

Предупреждение дублирования записей при их вводе из формы 235

Первая форма подключает процедуру обработки ошибок начиная с той строки, на которой находится. Поэтому подключить обработчик следует перед первой строкой, которая может содержать ошибку. Активный обработчик при возникно­вении ошибки передаст управление строке, которая задана после слова метка.

Строка, указанная в качестве аргумента метка, и будет первой строкой проце­дуры обработки ошибок. Например, приведенная ниже инструкция определяет, что при возникновении ошибки управление передается процедуре под названием Егг_Название_фирмы_Lost Focus _Click:

On Error GoTo Err_Ha3eaHne_0npMH_LostFocus_Click

При этом сама процедура Err_Ha3BaHne_0MpMU_LostFocus_Click может размещаться где угодно (но обычно в конце процедуры), важно, чтобы строка, определяющая вариант процедуры обработки ошибок, была введена перед началом процедуры, так как ошибки могут возникнуть только в ее операторах.

Инструкция On Error GoTo 0 отключает обработку ошибок внутри процедуры. Даже если строка с номером 0 существует, она не запустит программу обработки ошибок. Если инструкции On Error GoTo 0 в процедуре нет, то обработка ошибок отключается автоматически, как только программа завершится.

Если вы выбираете форму On Error Resume Next, то строка, вызвавшая ошибку, про­пускается, и управление передается следующей строке. Выполнение программы не прерывается. Удобство этой инструкции состоит в том, что она позволяет прове­рять свойства объекта Err сразу за строкой, в которой ожидается возникновение ошибки, а также устранять ошибки внутри самой процедуры, без помощи обработ­чика.

Из трех перечисленных форм инструкции On Error целесообразно выбрать пер­вую - On Error GoTo метка - и вставить ее в текст процедуры непосредственно после оператора с названием процедуры. Синтаксис самой процедуры стандартен:

Err_Ha3BaHHe_((MpMbi_LostFocus_Click. MsgBox Err. Description

Последний оператор позволяет вывести сообщение об ошибке с указанием ее типа и обычно задается в конце текста основной процедуры.

Инструкция Resume Инструкция Resume возвращает управление из обработчика ошибок в процедуру. Эту инструкцию следует включать в обработчик, если необходимо передать управление в определенную строку процедуры (см. ниже). Однако инструкция Resume не является обязательной: если она отсутствует, то процедура может завер­шиться, когда обработчик выполнит свои функции.

Есть три формы инструкции Resume: • Resume или Resume 0 - возвращает управление строке, при выполнении кото­

рой произошла ошибка; Q Resume Next - возвращает управление той строке, которая непосредственно

следует за строкой, вызвавшей ошибку; • Resume метка - передает управление строке, которая задана в качестве значе­

ния аргумента метка. Он указывает номер строки или метку.

Page 238: Access 2000. Проектирование баз данных-OCR

236 Программирование с помощью процедур VBA

Инструкции Resume и Resume 0 обычно применяются, когда пользователю необ­ходимо внести исправления. Например, система запросила имя таблицы для от­крытия, а вы ввели название несуществующего объекта. В таком случае запрос можно повторить и продолжить выполнение программы с инструкции, вызвав­шей ошибку, внеся исправления.

Инструкция Resume Next используется для обработки ошибок внутри самого об­работчика. При этом команда, которая вызвала ошибку, больше не будет выпол­няться, когда управление вернется в процедуру.

Наконец, для передачи управления в другую строку процедуры применяется последняя форма инструкции - Resume метка. Например, управление может пере­даваться процедуре выхода, описанной в следующем разделе. Обычно использу­ется именно этот вид инструкции Resume, если нет каких-либо особых требований:

Resume Exit_Ha3BaHMe_<t>HpMbi_LostFocus_Click

Выход из процедуры Включая в создаваемую программу процедуру обработки ошибок, необходимо предусмотреть такой путь выхода из нее, чтобы впоследствии обработчик активи­зировался только при возникновении ошибки. Процедура выхода отмечается мет­кой строки точно так же, как и процедура обработки ошибок. Если ошибки не произойдет, то после выполнения программы запустится процедура выхода. Если же ошибка случится, то сначала выполнится обработчик ошибок, а затем управ­ление будет передано в процедуру выхода. Она содержит инструкцию Exit:

Exit_Ha3BaHne_<jMpMbi_LostFocus_Click

Итоговый синтаксис программы обработки ошибок выведен в окне модуля (см. рис. 11.7).

Ш Microsoft Visual Basic - dbl - |Form_<t>npMbi (Code)]

Й1 File Edit View Insert Debug Run Tools Add-Ins Window [Help

Properties Назвакке фир|Х|

Название ф* Combcbox _ J

IAlphabetic Categorized I

OldBorderSty 1 ScrallBar Align 0 SpecialEffect 2 TextAlign 0 Top

A

623 True 4560

Название <\

Visible Width

S Other (Name) AHowAutoCot True ColumnHiddei False ControlTipTe ControlType 111 Щ Э Е Е Е Название.

1\Г№ J

(Название фирмы 3 Privace Sub Название_фирмы_1.озсЕосиз () On Error: GoTo Err Название фирмы LoscFocus Click

Егг_Название_фирмы_Ьозг.Госиз_С11ск;: MsgBox Err.Description Resume Ех1С_Название_фирмы_Ьозг:Госиз_С11ск

End Sub

M3 Sjjcj'

n 1

_l

^

Рис 117

Page 239: Access 2000. Проектирование баз данных-OCR

Предупреждение дублирования записей при их вводе из формы 237

Теперь перейдем к созданию самой программы с помощью VBA - как вы по­мните, такова была наша изначальная цель.

Функция создаваемой программы Прежде всего зададимся вопросом, зачем нужна создаваемая процедура.

Когда мы включаем новую запись в форму Фирмы, то должны проверить, не дублирует ли содержимое поля Название фирмы те одноименные поля, которые уже введены в форму в предшествующих записях. Тестирование заключается в следующем. Для каждой новой вводимой записи подсчитывается количество совпадений поля Название фирмы с таким же полем для уже введенных записей. Если это число равно 1, то программа извещает пользователя о наличии дублика­та, обнуляет поля текущей записи и ждет ввода очередной. Если количество со­впадений равно 0, то процедура:

1. Вводит значение в базу данных. 2. Сообщает об этом пользователю. 3. Устанавливает следующее значение кода фирмы (в поле Код фирмы преду­

смотрена последовательная нумерация). 4. Переходит к новой записи. 5. Активизирует поле Название фирмы. Теперь форма готова к вводу новой записи. Если процедура, которая построена

описанным выше образом, будет запущена одновременно с вводом первой запи­си, то число совпадений может равняться либо нулю, либо единице; других вари­антов нет.

Программная реализация Для работы процедуры нужны две переменные. Одна будет указывать на количе­ство совпадений (дублирующихся записей), другая - сохранять код текущей за­писи. Назовите их answer и Cod соответственно. Первое, что вы должны сделать, -определить обе переменные как целые числа. Используйте для этого операторы:

Dim Cod As Integer Dim answer As Integer

Теперь определите выражение, которое формирует количественное значение переменной answer. Выражение будет иметь такую структуру:

answer = DCount( [Название фирмы] , Фирмы , ' [Название фирмы] = Forms1 [Фирмы]1[Название фирмы] )

Здесь необходимы пояснения.

Функция DCount Функция DCount возвращает число записей в заданном наборе (подмножестве) за­писей. Ее синтаксис таков:

0Со1М(выражение, набор[, условие])

Здесь: О выражение - определяет поле, для которого производится подсчет значений.

Данный аргумент может задаваться строковым выражением, определяющим

Page 240: Access 2000. Проектирование баз данных-OCR

238 Программирование с помощью процедур VBA

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

Q набор - строковое выражение, которое определяет набор записей, образую­щих подмножество. Может представлять имя таблицы или запроса;

• условие - необязательное строковое выражение, ограничивающее диапазон данных, для которых подсчитывается число значений. Например, аргумент условие часто является эквивалентом предложения WHERE инструкции SQL, но без ключевого слова WHERE. Если аргумент условие опущен, DCount выпол­няет расчеты над полем, заданным в аргументе выражение, для всего набора записей. Любое поле, указанное в аргументе условие, должно принадлежать подмножеству, заданному аргументом набор; в противном случае функция DCount возвращает значение Null.

С помощью функции DCount подсчитывается количество записей в подмно­жестве, когда не требуется использовать конкретные значения. Хотя в аргумен­те выражение можно указать любые расчеты, DCount всегда возвращает число за­писей.

В нашем случае выражение - это имя поля "[Название фирмы]". (Вспомним: когда в тексте строки есть пробелы, она заключается в квадратные скобки. Кавычка­ми полагается обрамлять текстовую строку.) Значением аргумента набор явля­ется форма Фирмы, а аргумента условие - "[Название фирмы] = Forms! [Фирмы]! [Название фирмы]". Последнее означает, что здесь сравнивается содержимое поля текущей за­писи с содержимым поля открытой формы (в правой части выражения Forms -класс форм, [Фирмы] - имя какой-либо фирмы из этого класса, [Название фирмы] -конкретное поле формы). Восклицательные знаки указывают на то, что следую­щие за ними элементы определяются пользователем. В данном случае речь идет о ссылке на открытую форму и на поле в ней.

Логическая конструкция If... Then... Else Так как функция Dcount возвращает значение переменной answer (0 или 1), то и ло­гическая проверка проводится относительно этой переменной. Утверждение, подлежащее тестированию, - это answer = 1. Если оно верно (дубликат действи­тельно обнаружен), то логическое выражение принимает значение True (Истина). Затем сразу после проверяемого утверждения выполняется ряд операторов:

1. Исполняется команда MsgBox Prompt, и в результате на экране появляется со­общение «Значение уже содержится в файле и повторно не вводится».

2. Запускается макрос, который стирает значения всех полей текущей записи, кроме поля Код фирмы: в нем сохраняется текущее значение кода. Макрос имеет рабочий номер 32. (В выборе этой цифры нет какого-либо специаль­ного умысла, и макрос можно назвать как угодно.) Чтобы запустить его из программы VBA, задайте команду DoCmd.RunMacro Макрос32 '.

Page 241: Access 2000. Проектирование баз данных-OCR

Предупреждение дублирования записей при их вводе из формы 239

Если проверяемое утверждение неверно (answer не равно 1), значит, дубликат не обнаружен. Логическое выражение принимает значение False (Ложь), и после инструкции Else выполняется ряд операторов:

1. Запускается макрос, запоминающий запись (макрос2); 2. Запускается макрос, реализующий переход к повой записи (макрос 1). В обоих

случаях аналогично предыдущему используется команда макрос1 DoCmd RunMacro "Макрос№";

3. С помощью команды MsgBox Prompt выдается сообщение «Запись введена». 4. Вычисляется повое значение кода записи. Оно равно максимальному значе­

нию, увеличенному на единицу. Для вычисления используется функция Dmax (), которая возвращает максимальное значение кода в указанном набо­ре (подмножестве) записей. Вот ее синтаксис: DMax(выражение, набор[, условие])

Здесь: - выражение - выражение, определяющее нужное поле. Данный аргумент мо­

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

- набор - строковое выражение, определяющее набор записей, образующих подмножество. Может содержать имя таблицы или запроса;

- условие - необязательное строковое выражение, ограничивающее диапазон данных, для которых определяется минимальное или максимальное значение поля. Если аргумент условие опущен, DMax выполнит действия над полем, за­данным в аргументе выражение, для всего набора записей. Любое поле, указан­ное в аргументе условие, должно принадлежать подмножеству, заданному ар­гументом набор; в противном случае функция DMax возвращает значение Null. В данном случае значение набора (например, имя таблицы) в аргументах не указывается, так как речь идет о поле, еще не включенном в базу дан­ных. Но прямые кавычки, которые обрамляют пустую строку, все равно должны присутствовать.

5. Значение вычисленного кода присваивается полю Код фирмы новой запи­си. В этой инструкции также необходимо соблюдать правила, касающиеся употребления квадратных скобок и восклицательных знаков.

6. Запускается макрос14, который передает фокус следующему полю - Назва­ние фирмы.

7. Заканчивается логическая конструкция If.

Проверка завершенной процедуры На этом написание процедуры завершено. Вот ее полный текст:

Private Sub Ha38aHMe^<tmpMbi_LostFocus() On Error GoTo Егг_Название_фирмы_ LostFocus _Click

Dim Cod As Integer

Page 242: Access 2000. Проектирование баз данных-OCR

240 Программирование с помощью процедур VBA

Фирмы , [Название фирмы]

раиле и повторно не вводится

Dim answer As Integer answer = DCount( [Название фирмы] Forms1 [Фирмы]1[Название фирмы] )

I f answer = 1 Then MsgBox Prompt = Значение уже содержится Е DoCmd RunMacro Макрос32

Else DoCmd RunMacro Макрос2 DoCmd RunMacro Макрос1 MsgBox Prompt = Запись введена Cod = DMax( [Код фирмы] Фирмы ) + 1 forms1[Фирмы]1[Код фирмы] = [Cod] DoCmd RunMacro Макрос14

End I f DoCmd DoMenuItem acFormBar, acRecordsMenu, 5

Exit_Ha3BaHMe_ctnpMbi_LostFocus_Click Exit Sub Err_Ha3BaHwe_<JmpMbi_LostFocus_Click

MsgBox Err Description Resume Exlt_Haзвaниe_фиpмы_LostFocus_CllCk

End Sub

Программа создавалась в окне модуля За недостатком места мы не иллюстри­ровали выполнение каждого этапа работы после ввода очередного оператора По­кажем только, как выглядит в окне модуля завершенная процедура (см. рис. 11.8)

acMenuVer70

Я Microsoft Visual Basic - dbl - [Гогт_Фирмы (Code)] >'\ <£i File edit View Insert Debug

•Pmjecf ЛЗ X\

Ъ n "Б

Щ*} Run Tools AdcHns Window Help

' • II • M Ы & V ^ © Ln 15D Col 64

^Jj9J2<j

- ^ d b 3 ( d b l ) . ^ -_\ Microsoft Access CI a

ГП Рогт_Контрольм Ш Рогт_Менед,жер ПИ Рогт_Назначемн( Щ Рогт_Приборы Ш Form_C граны [Ц Рогт_Типы Приб( ПИ FormjtiMpMbi СИ Form_3Konorn4^-(

Propertres Название фирмыХ|

[Название фир СотЬсЬох »|

Alphabetic I Categorized |

AfterUpdate Ма*рос36 AllowAutoCorrec True

Натание_фирмы H LostFocus "3 Private Sub Название_фирмы_ЬозсГосиз () On Error Go To Егг_Название_фирмы Clic)--L irn Cod As Integer Dim answer As Integer

answer = DCount("[Название фирмы]", If answer = 1 Then MsgBox Prompt:="3начение ухе содержится DoCmd.RunMac г о "Макрос 3 2" Else DoCmd.RunMacro "Karpoc2" DoCmd.RunMacro "Макрос1" MsgBox Prompt ="Запись введена" Cod = DMax("[Kofl фирмы]", "Фирмы") + 1 Forms'[Фирмы]'[Код фирмы] = [Cod] DoCmd.RunMacro "Макрос14"

End If Irr Название_фирмы LostFocus_Click

MsgBox Err Description Resume Exlr:_Haзвaниe_фиpмы_LostFocus_CllCk

End Sub

3

"Фирмы", "[Название фигны

файле и повторно не

J

-J Рис 118

Page 243: Access 2000. Проектирование баз данных-OCR

Предупреждение дублирования записей при их вводе из формы 24

Теперь проверим, как работает написанная процедура. Откройте форму Фир­мы и введите в поле Название фирмы имя организации, которое заведомо содер­жится в базе данных - например, ORION (см рис. 119) Не заполняйте осталь­ные поля в данном случае важно просто проверить, дееспособна ли созданная программа Чтобы ввести информацию в базу данных, щелкните по кнопке Enter Появится сообщение, показанное на рис.11.10 Форма остается в том же состоянии, код новой записи не изменился, и все готово к вводу другой новой записи

Ы Microsoft Access i File Edit View Insert Format Pecorrt- Tnnh rjrriuvi/ HPI[_

I D £? Ы Ш a "9 & R3 £" ^ - an - n£

•ШЭ

в Фирмы Кол ФИРМЫ 27

Название qwpMbi ORION

Г ~Б

Страна

Ашес

Аппес2

Примечания

Изменить запись

~3

t^^ffi^^4****'*^. '

Удалить запись Новая страна

Rtcofd ч | < | ( Г"" » 1.»'1»»1 ^ 27 ,d T J ]

Рис 119

Microsoft Access х]

Значение уже содержите* в файле и повторно н* вводите*

OK

Рис И 10 9 - 119

Page 244: Access 2000. Проектирование баз данных-OCR

242 Программирование с помощью процедур VBA

Добавьте ее, задав в качестве имени фирмы уникальное имя ORION1 Снова воспользуйтесь кнопкой Enter для ввода записи. В результате появится друюе со­общение (см. рис. 11.12). Как видите, добавление этой записи база данных «вос­приняла» совершенно нормально.

Итак, вы умеете бороться с дублированием записей двумя способами (один из них был описан выше, в главе 9). Мы рекомендуем иметь в своем арсенале оба Отметим лишь, что последний вариант удобнее при вводе записей словарного типа, где определяющим является одно поле (в данном случае - поле Название

Ш Microsoft Access i j File Edit View Insert Format Record; lools Window Н ф

IБ Фирмы

шз

Коп Фиомы 27

Агюес2

Примечания

Изменить запись

Название фирмы jОR101 11

Стоана

Дпо ее

3

d

МЯЖЩЩИВРШ'Ж'ШЖШЯИ»

Удалить запись

«-& ч -Новая страна

Record и | . | | 27" > I >• | » » | of 27 .J j j ,

Рис / / / /

Microsoft Access D

запись введена

OK

Рис 11 12

Page 245: Access 2000. Проектирование баз данных-OCR

Установка на последнюю запись при открытии формы 243

фирмы). В принципе ничего невозможного нет, и нетрудно усовершенствовать программу настолько, чтобы она позволяла контролировать несколько полей. Но подобное усложнение процедуры вряд ли оправдано, тем более что для такого слу­чая есть другой вариант отсева дублирующихся записей.

Установка на последнюю запись при открытии формы В главе 9 уже упоминалось о том, что при активизации форма открывается на по­следней, еще пустой записи, чтобы пользователь не тратил время на поиски и мог сразу вводить новую информацию. Теперь рассмотрим программный механизм, который позволяет реализовать эту установку. В качестве примера возьмем ту же форму Фирмы.

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

Как и в предыдущем примере, начните с окна свойств. Но теперь вам понадо­бится таблица свойств не какого-то отдельного поля, а всей формы в целом. От­крыв форму Фирмы в режиме Design (Конструктор), щелкните по кнопке Она расположена в левом верхнем углу формы, непосредственно под названием -Фирмы: Form (см. рис. 11 13). На фоне окна конструктора откроется окно таблицы свойств формы Form. Активизируйте опцию On Open (Открыть). Щелкните в этом поле мышью и воспользуйтесь стрелкой прокрутки. В выпадающем списке выбери­те позицию Event Procedure (Обработка событий) и включите ее в поле ОпОреп Если теперь вы щелкнете по кнопке _^, то в окне модуля будут выведены опера­торы, обрамляющие процедуру (см. рис. 11.6): Private Sub Form_0pen (Cancel As Integer) и End Sub.

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

Следующий стандартный шаг - установка операторов обработки ошибок. Пос­ле этого заготовка программы принимает такой вид:

Private Sub Forn_0pen(Cancel As Integer) On Error GoTo Err_Forn_Open

Err_Form_Open MsgBox Err Description Resume Exit_Form_Open

End Sub

Теперь определите переменную Cod, которая необходима для выполнения про­цедуры:

Dim Cod As Integer

9*

Page 246: Access 2000. Проектирование баз данных-OCR

46 Программирование с помощью процедур VBA

'деление записи с установкой а последнюю запись каждой форме базы данных Контрольно-измерительные приборы созданы две шолнительные кнопки: Изменить запись и Удалить запись (см. рис 11.15). В этом разделе будет рассмотрена процедура, на которой основано действие

гопки Удалить запись. В принципе удаление записи - совершенно рутинная операция. Она выпол-

1ется штатными средствами Access и не заслуживает особого внимания. Если нашем случае для нее предусмотрена специальная кнопка, то лишь потому, что ть и вторая часть задачи - установка на последнюю запись. Это значит, что в нро->амму следует добавить некоторые новые функции, чтобы показать некоторые )вые возможности в использовании процедуры. Покажем это на примере формы азначение. Как и во всех предыдущих случаях, выполнение процедуры привязано

Ы Microsoft Access File Edit View Inset t Format Pecoids Tools Window Help

D E> й Ш [h v- ' •' • aa- og

hi - a a a zr- A I Z I Y / П 51 1]

53 -• +

ПЙТЗЛ

© В Назначение шш

Код назначения

Назначение прибора

Примечания

Изменить запись

W

Удалить ЗаПИСЬ

Record и | < | J 37 > 1 " | " > | of 37 J j j

Рис ? / 15

Page 247: Access 2000. Проектирование баз данных-OCR

Удаление записи с установкой на последнюю запись 247

к событию On Click (Щелкнуть по кнопке) в таблице свойств кнопки Command Button (Командная кнопка) - см. рис. 11.16. Далее следует выбрать опцию Уда­лить запись

Как и раньше, с помощью кнопки _^ откройте окно модуля. Оно выглядит так же, как аналогичное окно, которое было показано на рис. 11.6. Процедура опять будет формироваться в окне модуля, по и на сей раз речь пойдет только о тексто­вых операторах.

JOn Mouse Down , •On Mouse Move . . fori Mouse Up . . . . On Kev Оо,Л.'п . . jOri Key Up Юп Key Press

Рис 11 16

Первые этапы работы уже хорошо вам знакомы: автоматическая вставка обрам­ляющих операторов, ввод операторов обработки ошибок и определение перемен­ной Cod. Вот результат ваших трудов:

Private Sub Удалить_запись_С11ск() On Error GoTo Егг_Назначение_Удалить_запись_Й1ск Dim Cod As Integer

Егг_Назначение_Удалить_запись_С11Ск. MsgBox Err Description Resume Ех11_Назначение_Удалить_запись_СПск

End Sub

Далее вы блокируете вывод любых информационных сообщений, кроме сооб­щений об ошибках. Эту функцию выполняет программа макросЗ (см. рис. 11.17). Чтобы запустить ее, задайте команду Set Warning (Установить сообщение), но в поле Action Arguments (Аргументы команды) укажите значение No, что и по­зволит блокировать вывод сообщений. Данная опция используется, когда пользо­ватель не хочет, чтобы выполнение макроса прерывалось ради появления окон предупреждений. Однако сообщения об ошибках выводятся в любом случае. Кро­ме того, Microsoft Access выводит на экран все диалоговые окна, которые требуют от пользователя действий более сложных, чем щелчок по кнопке: например, когда надо ввести какой-либо текст или выбрать параметр из списка.

Page 248: Access 2000. Проектирование баз данных-OCR

248 Программирование с помощью процедур VBA

Ш Microsoft Access File Edit №•/', Insert Pun Tools Window Help

ПЕПП

з * МакросЗ: Macro шш •

Action Set^'atningsl

1 J

Comment

— И J

• н и Warnings™

Action Arguments

1 Turns all system message-: on of off. Prevent? modal warning; fiom stopping

the macro (.although error messages i and dialogs that require user input still

appear) This has the same effect as pressing Enter in each message box

| (typically an OK or Yes) Press Fl for help on this action

Рис 11 17

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

одна, а несколько пустых записей. Например, вы нечаянно или с определенной целью не ввели в новую запись никаких данных, однако и не удалили ее. Щелк­нув по кнопке Удалить запись, вы восстановите порядок, и все пустые записи бу­дут уничтожены. Когда вы снова активизируете форму, она откроется на пустой записи, готовой к вводу информации.

Цикл имеет следующий синтаксис: А

DoCmd RunMacro Макрос7 I f IsNull(Forms' [Назначение]1 [Назначение] = " " ) = True Then

DoCmd RunMacro МакросЗ DoCmd RunMacro МакросЭ GoTo A Else

End I f

Программа Макрос7 осуществляет переход к последней записи. Затем уже зна­комая нам логическая конструкция Then If Else (Если...То...Иначе) проверяет ут­верждение Forms1 [Назначение]1 [Назначение] = . Иными словами, вы проверяете, есть ли в поле Назначение формы Назначение пустая строка.

Page 249: Access 2000. Проектирование баз данных-OCR

Удаление записи с установкой на последнюю запись 249

Проверка проводится с помощью функции IsNull О, которая возвращает значе­ние типа Boolean. Оно показывает, является ли результатом выражения пустое зна­чение (Null). Синтаксис функции:

1БМи11(выражение)

Итак, функция IsNull возвращает True (Истина), если выражение имеет значе­ние Null; в противном случае возвращается значение False (Ложь). Предположим, результатом проверки будет True: в записи обнаружена пустая строка. Тогда с по­мощью программы Макрос7 блокируется вывод сообщения, а оператор Макросу уда­ляет эту запись и осуществляет переход на метку А. Она повторяет описанные процедуры для следующей пустой записи, и так продолжается до тех пор, пока не выяснится, что подобных записей больше нет. Тогда цикл заканчивается и начи­нает выполняться следующая группа операторов:

DoCmd RunMacro Макрос1 Cod = DMaxC [Код] , Назначение ) + 1 Forms'[Назначение]1 [Код] = [Cod] DoCmd RunMacro Макрос29

Приведенный набор команд задает установку на последнюю пустую запись и определяет соответствующее значение для ее кода. (Подробно все это рассмат­ривалось в предыдущем разделе.)

Вот полный текст процедуры: Private Sub Удалить_запись_С11ск() On Error GoTo Егг_Назначение_Удалить_запись_С11ск Dim Cod As Integer DoCmd RunMacro МакросЗ DoCmd RunMacro МакросЭ A

DoCmd RunMacro Макрос7 If IsNulKForms1 [Назначение]1 [Назначение] = ) = True Then

DoCmd RunMacro МакросЗ DoCmd RunMacro МакросЭ GoTo A Else

End If DoCmd RunMacro Макрос1 Cod = DMax( [Код] , Назначение ) + 1 Forms1[Назначение]1 [Код] = [Cod] DoCmd RunMacro Макрос29

ЕхИ_Назначение_Удалить_эапись_СНск Exit Sub Егг_Назначение_Удалить_запись_С11ск

MsgBox Err Description Resume Ех11_Назначение_Удалить_запись_С11ск

End Sub

Page 250: Access 2000. Проектирование баз данных-OCR

250 Программирование с помощью процедур VBA

Expression Builder Count: («expr») | J

d

P j Назначение (±1 Tables

1 (±J Queries Lfl Form? & Reports P i Functions

L Q d b l P j Constants CD Operators P i Common Expressions

<AII> Arrays Conversion Database Date/Time DDE/OLE Domain Aggregate Error Handling Financial General Input/Output Inspection Marh 23Я5ЕЯИИИ1 Proaram Flow J

nputBox$ MsgEox

InputBox(prompt; title; default: xpos; ypos)

LH

Cancel

Undo

~ р * ] &| = > < 4 H And ЬУ rTot I » j ( ) 1 Paste | Help |

-Й РИС. / / /S

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

Page 251: Access 2000. Проектирование баз данных-OCR

Глава XI I Другие возможности

Access 2 0 0 0

• Установка Access 2000 • Условное форматирование • Буфер обмена • Автоисправление имен • Разделение базы данных • Сжатие базы данных при ее закрытии • Конвертирование базы данных

Установка Access 2000 Как уже говорилось, система Access 2000 является органической составной час­тью программного пакета Office 2000, и это важное обстоятельство во многом определяет характер инсталляции Access 2000. Если вы впервые устанавливаете Access, целесообразно устанавливать весь пакет в целом. Это не означает, что дан­ную систему нельзя установить «в одиночку», локально, но вряд ли это разумное решение. В дальнейшем под установкой Access 2000 фактически будет понимать­ся инсталляция пакета Office 2000 в целом. Что в первую очередь следует учи­тывать?

Office 2000 ориентирован на работу с системой Windows 98 и ее более поздни­ми версиями. При установке пакета в среде Windows 95 могут возникнуть про­блемы, например указание на несовместимость клавиатуры. Кроме того, перед

Page 252: Access 2000. Проектирование баз данных-OCR

2 5 2 Другие возможности Access 2000

инстралляцией придется закрыть не только все открытые приложения, но и фо­новые программы: Norton System Doctor и др. Поскольку при установке пакет к таким программам относится очень болезненно, лучше на время установки про­сто очистить панель задач.

Инсталляция начинается традиционно - с запуска программы Setup.exe, кото­рая содержится на CD-ROM. При первой установке, освоившись с компьютером и разобравшись с лицензионным номером, Office 2000 попросит пользователя выбрать один из вариантов инсталляции (см. рис. 12.1):

• Upgrade Now - провести стандартное расширение сейчас, то есть удалить предыдущую версию Office и загрузить новую в папку, которую по умолча­нию предлагает система;

Q Customize - самому указать место для инсталляции Office 2000, принять решение о сохранении или удалении предыдущей версии пакета и опреде­лить требуемую конфигурацию.

Сделав выбор, щелкните по соответствующей кнопке. Пользователю, кото­рый предпочтет первый, стандартный вариант загрузки, Office 2000 больше не станет задавать вопросов. На экране появится сообщение с просьбой подож­дать, пока не закончится конфигурация программы и установка пакета (см. рис. 12.2).

Рис 12 1

Page 253: Access 2000. Проектирование баз данных-OCR

Установка Access 2000 253

iff Reinstalling/Repairing Microsoft Office 2000 пш Please wait while Windows configures Microsoft Office 20G0

Verifying installation tasks

Cancel

Рис. 12 2

Если вы пожелаете лично контролировать процесс установки и выберете ре­жим Customize, то система предложит вам задать конкретную конфигурацию па­кета. (Отметим, что при установке редакции Office 2000 пользователь имеет боль­ше возможностей для выбора тех или иных элементов пакета. Предыдущие версии Office были в этом смысле менее гибкими.) На рис. 12.3 показана структура кон­фигурации, которая предлагается пользователю (в основном на экран выведены элементы, имеющие отношение к Access 2000).

Как видите, набор значков, характеризующих различные варианты конфигура­ции, здесь разнообразнее, чем в предыдущих версиях Office или Access. Во-первых,

\Ш Microsoft Office 2000: Update Features за

• SETUP

i Maintenance Mode

) Selecting Features

Installing Office

<l

э э

_ ! '

t ® d

X -1 Integrated File Management Microsoft Access for Windows _ J ' _ J ~ Z3~ ttJ> 0-J -O J -_ J -_ J ' Micros

Help Typical Wizards Additional Wizards Sample Databases Snapshot Viewer Database Replication Calendar Control Client Server Visual Design Tools

oft FrontPage for Windows

X -1 Microsoft Office (French) В X " I Microsoft Word for Windows

X - | Address Book

1

d

J

• |

Description: Applications and support files for use with Microsoft Office.

Size: Selected Features: 16MB

Help Cancel

Free Disk Space 1153ПВ

< < Back Update Now

Рис. 12.3

Page 254: Access 2000. Проектирование баз данных-OCR

Другие возможности Access 2000

[енты можно сворачивать и разворачивать с помощью уже известных читате-начков + и - . Кроме того, предусмотрены следующие опции:

|ГГ}->] - открывает окно (см. рис. 12.3), где представлены различные вариан­ты установки элемента, которые перечисляются ниже; ьЭ Run from My Computet | - когда пользователь выбирает эту опцию, элемент

устанавливается па жесткий диск и в дальнейшем запускается обычным об­разом (допустим, па окна Мой компьютер); On Run all fiom My Computer ] - при выборе данного варианта все элементы систе­

мы загружаются па жесткий диск и впоследствии тоже запускаются обыч­ным порядком. Если необходим более детальный выбор (то есть элемент со­держит составные части), он, в свою очередь, раскрывается, и производится аналошчпый выбор; ftj) Run 1ют СО | - элемент остается на компакт-диске, откуда при необходи­

мости и запускается; © g Run all from CD J - все элементы, которые содержатся в этом перечне, оста-

югся на компак1 -диске, откуда при необходимости и запускаются; О Installed on First Use | - элемент автоматически инсталлируется при первом

запуске программы; X Hot Available | - элемент недоступен и не подлежит установке.

брав необходимые для работы элементы, щелкните по кнопке Update Now эвить теперь), чтобы запустить сам процесс установки. После его заверше-/indows предложит вам перезагрузить компьютер (см. рис. 12.4). Когда и это сделано, Office 2000 вместе с Access 2000 готовы к работе, ги Office 2000 инсталлируется на ранее установленную версию, то вместо (ения, выведенного на рис. 12.1, появляется другое (см. рис. 12.5). Система агает пользователю выбрать один из нижеследующих вариантов: Repair Office (Переустановить Office 2000) - например, если произошли <акие-то сбои в работе программы; \dd or Remove Office (Добавить или удалить отдельные элементы пакета); Remove Office (Удалить Office 2000) - полностью удалить пакет с компьютера. ьнейшие действия пользователя не содержат ничего необычного.

1f£ Inxtallei Information В1

• \ The installer must restart yout system before configuration of ^ I J Microsoft Office 2000 Pierniurn can continue Click Yes to restart now

or No if you plan to manually restart later

Yes N° J

Рис 12 4

Page 255: Access 2000. Проектирование баз данных-OCR

Условное форматирование 255

wp Micioioft Office 2 0 0 0 Maintenance Mode из OfTice Maintenance Mode

Please select one of the following options

SETUP

Maintenance Mode

fffl 'iJ

Help

Repair Office Restore your Microsoft Office 2000 Premium installation to its опдтз! state.

Add or Remove Features Change which features ate m_.tailed or remove specific features.

Remove Office Delete Microsoft Office 2000 Premium trorn this computer.

Cancel

Рис. 12.5

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

Пример условного форматирования Рассмотрим условное форматирование на конкретном примере. Откройте форму пли отчет в режиме конструктора (Design view).

На рис. 12.6 показана форма Фирмы, взятая из базы данных Контрольно-измерительные приборы. Здесь форма открыта в режиме формы (Form view), а на рис. 12.7 - в режиме конструктора. Наиболее интересен второй вариант. Вы­делите в форме Фирмы поле, которое хотите представить в условном формате, -Название фирмы (см. рис. 12.7).

Теперь в верхней строке меню Format (Формат) активизируйте опцию Condi­tional formatting (Условное форматирование). В результате на экране появится

Page 256: Access 2000. Проектирование баз данных-OCR

/36 Другие возможности Access 2000

Ы Microsoft Accet * - [Фирмы]

ол - °S © Si Xi v/ *й • • >* Э й -

isH

(3 Коп Фиомы 24

Название фирмы jLEEMAN LABS

Стоана

Апоес

~Б США

Ашес2

Примечания

Изменить запись

Российское представительство ЦНИИ КМ "Прометей" и Ассоциация "Центролаб" 1ч1186г ОЯНКТ-ПАТРППУПГ нлб п Мондгтыпш 1

Удалить запись Новэд страна

Record 1<1 < > I »1 | > * | or 27

Рис 12 6

[налоговое окно условного форматирования (см рис. 12 8) Формат выделяемого юля может быть разным

• тип (вариант, выбранный в нашем примере), • цвет шрифта, • цвет заливки поля. Верхнее поле в диалоговом окне предназначено для отображения измененного

юрмата в случае, если заданные условия не соблюдены, нижнее - в случае, когда ни выполняются. Три средних окна служат для ввода условий В левом из них помощью стрелки прокрутки указывается тип критерия для форматирования: Q критерий, определяющий нужное значение поля, Q критерий, определяющий нужное выражение, которое включает значение

поля; • критерий, указывающий, при каких условиях полю передается управление Рассмотрим первый пример - критерий для значения. Допустим, надо выде-:ть запись, где упоминается фирма под названием LEEMAN LABS Во второе

Page 257: Access 2000. Проектирование баз данных-OCR

Условное форматирование 257

Н Microsoft Л е с е » - (Фирмы : Foim]

о - и а & , & tfe ta <? " ч* a * ! <з л с? .> | © а -1 о . !

Тага

10 I II I 12 I IS i M i 1г

# Form Header * C roil

Кош Фи1:

Название qDupMbi

гоан

• №

Ашес

>име

мы

-пни

Исметаь

К О Д ф П р М Ы

т: I 1 = • Название qnipMti Т.

Код страны 7> 1 • - • - - • • 1_

Адрес

Адрес 2

[t>gi Примечания

Удалив 4 I Не.»

Рис 12 7

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

Q between (между), • not between (вне пределов); • equal to (равно); • not equal to (пе равно); • greater than (больше чем), • less than (меньше чем), • greater than or equal to (больше или равно); U less than or equal to (меньше или равно) Задайте условие, согласно которому значение поля (см. рис. 12.9) равняется

LEEMAN LABS. После ввода в записях, где в данном поле будет указано это на­звание фирмы, оно будет показано измененным шрифтом, как на рис. 12.9 Крите­рий можно усложнить - в частности, добавить новые условия (общим числом не более трех) Как уже говорилось, аналогичного результата при поиске нужной за­писи вы добьетесь, сформировав запрос на выборку.

Page 258: Access 2000. Проектирование баз данных-OCR

>58 Другие возможности Access 2000

ondilional Formatting

Default Formatting

This format will be used if no conditions are met:

Condition 1 ~ -

|Field Value Is ^ ] |equd to

Preview of format to use when condition is true:

AaBbCcYyZz

•*] |"LEEMAN LABS

AaRhC.rYyF7

A d d »

В / U "N - A

в i I и ! Ь -1 A .

Delete .. OK Cancel

ИЕ1

Рис 12 8

Microsoft Access - [Фирмы]

к - и & а у] 1Щх]

п-о - . I • » • * ; ' © д - | 5 U

Коп Фиомы 24

Название фирмы LEEM.AN LABS "3

Стоана

Ашес

Агюес2

Примечания

США И Российское представительство ЦНИИ КМ "Прометей" и Ассоциация"Центролаб" 191186 г Оянкт-nftTfinfivnr иаб п Монястыгжи 1

Record: и | < | f 24 > | " | f * j of 27 ' zJ

Рис. 12 9

уфер обмена о всех программных продуктах Microsoft, начиная с первых версий DOS, ра-зта с буфером обмена всегда была простейшей рутинной операцией. Каза-зсь, в ней нечего совершенствовать. Однако в Access 2000 такие улучшения )явились. Точнее говоря, они были разработаны в Office 2000, поэтому стали )стуины и в Access 2000.

Page 259: Access 2000. Проектирование баз данных-OCR

Буфер обмена 259

Новое содержание В предыдущих версиях Office буфер обмена был один, и в каждый момент време­ни с помощью буфера можно было работать только с одним файлом. В пакете Office 2000 таких буферов стало 12. Соответственно, пользователь может обраба­тывать одновременно до 12 файлов. В окне, которое показано на рис. 12.10, вы видите 5 буферов

Рис. 12 10

Все кнопки управления буфером: Cut (Вырезать), Сору (Копировать) и Paste (Вставить) - сохраняют свои обычные функции. Однако для каждого нового фай­ла, открытого в диалоговом окне, выводится отдельный буфер. Это, в свою оче­редь, предоставляет пользователю новые возможности для работы.

Новые возможности для работы Команда Collect and Paste (Собрать и вставить) позволяет вам собирать инфор­мацию из различных источников (документов, электронных таблиц, сети Internet и т.д.), упорядочивать ее в буфере обмена, а затем целиком вставлять в любой до­кумент по вашему выбору. Эта опция представляет собой усовершенствованный вариант функций Сору (Копировать) и Paste (Вставить), известных вам по ран­ним версиям Office. При использовании стандартного буфера обмена в системе Windows нужно было скопировать информацию, затем открыть другое окно, вста­вить скопированный фрагмент, закрыть второе окно и вернуться в первое. Если возникала необходимость скопировать новые данные, приходилось повторять все сначала. Команда Collect and Paste существенно облегчает работу с несколькими блоками данных. Буфер обмена позволяет скопировать до двенадцати отдельных фрагментов текста и/или изображения из одного либо нескольких документов, сообщений электронной почты, Web-страниц, презентаций, других файлов. Затем

Page 260: Access 2000. Проектирование баз данных-OCR

Другие возможности Access 2000

ррагменты можно поместить в любое приложение Ofhce - по одному или все у. Во втором случае воспользуйтесь удобной командой Paste All (Вставить все).

тоисправление имен :врале 1997 года фирмой Griggs-Anderson Research был проведен опрос пользо-лей Microsoft Access. Согласно результатам этого исследования, функция ав-правления имен возглавляла список самых насущных пользовательских по­лостей.

нкции автоисправления имен 1КЦПЯ Name Autocorrect (Автоисправление имен) устраняет побочные эффек-шторые часто возникают при переименовании объектов базы данных. Напри-если в предшествующих версиях Access пользователь присваивал полю таб-

ы другое название, то система переставала выводить данные, связанные с этим эм. А вот Access 2000 автоматически переносит изменение имени поля на все симые от него объекты: запросы, формы, таблицы, отчеты, поля. Поэтому

ьзователь может беспрепятственно продолжать работу с приложением. Вся-раз, когда вы открываете форму или другой объект базы данных с изменен-

1 названием, Access 2000 автоматически проверяет и фиксирует расхождения :ду этим объектом и другими, которые с ним связаны. Допустим, вы открыли му, связанную с таблицей. Система сравнит дату и время обращения к форме блице. Если они различны, включается функция Name Autocorrect.

эаничения на использование функции первых, пользователь может работать с ней, если ему разрешена модификация л данных. Ясно, что при обращении к объекту в режиме Read Only (Только чтения) применение Name Autocorrect исключено.

'ассмотрим другое ограничение. Если объект базы данных создается при от­менной функции автоисправления, то после ее активизации будут автома-ески фиксироваться только новые внесенные изменения. Если же они были ланы до включения Name Autocorrect, соответствующие ссылки придется сти вручную. Для форм или отчетов, содержащих коды Visual Basic, система ess 2000 сама проставит эти ссылки, но не будет делать исправлений в текстах грамм Visual Basic. Зместе с тем, в некоторых случаях Name Autocorrect не в состоянии исправить лки на переименованные объекты, что существенно ограничивает сферу при-[ения функции. Это может произойти, прежде всего, если: -I изменены ссылки, указывающие на неправильный оператор SQL; 2 изменены ссылки, указывающие на код в программе Visual Basic; 3 изменены ссылки, указывающие на связанные таблицы, если эти таблицы

или поля в них переименованы в обратной последовательности; 3 изменены ссылки на макросы, в том числе в свойствах событий, а также в меню

свойств устанавливаются имена макросов;

Page 261: Access 2000. Проектирование баз данных-OCR

Автоисправление имен 261

• пользователь работает в реплицированной (скоп ированной) базе данных. В этом случае функция Name Autocorrect отключается, и ее нельзя активи­зировать снова;

• пользователь работает в Microsoft Access Project. Функция Name Autocorrect может применяться для баз данных, созданных как непосредственно в среде Access 2000, так и в ее ранних редакциях. (В последнем случае эти БД пре­образуются системой Access 2000.)

Использование функции Чтобы включить Name Autocorrect, надо:

1. В меню Tools (строка меню Access 2000) выбрать опцию Options (Параметры). 2. В появившемся диалоговом окне Options (см. рис. 12.11) открыть вкладку

General (Общие). Одно важное замечание. Предположим, вы хотите, чтобы система Access 2000 запомнила сделанные вами изменения имен, но в дан­ный момент не вносила их в записи (это можно сделать и в другое время). В разделе Name Autocorrect окна Options установите флажок только рядом с опцией Track name Autocorrect Info (Подготовить информацию для авто­матического исправления имен).

Если вы хотите активизировать функцию Name Autocorrect, установите галочку в позиции Perform name AutoCorrect (Выполнить автоисправление имен). А если необходимо, чтобы информация о проведенном автоисправлении была сохранена

ВПгЯЯ

View General Edit/Find ] keyboard Datasheet | Forms/Reports ] Advanced Tables/Queries

Print mat gins

Left margin

Pjght margin

Top margin.

Bottom margin-

Default database folder

|С.\Мои документы\

f? Recently used file list:

W Provide feedback with

Г~ Compact on Close

Web Options . 1

|ЭЕШ5Я

] : , 199crn

|2,199crri

|z,499cni

SOUnd d

Name AutoCorrect

W Track name AutoCorrect info

P Perform name AutoCorrect

W Log name AutoCorrect changes

New database sort order :

j ' jeneral

Use four-digit year formatting

P This database

Г - All databases

d

OK Отмена

Рис 12 11

Page 262: Access 2000. Проектирование баз данных-OCR

Другие возможности Access 2000

е данных, то включите флажок еще и в позиции Log name AutoCorrect changes шксировать исправление имен).

зделение базы данных да такое решение будет для пользователя самым разумным. Например, рас-оим ситуацию, с которой вы вполне можете столкнуться на практике. В таб-к БД накоплен большой объем первичных данных. Вы хотели бы использо-лх для того, чтобы построить на основе этих исходных данных совсем другую со своими формами, отчет ами, запросами и т.д. Объекты уже существующей данных вас не интересуют. Тогда се можно разделить на две независимые . Точнее говоря, вы собираетесь выделить из существующей БД, которая ос-я неизменной, еще одну, причем новая база данных будет включать только цы. На их основе впоследствии можно наращивать информацию и разви-ювую БД. эбы разделить таблицы, в строке меню Access 2000 задайте последователь-действий: Tools => Database Utilities => Database Splitter (Инструменты => гты базы данных => Разделитель базы данных). После этого на экране по-я диалоговое окно разделителя (см. рис. 12.12).

Database Splitter

Этот ыастер переыешдет таблицы го текущей ба­зы данных £ новую баз} данных В ыногопользо-Еатслыкоп среде он изменяет схему сети и облег­чает дальнейшее развитие без нарушения данных и помех для пользователя

Процесс может быть длительным До разделения рс*-оыендуется сделать резервную копях- исход­ной базы данных

Вы хотите начать разделение базы данных сейчас''

^ Ч , |

Split Database Cancel

Рис 12 12

а вы ознакомитесь с информацией, выведенной в этом окне, и выберете plit Database, система осуществит разделение базы данных. Вмешатель-льзователя потребуется в самом конце этого процесса, когда нужно будет ь предлагаемое название новой БД или ввести другое. Access собирается ь ей имя прежней БД, но с дополнением be. На рис. 12.13 показано, как иных db5.mdb делится на две: старую (с тем же именем) и новую, для

Page 263: Access 2000. Проектирование баз данных-OCR

Розделение базы данных 263

Create Back-end Database

JJ Мои документы "3 *-' a 33

® Ц, П Ь Tools Access

Zrnono

Гридин

Мои рисунки

Монография

МЧС-развитие

Универсум

1 Файлы справок

щВаскир of Проектирование базы данных.wbk

KjCATMAPl.xls

ydbl.mdb V | d b 2 mdb

Vjdb3 mdb ydb4 mdb -^]dbS Idb

^ d b S mdb

$ } dbS_be mdb

V | db6.mdb

%Jdb7 mdb

~ ' desktop mi

T^JESJDPER.xIs

[л] Microsoft Office.ZIP

j ^ J Old Excel Documents

# ] Paget.htm

^ ] Визитка.doc

Ч З Володя.doc

^Jror ieo.doc

i<1foweocT,lex

!л]гомеост1.1ех

^ Д о п о л н е н и я к плану монографи

±1 File name hH-MlnM-! _ЕЗ В split

ave as type. All File; i* *) "3 Cancel

Рис. 12 13

которой предлагается название db5_be.mdb. Когда пользователь примет решение, появится новая база данных, содержащая точные копии таблиц из старой БД и го­товая к вводу и накоплению информации.

Объективности ради отметим: если пользователю понадобится разделить базу данных, он может сделать это и без помощи команды Split Database (Разделить базу данных). Можно скопировать исходную БД, а затем удалить из полученной копии все объекты, за исключением таблиц. Результат будет таким же, хотя при­дется произвести больше операций. Другими словами, вы снова убеждаемся в том, что появление в системе новой функции не означает открытия принципиально новой возможности. Пользователь просто получает право выбрать иной, более удобный вариант решения той или иной задачи.

Сжатие базы данных при ее закрытии Как правило, файл базы данных является довольно «рыхлым». В нем много пус­тых или не полностью заполненных ячеек. Поэтому возникает вполне разумная и естественная идея: сжать базу данных, когда она не используется, чтобы БД за­нимала меньший объем памяти. В активном состоянии базу данных можно раз­вернуть до исходного размера. Ясно, что подобная операция должна выполняться только автоматически, иначе она не имеет смысла. В Access 2000 автоматическая распаковка базы данных производится без предварительной настройки лишь в том случае, если БД была сжата перед закрытием.

Page 264: Access 2000. Проектирование баз данных-OCR

<6A Другие возможности Access 2000

Чтобы автоматически сжать базу данных перед закрытием, произведите следу->щую настройку:

1. Находясь в любом из окон базы данных (или специально открыв ее - см. рис. 3.1), выберите в строке меню Tools => Options.

2. В диалоговом окне Options (см. рис. 12.11) откройте вкладку General. 3. Установите флажок в окне Compact On Close (Сжать при закрытии). 4. Щелкните по кнопке ОК. При выполнении описанных действий в многопользовательской среде необ-

адимо убедиться в том, что в этот момент с базой данных не работает никто эугой.

онвертирование базы данных инвертирование из Access 97 (95) в Access 2000 шустим, при открытии базы данных вы выбираете опцию Open an existing file )ткрыть существующий файл). При этом вам нужен файл из уже существующей 1, которая разработана в какой-либо ранней редакции Access. Тогда система пред-жит вам преобразовать базу данных в формат Access 2000 (см. рис. 12.14).

Con veil/Open Database

You have selected a database created in a previous version of Microsoft Access You can convert o< open the database. Either action may take several minutes

<•" iconvert Database

Click this option if you're not sharing this database with users of a previous version. You will not be able to use the database with previous versions This option is best if you want to take ad vantage of the full power of Microsoft Access 2000

ft—Sj <~ Open Database

Click this option if you're sharing this database with users of a previous version of Microsoft Access. You will still be able to use the database with pre /IOUS versions In Microsoft Access 2000, you will be able to view all objects, but will not be able to change the design of any object.

OK Cancel

Рис 12 14

Эпция Open Database (Открыть базу данных) предпочтительнее, если база ных обслуживает нескольких пользователей, работающих в разных версиях, да в редакции Access 2000 база данных будет функционировать в режиме Read у (Только для чтения), и вы не сможете модифицировать ее объекты. 1аоборот, выбор опции Convert Database (Конвертировать базу данных) ре-ендуется в том случае, если с этой БД вы будете работать только в версии

Page 265: Access 2000. Проектирование баз данных-OCR

Конвертирование базы данных 265 Access 2000. Такое решение позволит вам в полной мере воспользоваться теми преимуществами, которые предоставляет ноЕвейшая редакция системы.

При конвертировании Access предлагает взам принять новое имя базы данных и указывает папку, в которой БД будет сохранена под этим именем (см. рис. 12.15).

Какое бы решение вы ни приняли, работа гэтой БД в среде предыдущей версии будет невозможна. (Исходная БД под старым i именем может использоваться в пре­дыдущей версии.) Процесс конвертации займет несколько минут, а затем на экра­не появится окно преобразованной базы данншх (см. рис. 12.16).

Convert Database Into

Save in: J3 Мои документы 7 «~ а ® х ы и - тоо15. Ш

Access My Pictut es My Webs Zmono Гридин Мои рисунки Монография МЧС-разбитие Универсум Файлы справок

V) dbl.mdb ydo2.mdb ydb3.mdb Vjdb4.mdb ^JdbS.mdb

^J Old Excel Documents 3 J Старые документы Excel

File name. 7 Save

t Save as type: Microsoft Access Databases (*.mdl(b) *ЩЩЩЗЩЛ2Щ5^£^ 7 Cancel

Рис. 12 15

Конвертирование из Access 2000 m Access 97 (95) Аналогичная проблема возникает и при обратном переходе, когда необходимо работать в Access 97 или 95 с базой данных:, созданной в среде Access 2000. Если вы вызовете такую БД непосредственно из Access 97 (95), система вы­даст сообщение Unrecognized database format"' " (Неизвестный формат базы данных ). Вместо многоточия указывается путь файла БД. Чтобы использовать в ранних версиях системы базу ^данных, созданную в Access 2000, надо преобразовать БД в соответствующий формат. Выберите в строке меню Access 2000 опцию Tools и задайте такой ряд кюманд: Tools => Database Utilities => Convert Database =» To Prior Access Database version (Инструменты => Ути­литы базы данных =* Разделитель базы данных :=* К предыдущей версии базы дан­ных) - в последовательно раскрываемых меню. Когда все операторы выполнятся, с преобразованной базой данных можно будет [работать в Access 97 (95).

Page 266: Access 2000. Проектирование баз данных-OCR

66 Другие возможности Access 2000

0) 0 ] ЕЕ Ш EI Е! т т т ш т т т т щ т т

Cre.^e roirn in Design view

Create form by using wizard

Менеджер

Менеджер Subf orrn

Менеджер Subforml

Назначение

Приборь i

Страны

Страны1

Страны?

Типы Приборов

Фирмы

Фирмы Subform

Фирмы 1

тВВт ФирмыЗ

Экологические приборы

±1 I >|

Рис 12 16

*езюме 1. Потенциальные возможности Access 2000 несколько шире, чем те, которые

использованы и показаны в книге. Поэтому заключительная глава была по­священа описанию этих нераскрытых моментов и особенностей.

2. Желательно, чтобы при первой инсталляции среда Access 2000 устанавли­валась не отдельно, а в составе пакета Office 2000. При этом, чтобы не возни­кало каких-либо непредвиденных затруднений, лучше устанавливать пакет на базе версии Windows не ниже Windows 98.

3. Условное форматирование позволяет представлять в особом формате поля, которые соответствуют определенным, заранее заданным критериям. По функциям эта операция является разновидностью пользовательского запро­са к базе данных. Более того, практически все критерии, применяемые в ус­ловном форматировании, могут задаваться и в запросе.

4. В предыдущих версиях Office буфер обмена был один, и в каждый момент времени с помощью буфера можно было работать только с одним файлом.

Objects

• «ш?

^ 1

3

Page 267: Access 2000. Проектирование баз данных-OCR

Резюме 267

В пакете Office 2000 таких буферов стало 12. Соответственно, пользователь может обрабатывать одновременно до 12 файлов.

5. Access 2000 автоматически переносит изменение имени поля на все зависи­мые от него объекты: запросы, формы, таблицы, отчеты, поля. Поэтому пользователь может без дополнительной корректировки продолжать работу с приложением.

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

7. Как правило, файл базы данных является довольно «рыхлым». В нем много пустых или частично заполненных ячеек. Поэтому возникает необходимость сжать базу данных, когда она не используется, чтобы БД занимала меньший объем памяти. В активном же состоянии база данных разворачивается до ис­ходного размера. Такое сжатие в Access 2000 может проводиться автомати­чески.

8. Работа с БД, выполненной в одной из предыдущих версий Access, в среде Access 2000 требует предварительного преобразования (конвертации). Эту же операцию приходится выполнять и в случае обратного перехода.

Page 268: Access 2000. Проектирование баз данных-OCR

Алфавитный указатель

тоотчет 92, 103 тостраница 108, 122 тоформа 56 шерсанд 185 тумент 144

зы данных 12 БДЧЭС 125, 140 Контроль ЧС 125, 140 Контрольно-измерительные триборы 124 нки данных 9 блиографическая информация 18 блиотекаУВА 229 анк 116 ianpoca 149 сонструктора 156 •траницы 116

ладка ivent 206 -orms 221 4асго 144 Queries 148 ieports 221 ables 150 эженные 'тчеты 97 траницы доступа к данным 114 аблицы 50 юрмы 62 гшний ключ 47 ражение 223

Г Гиперссылки 84 Группировка 91, 95, 97 Групповые операции 153

д Двумерные файлы 46 Дизайн 14 Динамические ссылки 106 Документ 19 Драйвер ODBC 198 Дубликат 232 Дублирование 181

3 Закладка 86 Запись 114 Запрос

SQL 147, 157 к серверу 147 на добавление 188 на изменение 146 на обновление 147 на объединенную выборку 173 на поиск повторяющихся записей 181 на присоединение 134, 147 на создание таблицы 174 на удаление 184 перекрестный 193 подзапрос 147 с дополнительными условиями 159 с использованием групповых операций 153, 154 с параметрами 166 со связями 169 управляющий 147

Page 269: Access 2000. Проектирование баз данных-OCR

Алфавитный указатель 269

И Иерархические

дерево 51 структуры 50, 54

Импорт 125 Инструкция

On Error 234 Resume 235 SQL 151, 157

К Картографическая информация Ключевые слова 227

INNER JOIN 167 ON 167 WHERE 158

Код 31 Visual Basic 260 записи 237 первичный 30 репликации 48

Количество записей 164 Командная кнопка 247 Конвертация 14,124 Конвертеры 123, 140 Конкатенация 185 Константа 223

внутренняя 224 символьная 224

Конструктор кнопок 72 макросов 214 отчетов 92 страниц 115 таблиц 32

Контекстное меню 67 Копии таблиц 263 Корневая часть слова 159 Критерии

выбора СУБД 14 выражения 256 значения поля 256

Л Логические

выражения 15 структура 23

м Макрокоманды 142 Макрооператоры 142 Макрос 142 Маркер 117 Мастер 14

запросов 181 кнопок 70 отчетов 95 печати связей 52 подстановок 42 преобразования поля 34 страниц 109 таблиц 28, 54, 86 форм 58

Методы VBA 220 Модуль 100

класса 223

н Набор ANSI 210 Начальная форма 64, 90

О Обработка

ошибок 234 событий 206, 217

Объекты 220 Окно

базы данных 75 диалоговое 60 конструктора 94 мастера 70 модуля VBА 221 редактирования связей 48

Операнд 167 Операторы 143 Операция замены/вставки 132 Описатели 225

Page 270: Access 2000. Проектирование баз данных-OCR

270 Access 2000

Отношение «одип-к-одному» 31 Отчет 95

п Панель инструментов 66 Первичный код 30 Переключатель 43 Переменные

неявные 223 область действия 223 явные 223

Подстановки 42 Подчиненная форма/отчет 92 Показатель 18 Получение фокуса 210 Поля-дескрипторы 23 Построитель

выражений 232 макросов 232 программ 143

Потеря фокуса 208 Префикс 127 Программа VBA 221 Программная среда 13 Просмотр объектов 229 Процедуры

Function 227 Sub 226 VBA 145 инструкция 226 описание 226

Р Расширение

.dat 125

.dbf 125

.doc 84

.map 82

.mdb 105

.snp 99, 104 Режим

SQL 158 диалога 12 конструктора страницы 108, 122 конструктора форм 61 корректировки 12 начальной загрузки 12

реорганизации и анализа 12 таблицы 28, 54, 155 фильтра 75 формы 130

Реквизит 18 значение 18 имя 18 признак 18

Репликация 33, 34

С Свертка информации 51 Сводная таблица 119, 122 Свойства объектов 220

Format 35, 54 Связанные поля 48

каскадное обновление 49 каскадное удаление 49

Связи 47 Сервер 118 Словарные файлы 139 Событие 205 Сортировка записей 134 Списки

аварий 160 аргументов 227 полей 119

Средства управления программой 230 Статическая копия отчета 99, 104 Столбец подстановки 43 Страница доступа к данным

анализ данных 107 ввод данных 107 групповая 121 диалоговый отчет 107

Структура двухуровневая 51 трехуровневая 51

Структуризация данных 19 СУБД 127, 131, 140

Т Таблицы

базовая 56 дочерняя 48 родительская 48

Page 271: Access 2000. Проектирование баз данных-OCR

Алфавитный указатель 271

Твердая копия 55 Тип объединения 49 Тип связи 49 Типы данных 32

Autonumber 33 Currency 33 Data/Time 33 Hyperlink 34 Lookup Wizard 34 Memo-поля 33 Number 33 Text 33 Yes/No 34

У Условия отбора 184 Условные операторы 230 Уточнение 22

Ф Файлы

данных 15 источник 126

Фактографическая информация 18 Фильтр 232 Флажок 112 Фокус 206 Форматы данных 14, 123, 140 Формы 55, 90 Функции 155, 225

встроенные 144 специализированные 144

ч ЧС 84, 87, 124, 174

э Экспорт страницы доступа к данным 119 Элемент

данных 19, 69, 120, 208, 210 управления активный 208

Я Языки программирования 141, 145

С CD-ROM 252 Clarion 3.0 12 Customize 252

D Data Access Page Toolbox 106, 122 Data type 32 dBase3 125 Description 32

E Excel 34, 82, 83, 121

F Field name 32 FoxPro 2.5 12

H HTML 106

M Microsoft Office 82, 83 MS Query 199

N Null 78

О ODBC 198 OLE 34

s Setup.exe 252 SQL 141

V VBA 219

W Web

браузер 118 сервер 118