А. Ю. Гончаров
ACCESS 2003 Рассмотрены примеры создания реальных баз данных
со
2Ш
О
5
А. Ю. Гончаров
ACCESS 2003 Сам,оуч.ител,ь с
КУДИЦ-ОБРАЗ Москва • 2004
БЕК 32.973-018.2 Гончаров А. Ю. ACCESS 2003. Самоучитель с примерами - М.: КУДИЦ-ОБРАЗ, 2004. - 272 с. Книга посвящена созданию баз данных в широко используемом приложении Microsoft Office Access 2003. Приведены необходимые сведения об этой системе управления базами данных и особенностях ее работы. Рассказывается о том, как создавать таблицы, запросы, формы, отчеты, страницы доступа к данным, программы на Visual Basic. Обсуждаются приемы обработки данных. В качестве примеров рассмотрена последовательность создания нескольких баз данных, готовые файлы которых можно загрузить из Интернета. Книга предназначена для начинающих разработчиков баз данных, преподавателей, студентов, пользователей Access. ISBN 5-9579-002I-4 Алексей Юрьевич Гончаров ACCESS 2003. Самоучитель с примерами Учебно-справочное издание Корректор С. Красильникова Макет В. Клименко "ИД КУДИЦ-ОБРАЗ" 119049, Москва, Ленинский проспект, д. 4, стр. 1 А. Тел.: 333-82-11; E-mail:
[email protected]; http://books.kudits.ru Подписано в печать 06.04.2004. Формат 70x90/16. Бум. газ. Печать офс. Усл. печ. л. 19,9. Тираж 3000. Заказ 870 Отпечатано в ОАО «Щербинская типография». 117623, г. Москва, ул. Типографская, д. 10
ISBN 5-9579-0021-4
© А.Ю, Гончаров, 2004 © Макет, обложка "ИД КУДИЦ-ОБРАЗ", 2004
Содержание Предисловие
7
Глава 1. Введение в Microsoft Access 2003
9
1.1. Область применения Access 1.2. Профессии, связанные с Access 1.3. Термины, применяемые в Access 1.4. Структура базы данных 1.5. Разработка баз данных и психология пользователей 1.6. Начало работы с Access 1.7. Использование мыши 1.8. Справочная информация о программе
Глава 2. Таблицы 2.1. Конструктор таблиц и форматы данных Текстовый формат Поле MEMO Числовой формат Счетчик Денежный формат Формат «Дата/время» Логический формат Поле объекта OLE Поле гиперссылок Мастер подстановок Создание масок ввода 2.2. Режим таблицы 2.3. Мастер таблиц 2.4. Связывание таблиц Схема данных Формирование связи Связь «один-ко-многим» Связь «один-к-одному» Связь «многие-ко-многим» ..
9 11 11 15 18 20 23 24
26 26 30 34 34 36 38 39 41 42 44 45 49 50 55 57 58 60 61 61 62
Содержание Глава 3. Пример простейшей базы данных 3.1. Постановка задачи 3.2. Создание таблицы 3.3. Ввод данных в таблицу 3.4. Быстрое создание формы 3.5. Работа с базой данных Команда Автонабор Сортировка Использование фильтров Печать объекта базы данных
....63 63 64 66 69 72 72 72 73 76
Глава 4. Компьютеризация данных (пример)
78
4.1. Организация ввода данных. Первая таблица 4.2. Запрос с вычисляемым полем 4.3. Создание второй таблицы 4.4. Связывание таблиц 4.5. Быстрое создание формы 4.6. Мастер по анализу таблиц 4.7. Анализ данных
78 80 82 83 84 86 93
Глава 5. Запросы
95
5.1. Мастер запросов 5.2. Конструктор запросов 5.3. Построитель выражений. Создание вычисляемого поля 5.4. Перекрестный запрос 5.5. Выборка повторяющихся записей 5.6. Другие способы группировки записей 5.7. Редактирование данных с помощью запросов Запрос на добавление Запрос на обновление Запрос на удаление Запрос на создание таблицы
Глава 6. Формы 6.1. Автоформы 6.2. Мастер форм 6.3. Конструктор форм 6.4. Элементы управления Надпись Флажок..
96 99 101 105 110 115 117 117 120 122 122
124
,
124 127 130 133 133 ...135
Содержание Поле. Пример вычисляемого поля Списки Рамки объектов Кнопки Мастер кнопок Группа переключателей Подчиненная форма Вкладки 6.5. Диспетчер кнопочных форм
137 141 145 146 147 149 152 154 154
Глава 7. Книжная база данных (пример)
157
7.1. Создание таблиц 157 7.2. Связывание таблиц. Связи «один-ко-многим» и «многие-ко-многим» ..160 7.3. Создание запросов , 161 7.4. Создание формы с помощью мастера 162 7.5. Совершенствование формы 164 Изменение размеров полей ' 164 Добавление нового поля 166 Создание поля со списком. Мастер подстановок 170 7.6. Импорт данных 177 7.7. Мастер импорта 179
Глава 8. Отчеты 8.1. Быстрое создание автоотчета 8.2. Печать отчета 8.3. Конструктор отчетов 8.4. Сортировка и группировка в отчете 8.5. Мастер отчетов 8.6. Анализ данных с помощью отчетов 8.7. Построение диаграмм
Глава 9. Подготовка данных для Интернета 9.1. Статические файлы в формате HTML 9.2. Динамические файлы в формате HTML (ASP) 9.3. Создание страницы доступа к данным 9.4. Публикация данных в Интернете
182 182 183 185 187 190 194 196
202 202 206 212 216
Содержание
Глава 10. Программирование
218
10.1. Редактор Visual Basic 218 10.2. Получение информации об объектах языка 220 10.3. Модули, макросы и функции 221 10.4. Пример программы и формы 224 10.5. Пример функции (вычисление «суммы прописью») 227 10.6. Отладка программ 235 10.7. Создание макросов 237 10.8. Список макрокоманд 239 Макрокоманды для работы с данными 239 Макрокоманды для управления объектами базы данных и Access 239 Макрокоманды для управления окнами и элементами управления ....240 Макрокоманды для импорта и экспорта данных 241 Макрокоманды для решения задач программирования : 241 10.9. События базы данных 242 События, связанные с клавиатурой и мышью 242 События данных 243 События фокуса 243 События окна формы или отчета 244 События фильтра 244 События ошибки и таймера 244 События печати 244
Глава 11. Пример базы данных рассылки почты 11.1. Таблица,для сбора электронных адресов 11.2. Таблица и форма для написания писем Создание таблицы Создание запроса Создание формы Создание элементов управления Панель перехода по записям Использование элемента группы как рамки вокруг кнопок 11.3. Создание подчиненной формы с адресами 11.4. Создание встроенной инструкции пользователя Текст инструкции пользователя 11.5. Создание дополнительных элементов управления 11.6. Программа для отправки писем 11.7. Настройка Microsoft Outlook для отправки писем 11.8. Рассылка почты ..
245 245 247 247 248 248 249 251 254 254 256 259 260 262 268 ...270
Предисловие MS Access - одна из самых популярных систем управления базами данных (СУБД), а ее новая версия Microsoft Office Access 2003 не может не вызывать интереса у пользователей. Система Microsoft Office установлена .на огромном количестве компьютеров (в том числе и в офисах), поэтому для пользователей бывает очень полезно получить базу данных, интегрированную с другими «офисными» продуктами. Но в отличие от Word или Excel, которые позволяют быстро и просто создавать пользовательские документы. Access требует для создания базы данных определенного набора знаний. В то же время круг разработчиков баз данных очень широк: от профессионалов, создающих базы на заказ, до тех, кому надо сделать базу, скажем, на работе, для решения конкретных задач. Эта книга написана для начинающих разработчиков баз данных - т,:х. кто хочет научиться создавать собственные проекты и стать профессионалом. Поэтому, помимо описания самого Access, в книгу включены четыре примера разработки баз - от самой простой, которую можно сделать за один день, до сравнительно сложной, на создание которой уходит не менее месяца. Файлы баз данных выложены на моем сайте по адресу http://goncharov.freeservers.com/access2003: organizacii.mdb - пример «телефонной» БД из главы 3; delo.mdb - пример коммерческой БД из главы 4; testl .mdb - примеры форм и процедур из глав 6 и ] 0; knigi.mdb - пример библиографической БД из главы 7; pochta.mdb - пример БД рассылки из главы 1 1 . Access - довольно «хитрая» система разработки, поэтому я постарался как можно более понятно рассказать о тех навыках, которые требуются разработчику в первую очередь. Важно освоить основные приемы, узнать, «где что лежит», и тогда дело двинется вперед, а опыт приходит с работой. Не надо пытаться запомнить все сразу: в конце концов, у программы есть встроенный справочник, многие проблемы обсуждаются на форумах в Интернете. Зато у книги есть свои преимущества: ее можно читать там, где нет компьютера (и поэтому в книге большое количество иллюстраций), в ней есть расписанные по шагам приемы работы
8
Предисловие
и, конечно, готовые примеры. Я старался сделать книгу как можно более понятной - без манипуляции сложными терминами и ожидания, что пользователь будет иметь специальную подготовку. Книга была закончена только после выхода русифицированной версии Microsoft Office System, потому что многие пользователи не знают английский язык - это тоже надо было учитывать. Я надеюсь, что книга принесет вам реальную пользу и поможет решить ваши задачи. Желаю удачи! Алексей Гончаров
Глава 1 Введение в Microsoft Access 2003 Сейчас даже неспециалисты в области разработки баз данных смело берутся за создание собственных проектов. С одной стороны, программные продукты совершенствуются и становятся все более удобными, для достижения цели требуется все меньше программирования и больше работы с готовыми объектами. С другой стороны, труд разработчиков ценится по-прежнему высоко, и не всегда можно нанять для создания базы данных профессионала. Естественной реакцией на эти факты является расширение армии непрограммирующих профессионалов людей, имеющих насущные интересы в области информационных технологий и достаточно смекалистых, чтобы обойтись без чужой помощи. «Помоги себе сам» - вот девиз таких разработчиков баз данных. Поэтому в этой главе мы начнем с самого начала.
1.1. Область применения Access СУБД-системы управления базами данных-довольно обширный класс программ. Появились они достаточно давно, еще в те далекие времена,, когда на экранах дисплеев можно было видеть только буквы и цифры, но никак не рисунки. Но тогда специалисты по вычислительной технике уже поняли, что компьютер является превосходным средством хранения информации и, что самое главное, средством обработки этой информации. Сейчас это очевидно, но раньше почему-то компьютер считали большим автоматизированным калькулятором, что, безусловно, сужало область его применения. Как бы там ни было, когда возникла необходимость хранить большие объемы данных, встал вопрос, как именно следует это делать. Создавались самые разные варианты, но потом все пришли к выводу, что наилучшим решением являются так называемые реляционные базы данных. В них вся информация распределяется по нескольким таблицам, а между таблицами устанавливается связь (от английского relation - отношение, связь). Оказалось, что практически все задачи, требующие использования баз данных, можно решить именно с применением реляционной модели.
10
Глава 1
Access - типичная «настольная» система. Этот термин взят по аналогии с типом компьютеров - персональных, или настольных. Так говорят, чтобы подчеркнуть отличие этой системы от других, которые используются, например, на серверах. Задачи и особенности использования серверной и персональной баз данных настолько различны, что можно считать, что есть две разные области применения вычислительной техники, хотя в обоих случаях мы имеем дело с эксплуатацией баз данных. Помню, как лет десять назад я познакомился с Access 2.0 - мало известной тогда программой. Она была совсем не похожа на используемые тогда системы Clipper, dBase, FoxPro. Вид этой системы, прямо скажем, не поражал. Какое-то странное окно с вкладками в основном окне программы, много непонятных инструментов. Единственное, что тогда привлекало, - программа была сделана для Windows, а не для MS-DOS. С того времени появилось пять новых версий Access. Clipper, dBase и многие другие СУБД давно забыты, от FoxPro сама Microsoft давно хотела отказаться, но кое-как поддерживает эту систему из-за большого количества приверженцев этой программы. Зато Access, став в конечном итоге Access 2003, превратился в достаточно развитую систему с массой интересных возможностей. Существует даже такая сфера малого бизнеса: разработка баз данных Access на заказ. Несмотря на то что существует много СУБД, Access якляется едва ли не самой популярной программой такого рода. Почему? Несомненно, на его популярность влияет популярность пакета программ, в который он входит, - Microsoft Office System 2003. Если во многих организациях пользуются именно этим пакетом программ, то резонно предположить, что и СУБД используют из этого пакета, .даже если она по каким-то параметрам уступает другим продуктам. Во-первых, пользователям легче освоить работу с такой программой, потому что многие инструменты работают одинаково в разных приложениях (не говоря уже о том, что рисунки на кнопках одинаковые). Во-вторых, легче осуществляется обмен данными между приложениями - не надо переходить'от стандарта к станда|лу. Кроме того, надо учитывать, что по Access накоплено огромное количество различных материалов: книг, программ, баз данных, сайтов в Интернете. Получается, что преимущество Access заключается в первую очередь в минимизации затрат и времени на разработку пользовательского приложения. А это во многих случаях является решающим фактором выбора СУБД.
Введение в Microsoft Access 2003
//
1.2. Профессии, связанные с Access Да, в этом нет ничего удивительного. Уже появился ряд профессий, сутью которых является работа с СУБД Access. Убедиться в этом можно, полистав любую газету, публикующую объявления о найме на работу. Очень популярной является профессия «оператор базы данных». В крупных коммерческих организациях приходится выделять специальных, людей, чтобы они заносили текущую информацию в базу. Очень часто в качестве базы данных используется именно база данных Access. От оператора требуется, например, умение работать с Access как с приложением, конфигурировать окна для того, чтобы данные было вводить максимально удобно, проверять орфографию, находить ошибки набора, выполнять поиск по базе данных и фильтрацию. Каждодневный ввод больших объемов данных требует терпения, усидчивости и внимательности. Оператор базы данных-типично женская профессия. Не менее популярна профессия «разработчик баз данных». Ей, кстати, и посвящена данная книга. Эта профессия требует использования Access уже как средства разработки и отладки базы данных. Здесь, например, необходимо программирование на языке V i s u a l Basic, использование дизайнерских навыков для конструирования форм и отчетов, абстрактного мышления для создания схемы распределения данных по таблицам. С Access связана и профессия администратора сети предприятия. Часто базу данных размещают на сервере, чтобы обеспечить доступ к данным многих пользователей по сети. В этом случае приходится решать задачи обеспечения одновременного доступа к базе, определения прав пользователей, обеспечения безопасности данных (предотвращения краж информации и резервного копирования), Хотя формально не существует профессия «пользователь», для многих работников основная профессия тесно связана именно с пользовательской работой. Иными словами, человек в течение рабочего дня может часто обращаться к базе данных за информацией.
1.3. Термины, применяемые в Access Прежде чем приступить к изучению самой программы, полезно познакомиться с терминами, которые в ней используются. Базы данных - довольно специфичная область, и многие понятия в ней нигде больше не используются. Начнем, пожалуй, с английских терминов и аббревиатур, которые не переводятся на русский язык.
12
Глава 1
DBMS - database management system, то же самое, что и СУБД. HTML (HyperText Markup Language)-язык разметки гипертекста. Основа для создания веб-страниц. Состоит из ста с небольшим тегов, позволяющих отформатировать определенным образом текст, графику, таблицы, ссылки и т. д. MDB, МОЕ - расширения файлов баз данных Access. Первоначально создается база данных в формате MDB, После компиляции (скрытия текста программ и запрещения доступа к некоторым объектам), а также шифрования данных разработчик получает аналог базы данных в формате МОЕ. MEMO - тип данных, позволяющий хранить большое количество текстовых данных. Одно поле может содержать до 65 535 символов (около 25 страниц). OLE (Object Linking and Embedding) - протокол для связывания и внедрения объектов. Позволяет использовать в формах и отчетах данные различных форматов - например, графику или документы, созданные в других программах. SQL (Structured Query Language) - структурированный язык запросов. Стандартный (для многих СУБД) язык, позволяющий формировать запросы на отбор (сортировку, объединение и т. д.) определенных данных из таблиц. ODBC (Open Database Connectivity) - протокол, позволяющий получать доступ к данным других СУБД. Visual Basic - объектно-ориентированный язык, который используется для программирования во многих продуктах Microsoft. В Access для написания и отладки программ существует встроенный редактор. А вот перечень русских терминов. База данных (Database) - в Access это файл, в котором хранятся все объекты, необходимые для обеспечения работы пользователя: текстовые и графические данные, программы, формы, отчеты, руководства и т. д, Объекты базы данных - основные части БД (таблицы, запросы, формы, отчеты, страницы доступа к данным, макросы и модули). Термин «объект» используется и в языке Visual Basic, где он имеет близкое значение (правда, объектов в VB намного больше). Свойства (Properties) - набор параметров, характеризующих объект. Визуально этот набор представлен в виде окна, которое открывается одноименной командой. Это понятие используется также и в Visual Basic. Контекстное меню (Shortcut menu) - меню, связанное с определенным объектом и содержащее команды только для этого объекта. Контекстное меню раскрывается щелчком правой кнопкой мыши.
Введение в Microsoft Access 2003
13
Мастер (Wizard) - компонент программы, созданный для решения определенной задачи. Особенностью мастера является набор диалоговых окон, которые пользователь просматривает одно за другим, чтобы выбрать все необходимые параметры. Конструктор (Design) - режим разработки объекта базы данных. В противоположность ему для работы с объектом используется режим просмотра. Таблица (Table) - объект, состоящий из полей (столбцов) и записей (строк). Основной контейнер для хранения пользовательских данных. Запрос (Query) - способ отбора данных (записей), хранящихся в таблицах, или способ обработки данных, например сортировки. Для формулирования запросов используется язык SQL, а визуально запрос в Access представлен в виде окна с таблицей. Форма (Form) - окно или область в окне, где представлены поля с данными, таблица или элементы управления. Отчет (Report) - средство для компоновки данных с целью вывода их на печать. Страница доступа к данным (Data access page) - документ в формате HTML, источником информации в котором служит база данных Access. Макрос (Macro) - набор команд, который позволяет автоматизировать выполнение операций или создавать новые операции. В большинстве программ Microsoft Office макросы представляют собой программы на языке Visual Basic, но в Access это не так: для создания макросов существует ограниченный набор специальных команд, a Visual Basic используется для написания более сложных процедур и функций. Существует и способ конвертации: макрокоманды можно запускать средствами Visual Basic. В окне базы данных Access есть специальная вкладка, позволяющая создавать и запускать макросы. Модуль (Module) - контейнер для хранения программ Visual Basic. В окне базы данных Access - одноименная вкладка, позволяющая работать с программами. Рассмотрим основные термины для таблиц. Связь или отношение (Relation) - установка соответствия между записями различных таблиц и запросов. Связь устанавливается по значению одного из полей (как правило, ключевого). В Access существует несколько видов связей. «Один-кодному» - одной записи соответствует только одна запись в другой таблице, «Одинко-многйм» - одной записи могут соответствовать несколько записей в другой таблице. «Многие-ко-многим» - комбинация двух связей «один-ко-многим».
14
Глава 1
Схема данных -- графическое представление связей между таблицами и запросами. Для показа и редактирования схемы данных открывается отдельное окно (в английской версии программы Relationships). Фильтр (Filter) - способ отбора записей из таблицы или запроса. В Access применяются несколько видов фильтров. Сортировка (Sorting) - виртуальная перестановка записей таблицы или запроса с целью упорядочить их по значению одного поля (или нескольких полей). В Access есть несколько путей для выполнения сортировки. Поле (Field) - колонка таблицы и в то же время набор параметров, определяющих тип данных в этой колонке. Поля используются как для хранения данных, так и для вычисления новых значений. По значениям полей производится связывание таблиц, сортировка и фильтрация. В формах этот термин имеет совсем другое значение. Индекс (Index) -- свойство поля, позволяющее ускорить поиск данных и сортировку по значению этого поля. Индексация применяется практически во всех СУБД, и от того, как она организована, зависит быстродействие СУБД. Первичный ключ (Primary key) - поле, которое не содержит повторяющихся значений и позволяет идентифицировать каждую запись в таблице. Классический пример первичного ключа- поле «номер по порядку». Ключевые поля всегда индексированы. Счетчик (AutoNumber) - поле, в котором производится автоматическая нумерация записей. В формах часто используются следующие понятия. Элемент управления (Control) - объект из числа хорошо знакомых всем, кто имел дело с программами: кнопка, флажок, список, переключатель и т. д. Вкладка (Page) - часть окна, позволяющая увеличить количество доступных элементов. В каждый момент времени видна только одна вкладка, а доступ к разным вкладкам осуществляется с помощью ярлычков с подписями. Кнопка (Button) - самый популярный элемент управления, визуально имитирующий обычную кнопку. Как правило, кнопки позволяют запустить некоторую подпрограмму после щелчка на них мышью. Флажок (Check box) - элемент управления в виде «галочки». Может находиться в двух состояниях: «установлен» или «сброшен». В формах используется для определения логических (по принципу да-нет) параметров. Переключатель - элемент управления для выбора одного варианта из нескольких. Визуально переключатели представляются в виде набора кружков (Option buttons) или кнопок (Toggle buttons).
Введение в Microsoft Access 2003
15
Список (Combo box) - элемент управления для выбора одного варианта из нескольких. Подпись (Label) - поясняющий текст, расположенный рядом с элементом управления. Гиперссылка (Hyperlink) - часть текста или рисунок, которые реагируют на щелчок мышью и позволяют перейти к другой части документа, другому документу или веб-странице. В англоязычной документации этот объект называют по-разному, anchor, link или reference. Колонтитул - зона в верхней или нижней части страницы для размещения определенной информации (например, номера страницы). Колонтитулы в Access создаются в формах и отчетах. В английской версии программы верхний и нижний колонтитулы называются Page Header и Page Footer соответственно.
1.4. Структура базы данных Структура базы данных Access показана на рис. 1.1. Основной единицей хранения данных здесь является таблица. Ее колонки называются полями (field), а строки, применительно к базам данных, называются записями (record). Пользователь может создавать поля и записи, определять их свойства, заполнять данными и при необходимости удалять. Вообще говоря, можно представить базу данных, состоящую только из одной таблицы, хотя на практике таблиц бывает несколько. При конструировании базы данных должно соблюдаться правило: данные не должны повторяться. Это диктует необходимость размещения данных в разных таблицах. Чаще всего базы данных Access разрабатываются для коммерческих целей, и необходимые примеры есть во всех учебных пособиях, включая сам Access, который имеет в своем составе учебную базу данных «Борей» (northwind.mdb или Борей.mdb). Сохраняя эту традицию, рассмотрим небольшой классический пример: данные о заказах в коммерческой базе данных и таблица товаров. Заказ можно охарактеризовать определенным набором атрибутов: кто заказал, когда, какие товары и как произведена оплата. Каждый заказ является по-своему уникальным: все данные не могут совпасть. Даже если один и тот же покупатель два раза приобрел один и тот же набор товаров, то сделал он это, очевидно, в разные дни. И даже если ему пришла в голову мысль купить в одной организации в один день два одинаковых набора товаров, то и в этом случае заказы будут отличаться но-
•••'
Глава 1 Таблицы
Запросы
SQL
L ..
Формы
Отчеты
.
._ .*_. . Страницы дои у п а к данным
Модули V i s u a l Basic
Рис. 1 . 1 . Схема взаимодействия объектов базы данных
мерой заказа, по которому в торгующей организации всегда ведется учет таких документов. Поэтому в таблице для каждой характеристики заказа должно быть предусмотрено отдельное поле, а каждый заказ займет одну строку, то есть запись (рис. 1,2). В нашем примере такие записи находятся в таблице Заказы. Но в каждый заказ входит один или несколько товаров. Очевидно, что в этом случае информация о заказанных товарах должна находиться в отдельной таблице (в нашем случае Заказано), чтобы исключить дублирование данных. Запись из таблицы Заказы связана с несколькими записями таблицы Заказало по значению кодового поля, Мы видим, что информация о заказе занимает одну строку таблицы, а данные о товарах могу]1 занимать несколько строк - такая связь называется «один-ко-многим». Информация о том, как связаны таблицы, тоже хранится в файле базы данных и носит название схемы данных. Связывание таблиц.- довольно обширная тема, которая обсуждается в главе 2. Вид связи не может быть выбран произвольно - его определяет конкретная ситуация. Информацию из связанных таблиц можно объединить с помощью запросов форм или отчетов. Пользователь базы данных может и не догадываться о том, как именно хранятся данные, если он работает с формой. В сущности, организация структуры данных и направление информационных потоков и составляют предмет работы разработчика баз данных, и данная* книга в основном посвящена именно этому.
:
Введение в Microsoft Access 2003
':•
\ | г-.с.дзэк«а| «-н Иматспьетво ГодВькоаа йннотэшвд
Т
яднн г
"
'
Счетчик екстоеый екставый ексттЯ
•кстати
Чпс повой lone MEMO
е га» Дм одовкм По иив~дн полей на* Индексированное поле Схзтпе Юннкод Pew™ 1МЕ Режим предложен™ IME
t*T Да Нет Нет
Кот тру STOP. F6 = переключен»» икон.
Рис. 2.2. Окно конструктора базы данных
Как видим, структура таблицы тоже представлена в виде таблицы - бланка. С бланком можно работать традиционным способом: менять ширину столбцов при помощи мыши, удалять и добавлять строки с помощью команд главного меню, Строки этой таблицы можно выделять и копировать в буфер обмена в том случае, если надо перенести их в структуру другой таблицы.
Таблицы
29
Это, кстати, удобный способ создания в одной базе данных нескольких таблиц со сходной структурой. В этом случае можно открыть существующую таблицу в режиме конструктора, выделить все строки с именами полей и скопировать их в буфер обмена. Затем окно конструктора можно закрыть, выбрать команду Создание таблицы в режиме конструктора и в открывшемся окне в пустой бланк вставить строки из буфера обмена. В этом случае все характеристики полей будут скопированы. -_
В окне базы данных в разделе Таблицы рядом располагаются как ярлыки команд для создания таблицы, так и ярлыки самих таблиц.
Графа Описание не является обязательной для заполнения, но она полезна, так как позволяет создать подсказку для пользователя. Эта подсказка (текст) появляется в нижней строке окна, когда пользователь устанавливает курсор на соответствующее поле. Одно из полей таблицы должно быть определено как ключевое. Чтобы создать его, установите курсор на строку бланка и нажмите кнопку Ключевое поле на панели инструментов или выберите команду Ключевое поле из контекстного меню, связанного с данной строкой. Есть и похожее понятие: первичный ключ. Он может включать несколько полей. Создавать такой составной ключ имеет смысл в том случае, когда только комбинация значений нескольких полей может однозначно идентифицировать запись в таблице. Для того чтобы создать такой составной ключ, надо выделить несколько строк в бланке, а затем использовать инструмент Ключевое поле. О том, что поле является ключевым, свидетельствует изображение ключика в области выделения строки, содержащей данные о поле. В таблице не может быть более одного ключа, поэтому если символом ключика помечены дне или более строки, то, значит, эта таблица имеет составной ключ. Параметров у поля достаточно много, но и справку по этим параметрам получить довольно-таки легко. Необходимо установить курсор на заданную строку и нажать клавишу F1. Будет открыт раздел справочника, посвященный именно этому параметру. К моменту работы с конструктором у вас уже должен быть хотя бы «эскизный проект» (а еще лучше - техническое задание) будущей базы данных, откуда было бы ясно, какие поля должны присутствовать в таблице. В первую очередь надо определить форматы полей. Разберемся, какие бывают форматы. Разумеется, при конструировании базы данных нет необходимости задавать все
30
Глава 2
свойства полей. Я бы даже сказал, что их не надо определять до тех пор, пока в этом не возникнет настоятельная необходимость. Но чтобы полностью использовать потенциал Access, вы должны при работе с программой держать «в уме» возможность применения того или иного свойства.
Текстовый формат Длина текстового поля может достигать 255 символов. От разработчика требуется правильно угадать размер поля. Сколько символов нужно, например, для хранения адреса электронной почты? А для фамилии, имени и отчества? Сразу и не скажешь. Если поле будет выбрано слишком коротким, то заполняющий базу данных оператор может столкнуться с тем, что длины поля не хватит. Если поле будет слишком длинным, то при большом количестве записей размеры базы данных будут неоправданно расти. Длину поля можно уменьшить и тогда, когда база данных уже создана, но это связано с риском потери данных. На рис. 2.3 показана вкладка параметров текстового поля. Здесь и далее на рисунках будут показаны параметры поля, принятые по умолчанию. Общие
Подавно i жа
Разиеа попя Формат поля Маска ввода Подпись Значение по угюпчанию Условие на значение Сообщение об ошибке Обязательное поле Пустые строки Индексированное попе Сжатие Юникод Режим IME Режим предложений IME Смарт-теги
50
Нет
Да
Нет
Да
Нет контроля
Нет
Рис. 2.3. Вкладка параметров текстового поля
Формат поля (формат отображения) используется для вывода данных в формах и запросах. Существует набор специальных символов формата, которые задают вид и размер выводимых строк. Кодовые символы формата текстовых полей представлены ниже. @ — обязательный текстовый символ или пробел; & - необязательный текстовый символ; < — преобразование символов в н и ж н и й регистр; > - преобразование символов в верхний регистр.
Таблицы
31
Формат поля может состоять из двух частей, разделенных знаком «точка с запятой». Первая часть является собственно форматом ввода, а вторая определяет значение поля, если данные в него не были введены. Маска ввода позволяет задать вид строки при наборе данных. О - обязательная цифра (0...9); 9 - цифра или пробел; ft - цифра, пробел, плюс или минус; L - обязательная буква (если используется русский алфавит, то A...Z и А.. Я); ? - необязательная буква; А - обязательная буква или цифра; а - обязательная буква или цифра; & - обязательное наличие символа или пробела; С - любой необязательный символ; Точка, запятая, двоеточие, точка с запятой, дефис, слэш - возможные разделители данных (они сохраняют свой вид в строке); ! - строка должна заполняться справа налево: \ -символ, введенный после обратного слэша, интерпретируется как символьная константа. Это позволяет использовать в маске вышеприведенные символы. Например, если какие-то данные должны быть разделены символом #, то в маске надо указать \#. Кроме обратного слэша можно использовать кавычки для добавления в маску произвольного фиксированного текста. Пароль - позволяет создать поле для ввода пароля, при этом набранные символы не отображаются. Знаки маски ввода О, A, L, & требуют обязательного ввода данных в поле. Поскольку некоторые виды данных (даты, время, телефонные номера) содержат стандартные разделители, то для упрощения ввода предусмотрено, что некоторые общепринятые символы-разделители воспринимаются в маске ввода «буквально», то есть записываются в поле наряду с введенными данными. Кроме этого, для определения символьных констант, состоящих из нескольких символов, допускается использовать двойные кавычки. В отличие от символов формата, символы маски ввода являются общими для всех типов полей, в которых разрешено применение маски. В качестве примера напишем маску для ввода семизначного номера телефона: .000-00-00
32
Глава2
Масками надо пользоваться с осторожностью. Еще один пример — маска ввода для заполнения анкеты. В справочнике Access приводится пример для имени человека: Это действительно так, но только в том случае, когда поле содержит только имя и ничего больше. . А как быть в случае поля «Фамилия Имя Отчество»? Может быть, подойдет такая маска? ~>!_