[an error occurred while processing this directive]

В начало

Введение

1. Базы данных в Microsoft Access 2000

2. Пользовательский интерфейс Microsoft Access 2000

3. Просмотр и редактирование данных в таблицах

4. Работаем с базой данных

Вопросы для контроля

Темы лабораторных работ

4. Работаем с базой данных

4.1. Открываем базу данных

Задание

Открываем базу данных.

Откройте базу данных Продажа_книг_1.mdb, которая находится в папке Примеры_Access_2000_RUS\Продажа_книг\Задания. Для этого:

  1. Выберите в меню «Файл» пункт «Открыть» или нажмите на кнопку в панели инструментов.
  2. В диалоговом окне «Открыть» в списке найдите папку Примеры_Access_2000_RUS\Продажа_книг\Задания.
  3. В списке файлов выберите файл Продажа_книг_1.
  4. Нажмите на кнопку «Открыть». После этого на экране появится окно базы данных с заголовком «Продажа книг 1: база данных» (рис. 10).

Рисунок 10. База данных Продажа_книг_1.mdb

На данный момент в базе данных нет ничего, кроме таблиц, названия которых отображаются в списке при нажатой кнопке «Таблицы».

Задание

Изучаем базу данных Продажа_книг_1.mdb.

  1. Рассмотрим таблицу Авторы.

Выделите в списке имя таблицы: Авторы и нажмите на кнопку «Открыть» или на клавишу [ENTER].

Рисунок 11. Данные в таблице Авторы

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

Чтобы закрыть таблицу Авторы, нажмите на кнопку в заголовке окна «Авторы: таблица».

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

  1. Теперь рассмотрим структуру таблицы Авторы.

Нажмите на кнопку «Таблицы» и выделите в списке имя таблицы: Авторы, а затем нажмите на кнопку «Конструктор».

Рисунок 12. Структура таблицы Авторы

Вы видите список полей таблицы Авторы (см. рис. 12). В соответствующих колонках этого списка для каждого из полей таблицы указывается имя, тип данных и, если необходимо, вводится произвольный комментарий для других пользователей. В этой таблице три поля. Им соответствуют три колонки, которые Вы видели, когда просматривали находящиеся в таблице данные (см. рис. 11).

Если щелкнуть мышью по строке, где содержится информация о некотором поле таблицы, в нижней части окна будут отображены свойства этого поля. На закладке «Общие» Вы можете работать со свойствами, которые задают характер самих данных. Так, щелкнув по верхней строке списка, Вы получите доступ к свойствам поля Автор. Как видите, его максимальная длина – 50 байт, в поле обязательно должны быть введены данные (в раскрывающемся списке «Обязательное поле» проставлено значение Да). Поле Автор является уникальным ключом, и по нему построен индекс - об этом свидетельствует значение Да (Совпадения не допускаются) в раскрывающемся списке «Индексированное поле». Теперь переключитесь на закладку «Подстановка». Там задаются свойства, которые регулируют способ ввода данных в поле. В частности, в раскрывающемся списке «Тип элемента управления» можно указать, каким образом система будет предлагать пользователю вводить значение в это поле таблицы. Для ввода имени автора будет использоваться обычное поле ввода (значение Поле).

Для того чтобы закрыть таблицу Авторы, нажмите на кнопку в заголовке окна «Авторы: таблица». Если Вы что-то меняли в таблице или в свойствах полей, система выведет на экран диалоговое окно-подтверждение. На всякий случай нажмите в нем на кнопку «Нет». Если Вы уверены, что сделанные Вами изменения следует сохранить, нажмите на кнопку «Да».

  1. Таким же образом ознакомьтесь со всеми остальными таблицами базы данных. Сравните их с описанием в п. 1.7.

4.2. Добавляем в базу данных таблицы

4.2.1. Использование в базе данных внешней таблицы (в формате DBF)

Создадим в базе данных таблицу для хранения сведений о клиентах. Предположим, что для работы с клиентами используется не Microsoft Access 2000, а та или иная специализированная система, отказываться от которой мы не собираемся. Эта система хранит информацию о клиентах в файле формата DBF. В Microsoft Access 2000 имеются функции импорта данных, с помощью которых можно считать данные из внешней таблицы и создать для них таблицу аналогичной структуры внутри базы данных.

Импорт данных решает большинство проблем при переходе от одной системы к другой, но в нашем случае он не вполне подходит. Если импортировать данные из внешней таблицы в нашу базу данных, то изменения, которые произойдут в таблице после этого (скажем, у одного из клиентов изменится адрес), не будут «видны» в Microsoft Access 2000. Вообще, дублирования данных рекомендуется избегать. К счастью, в Microsoft Access 2000 предусмотрена возможность включить в базу данных внешнюю таблицу и работать с ней, как со всеми остальными таблицами (правда, с некоторыми ограничениями, например средствами Microsoft Access 2000 не получится изменить структуру такой таблицы). Для этого между внешней таблицей и базой данных устанавливается связь.

Связать таблицу с базой данных возможно только в том случае, если Microsoft Access 2000 «понимает» формат этой таблицы. В Microsoft Office 2000 имеются средства для работы с таблицами в формате Microsoft Access разных версий, Microsoft Excel, DBF различных реализаций, с текстовыми файлами, документами в формате HTML, а также, при наличии соответствующих драйверов, с любыми ODBC-совместимыми источниками данных.

Таблица, которую мы будем связывать с базой данных, хранится в папке Примеры_Access_2000_RUS\Продажа_книг\Задания, имя файла - clients.dbf.

Задание

Добавляем в базу данных таблицу Клиенты.

  1. В окне «Продажа книг 1: база данных» нажмите на кнопку «Создать» (при нажатой кнопке «Таблицы»). На экране появится диалоговое окно «Новая таблица» (рис. 13).

Рисунок 13. Выбор способа создания таблицы

  1. В диалоговом окне «Новая таблица» выберите в списке пункт «Связь с таблицами». Нажмите на кнопку «OK». На экране появится диалоговое окно «Связь» (рис. 14).

Рисунок 14. Диалоговое окно «Связь». Выбор внешней таблицы для использования в базе данных

  1. В диалоговом окне «Связь» В списке папок и файлов перейдите в папку Примеры_Access_2000_RUS\Продажа_книг\Задания.

В раскрывающемся списке «Тип файлов» выберите формат dBase III. После этого в списке папок и файлов станет видно имя файла clients.dbf.

Выделите в списке имя файла clients.dbf.

Нажмите на кнопку «Связь».

После этого на экране появится сообщение о том, что связь с таблицей clients установлена. Нажмите в диалоговом окне сообщения на кнопку «OK».

В диалоговом окне «Связь» нажмите на кнопку «Закрыть».

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

Нажмите на клавишу [F2]. После этого название сделается доступным для редактирования. Введите новое название таблицы и нажмите на клавишу [ENTER]. Мы будем считать, что Вы назвали ее Клиенты.dbf Access 2000.

  1. Изменим название добавленной таблицы, чтобы оно не диссонировало с названиями остальных.

Естественно, это имя будет актуально только в пределах нашей базы данных, сам файл clients.dbf переименован не будет.

Щелкните мышью по названию таблицы clients.

Нажмите на клавишу [F2]. После этого название станет доступным для редактирования.

Введите новое название таблицы и нажмите на клавишу [Enter]. Мы будем считать, что вы назвали её Клиенты (рис. 15).

Рисунок 15. В базе данных появилась связь с таблицей Клиенты

  1. Ознакомьтесь с данными, которые находятся в таблице Клиенты.

Выберите в списке имя таблицы: Клиенты. Для просмотра таблицы дважды щелкните мышью по ее значку в списке в окне базы данных либо нажмите на кнопку «Открыть».

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

Найдите в таблице столбцы COMPANY, NAME, ADDR1, CITY, ZIP, COUNTRY, PHONE и SALUTATION. Эти поля мы будем использовать для формирования таблицы продаж и формирования отчетов о продажах. Названия столбцов говорят сами за себя, в комментариях нуждается, пожалуй, только поле SALUTATION - в нем хранится обращение к клиенту. Его можно использовать для формирования писем клиентам.

Закройте окно просмотра и редактирования таблицы. Вы можете просматривать структуру внешней таблицы, однако возможности ее изменения ограничены. Например, невозможно менять типы полей.

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

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

Предположим, что нам потребуется решать следующие задачи:

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

Перечисленные выше задачи можно будет решать в том случае, если структура базы данных позволит построить запрос, который соберет в одну запись сведения о каждой проданной книге, дату ее продажи и цену, по которой она была продана, сведения о клиенте, который ее приобрел; иначе говоря, нам нужно будет для каждой проданной книги получать записи с полями Автор, Произведение, Издательство, Объем, Год издания, Цена, Дата продажи и Клиент; найдется способ запретить повторный ввод сведений о продаже ранее проданной книги. Способ, который, как говорится, лежит на поверхности, состоит в следующем. В базе данных создается таблица Продажи со всеми необходимыми полями. Всякий раз, продавая книгу, мы будем добавлять в эту таблицу новую запись, и копировать в нее данные из соответствующих записей таблиц Произведения, Книги и Клиенты. Затем из таблицы Книги нужно будет удалить запись, которая соответствует проданной книге. Данный способ, несмотря на свою очевидность, достаточно трудоемок и неудобен. Сначала нужно собрать данные из нескольких таблиц, затем создать новую запись в таблице Продажи и поместить в нее собранные данные, затем удалить запись из таблицы Книги.

В нашем случае существует более изящное решение. Создаем таблицу Продажи с полями Код книги, Дата продажи и Клиент, причем поле Код книги делаем уникальным ключом. Эту таблицу связываем с таблицей Книги по полю Код книги отношением типа «один к одному». Всякий раз, продавая книгу, мы будем создавать для нее запись в таблице Продажи. Если книга уже продана, то попытка создать для нее еще одну запись в этой таблице автоматически приведет к неудаче, следовательно, необходимость вручную удалять записи из таблицы Книги отпадает. Чтобы получить полные сведения обо всех проданных книгах, будем использовать запрос, предусматривающий внутреннее объединение таблиц Книги и Продажи (см. п. 1.6). Чтобы получить список всех непроданных книг, будем использовать запрос, который предусматривает левое внешнее объединение этих таблиц и выбирает из результирующей таблицы только те записи, у которых значение в поле Дата продажи отсутствует (т.е. связанных записей в таблице Продажи нет). Итак, приступим.

Задание

Добавляем в базу данных таблицу Продажи.

  1. Нажмите в окне базы данных на кнопку «Создать» (при нажатой кнопке «Таблицы»). На экране появится диалоговое окно «Новая таблица».
  2. В диалоговом окне «Новая таблица» выберите в списке пункт «Конструктор» и нажмите на кнопку «OK». После этого на экране появится пустое окно редактирования структуры таблицы.
  3. Добавьте в таблицу поле Код книги. Для этого щелкните мышью в левой верхней ячейке таблицы.

Наберите в ячейке название добавляемого поля: Код книги.

Нажмите на клавишу [TAB] - курсор переместится на одну ячейку вправо, в столбец «Тип данных». Ячейка превратится в раскрывающийся список.

Выберите в этом раскрывающемся списке тип поля: Числовой. Это означает, что поле Код книги имеет тип Числовой.

Теперь сделаем поле Код книги уникальным ключом таблицы Продажи. Для этого нажмите на кнопку в панели инструментов. Обратите внимание: в узкой колонке слева от названия поля появился значок . Кроме того, внизу окна на закладке «Общие» в раскрывающемся списке «Индексированное поле» автоматически появилось значение Да (Совпадения не допускаются). Последнее означает, что таблица будет проиндексирована по своему ключевому полю.

Сделаем поле Код книги обязательным для ввода (чтобы не было записей, у которых это поле не заполнено). Для этого щелкните мышью в раскрывающемся списке «Обязательное поле» и выберите в раскрывающемся списке значение: Да.

  1. Зададим способ ввода значения в поле Код книги (рис. 16). Дело в том, что большинству пользователей, скорее всего, будет удобнее не вводить при оформлении покупки код книги вручную, а выбирать книгу из раскрывающегося списка, чтобы код заносился в поле автоматически. Чтобы обеспечить пользователю такой сервис, сделайте следующее.

Переключитесь на закладку «Подстановка».

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

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

В поле ввода «Источник строк» введите значение: SELECT Книги.[Название книги], Книги.[Код книги] FROM Книги ORDER BY Книги.[Название книги];

Это текст запроса на языке SQL. Данный запрос берет из таблицы Книги два поля: Название книги и Код книги. Каждый пункт раскрывающегося списка, предназначенного для выбора продаваемой книги, будет соответствовать одной записи из таблицы Книги и содержать значения перечисленных выше полей. Предложение ORDER BY Книги.[Название книги] нужно для того, чтобы книги в списке были отсортированы по названиям в алфавитном порядке. Заметьте, что среди этих полей нет поля Автор. Как Вы помните, нет соответствующего поля и в таблице Книги. Чтобы при выборе книги видеть еще и поле Автор, потребовался бы более сложный запрос. Но поскольку мы еще не дошли до конструирования запросов, придется выбирать книги по названию.

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

В поле ввода «Число столбцов» введите количество столбцов раскрывающегося списка. В нашем раскрывающемся списке 2 столбца.

В раскрывающемся списке «Ограничиться списком» выберите значение Да. Это заблокирует возможность ввести в поле Код книги несуществующий код.

Рисунок 16. Описание способа ввода значения в поле Код книги

  1. Добавим в таблицу поле Дата продажи (рис. 17).

Щелкните мышью в ячейке на пересечении второй строки списка полей и столбца «Имя поля».

Наберите в этой ячейке имя поля: Дата продажи.

Нажатием на клавишу [TAB] перейдите в соседнюю ячейку (вторая строка, столбец «Тип данных») и выберите в раскрывающемся списке тип: Дата/время.

Переключитесь на закладку «Общие». Введите в поле ввода «Значение по умолчанию» строку: Date(). Тогда при создании в таблице Продажи новой записи в поле Дата продажи автоматически будет заноситься текущая дата.

Рисунок 17. Описание поля Дата продажи

  1. Самостоятельно добавьте в таблицу поле Клиент. Описание способа ввода значения в этом поле представлено на рис. 18. Подсказка: запрос для формирования строк раскрывающегося списка может быть таким:

SELECT Клиенты.NAME FROM Клиенты;

Рисунок 18. Описание способа ввода значения в поле Клиент

  1. Таблица Продажи готова. Теперь нужно закрыть окно редактирования структуры таблицы и сохранить сделанные изменения.

Нажмите на кнопку в заголовке окна конструирования таблицы.

В диалоговом окне подтверждения нажмите на кнопку «Да».

В диалоговом окне «Сохранение» введите в поле имя созданной нами таблицы: Продажи и нажмите на кнопку «OK». Окно закроется, а в списке таблиц в окне базы данных появится таблица Продажи.

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

4.2.3. Создаем связи между таблицами

Задание

Добавляем таблицы на схему данных, создаем и настраиваем связи между таблицами.

  1. Нажмите на кнопку в панели инструментов. После этого на экране появится окно «Схема данных», на котором отображена схема данных. Для удобства дальнейшей работы максимизируйте это окно (а заодно и главное окно Microsoft Access 2000).
  2. Внимательно изучите схему. Если на ней уже присутствуют таблицы Клиенты и Продажи - переходите к выполнению п. 4. Если на схеме нет ни одной таблицы или присутствует только одна из них - продолжайте выполнение последующих пунктов в соответствии с реальной ситуацией.
  3. Добавьте на схему данных таблицу Клиенты. Для этого нажмите на кнопку в панели инструментов либо нажмите на правую клавишу мыши и выберите в динамическом меню пункт «Добавить таблицу». На экране появится диалоговое окно «Добавление таблицы» (рис. 19).

Рисунок 19. Добавление таблицы Клиенты на схему данных

  1. В диалоговом окне «Добавление таблицы» на закладке «Таблицы» выберите в списке имя таблицы: Клиенты.

Нажмите на кнопку «Добавить». После этого на схеме данных появится таблица Клиенты.

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

Самостоятельно добавьте на схему данных таблицу Продажи.

Нажмите на кнопку «Закрыть».

  1. Мышью отбуксируйте таблицу в наиболее удобное для Вас место схемы данных.
  2. Установим связь между таблицами Продажи и Клиенты. Напомним, что в последней полное имя клиента хранится в поле NAME.

Сделайте так, чтобы в таблицах Продажи и Клиенты были видны поля Клиент и NAME соответственно. Таблицы (точнее, списки полей таблиц) можно растягивать мышью, как обычные окна, а также прокручивать с помощью вертикальных полос прокрутки.

Отбуксируйте мышью поле Клиент из таблицы Продажи на поле NAME в таблице Клиенты.

После этого откроется диалоговое окно «Изменение связей» (рис. 20). Нажмите в нем на кнопку «Создать». Связь будет создана.

Рисунок 20. Параметры связи между таблицами Продажи и Клиенты

Некоторые переключатели в окне, изображенном на рис. 20, недоступны. Это объясняется тем, что средства автоматического поддерживания целостности данных для внешних таблиц, каковой является таблица Клиенты (см. п. 4.2.1), не работают. Впрочем, в данном случае в этом нет необходимости. Иначе обстоит дело в случае с таблицами Продажи и Книги и связями между ними.

  1. Установим связи между таблицами Продажи и Книги по полю Код Книги.

Отбуксируйте мышью поле Код книги из таблицы Книги в таблицу Продажи (но не наоборот! Почему - см. дальше).

После этого откроется диалоговое окно «Изменение связей» (рис. 21). Опишем подробно, как устанавливаются связи между таблицами.

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

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

Рисунок 21. Свойства связи

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

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

Нажмите на кнопку «Объединение». После этого откроется диалоговое окно «Параметры объединения» предназначенное для выбора типа объединения: внутреннее - кнопка выбора «1», левое внешнее - «2», правое внешнее - «3» (рис. 22). Нам в данном случае нужно устанавливаемое обычно по умолчанию внутреннее объединение. Убедитесь в том, что во включенное состояние установлена кнопка выбора «1» и нажмите на кнопку «OK». (Если кнопка выбора «1» уже была установлена во включенное состояние, можно нажать на кнопку «Отмена».) В диалоговом окне «Изменение связей» нажмите на кнопку «Создать». После этого диалоговое окно закроется, а нужная связь будет создана.

Рисунок 22. Выбор типа связей между таблицами

  1. Приведите внешний вид схемы данных в порядок (рис. 23).

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

  1. Для сохранения сделанных изменений нажмите на кнопку в панели инструментов.

Задание

Рассмотрите устройство других связей, изображенных на схеме. Чтобы открыть диалоговое окно «Изменение связей», следует дважды щелкнуть мышью по соответствующей линии, которая обозначает связь.

4.2.4. Просматриваем связанные таблицы

В Microsoft Access 2000 предусмотрена возможность, которой не было в более ранних версиях системы. Просматривая данные в таблице, Вы можете, не покидая последней, просмотреть записи из других таблиц, связанных с ней.

Обратимся к таблице Авторы на рис. 11. Столбцу Автор в ней предшествует безымянный столбец, в ячейках которого расположены значки . Иными словами, каждая запись открывается таким значком. Чтобы увидеть записи, связанные с данной записью главной таблицы, щелкните мышью по значку слева от этой записи. После этого строки главной таблицы раздвинутся и прямо под данной записью отобразятся записи, связанные с ней (значок же примет форму ). В данном случае это будут записи из таблицы Авторство. Однако поле Автор в них будет отсутствовать (попробуйте объяснить, почему!). Чтобы вернуть таблицу в исходное положение, щелкните мышью по значку еще раз.

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

Для того чтобы создать такие дополнительные связи для таблицы (в нашем случае Авторство), в меню «Вставка» выберите пункт «Подтаблица». На экране появится диалоговое окно «Вставка подтаблицы» (рис. 24).

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

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

Нажмите на кнопку «OK». Между таблицами будет создана связь. В безымянном столбце слева от полей появятся значки .

Рисунок 24. Диалоговое окно «Вставка подтаблицы»

Чтобы разорвать отношения данной таблицы со связанными таблицами, выберите в меню «Формат» пункт «Подтаблица», а в следующем меню выберите пункт «Удалить».

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

Задание

Введите таблицу Книги как подчиненную таблице Авторство.

4.2.5. Используем созданные таблицы

...Ну а теперь можно продавать книги? Можно!

Задание

Вводим данные в таблицу Продажи.

  1. Активизируйте окно базы данных (для этого можно, например, выбрать в меню «Окно» заголовок нужного Вам окна: «Продажа книг 1: база данных»).
  2. Откройте таблицу Продажи (рис. 25). Для этого в диалоговом окне базы данных дважды щелкните мышью по названию таблицы в списке.
  3. Продайте одну из книг, по своему выбору.

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

Рисунок 25. Ввод данных о продаже книг

Нажмите на клавишу [TAB]. После этого курсор переместится в столбец Дата продажи. В ячейке уже должна быть введена текущая дата.

Для перемещения в столбец Клиент снова нажмите на клавишу [TAB]. Выберите в раскрывающемся списке клиента, который приобрел книгу.

  1. Готово! Книга продана.

Задание

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

Возможно, Вы обратили внимание на некоторые шероховатости полученного решения. Во-первых, проданная книга снова появляется в раскрывающемся списке в столбце Код книги. Зачем?! Во-вторых, цена книги, введенная в соответствующем поле таблицы Книги, при продаже ни разу не появляется на экране. На практике это было бы очень неудобно. Оба недочета можно исправить, редактируя не таблицу Продажи, а использующий ее запрос. Прочитав следующий пункт и выполнив приведенные в нем задания, Вы сможете сделать это самостоятельно.

4.3. Конструируем запросы

4.3.1. Что такое запросы и какими они бывают в Microsoft Access 2000

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

В Microsoft Access 2000 поддерживаются запросы следующих видов:

  • Запросы на выборку - это запросы, которые по определенным правилам формируют из нескольких таблиц одну (см. п. 4.3.2). Так, для получения списка проданных книг можно использовать запрос, который составит из таблиц Авторство, Произведения, Книги и Продажи одну таблицу, каждая строка которой будет содержать информацию об одной проданной книге. В запросах на выборку можно использовать статистические функции и средства группировки записей (см. п. 4.3.4).
  • Запросы на создание новых таблиц - это запросы, результатом работы которых являются новые таблицы в базе данных.
  • Запросы на добавление - это запросы, которые вставляют в таблицы базы данных новые записи. Например, для ввода продаж можно было бы использовать запрос, который сначала в диалоговых окнах попросил бы пользователя ввести название книги, имя клиента и дату продажи, а затем вставил бы в таблицу Продажи соответствующую запись.
  • Запросы на изменение - это запросы, которые изменяют значения полей в записях. Представьте себе, что при проектировании ввода продаж мы пошли по несколько иному пути и решили помечать в базе данных проданные книги, присваивая специально добавленному в таблицу Книги логическому полю Имеется в наличии значение Ложь. В таком случае мы могли бы использовать запрос, изменяющий значение этого поля в записи, которая соответствует продаваемой книге.
  • Запросы на удаление - это запросы, которые удаляют записи из таблиц (пожалуйста, придумайте собственный пример по аналогии с двумя предыдущими).
  • Перекрестные запросы используются главным образом для анализа данных. Далее, чтобы посчитать объемы продаж каждого произведения за каждый месяц, мы сконструируем перекрестный запрос (см. п. 4.3.6).

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

Для описания запросов к реляционным базам данных используется язык SQL. Поскольку для пользователей, не знакомых с программированием, его освоение может представлять определенные трудности, в Microsoft Access 2000 предусмотрен визуальный конструктор, который дает возможность составлять достаточно сложные запросы примерно тем же способом, каким мы конструировали таблицы и настраивали связи между ними (кстати, для описания структуры реляционных баз данных тоже существует специальный язык - DDL). Кроме того, для создания запроса будем использовать мастер запросов.

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

Для начала рассмотрим простейший случай запроса на выборку - поиск записей внутри одной таблицы.

Задание

Ищем данные по всем авторам, которые родились до войны.

  1. Активизируйте окно базы данных (для этого можно, например, выбрать в меню «Окно» заголовок нужного Вам окна «Продажа книг 1: база данных»).
  2. В окне базы данных нажмите на кнопку «Запросы». В списке будут отображены запросы. До сих пор ни одного запроса не было создано.
  3. Нажмите на кнопку «Создать». На экране появится диалоговое окно «Новый запрос» (рис. 26).

Рисунок 26. Создание запросов с помощью мастера запросов

  1. В диалоговом окне «Новый запрос» выберите в списке пункт «Простой запрос». Нажмите на кнопку «OK». На экране появится диалоговое окно «Создание простых запросов».
  2. В диалоговом окне «Создание простых запросов» в раскрывающемся списке «Таблицы и запросы» выберите: Таблица: Авторы. После этого список «Доступные поля» будет заполнен названиями полей выбранной таблицы. Переместите в список «Выбранные поля» название тех полей, значения которых Вы хотите видеть в таблице, формируемой запросом. Для перемещения одного поля выделите его в списке и нажмите на кнопку «>». Для перемещения всех полей нажмите на кнопку «>>». Переместите все поля (рис. 27). Для перехода к следующему этапу формирования запроса нажмите на кнопку «Далее >».

Рисунок 27. В результирующую таблицу будут включены поля Автор, Дата рождения автора и Биография автора из таблицы Авторы

  1. В следующем диалоговом окне «Создание простых запросов» (рис. 28). Введите название создаваемого запроса: Авторы, которые родились до войны. Установите во включенное состояние кнопку выбора «Изменить макет запроса» - для того, чтобы можно было отредактировать запрос и наложить условие на даты рождения искомых авторов.

Рисунок 28. Последнее диалоговое окно мастера запросов

Нажмите на кнопку «Готово». После этого запрос будет открыт в режиме конструктора (рис. 29).

  1. Сформулируйте условие запроса.

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

Щелкните мышью в ячейке на пересечении столбца Дата рождения автора и строки Условия отбора. Наберите в ячейке условие отбора записей: <22.06.1941 (т.е. включать в результирующую таблицу только те записи, у которых значение в поле Дата рождения автора меньше 22.06.1941). Нажмите на клавишу [ENTER].

Рисунок 29. Изменение структуры запроса в режиме конструктора

Обратите внимание: дата заключена между символами #, как строка в кавычки.

  1. Для получения результирующей таблицы нажмите в панели инструментов на кнопку или .
  2. Для возврата в режим конструктора нажмите на кнопку в панели инструментов. Если Вы хотите посмотреть (или даже отредактировать) текст этого запроса на языке SQL, нажмите в панели инструментов на стрелку справа от кнопки и выберите в меню пункт «Режим SQL»(рис. 30).
  3. Закройте окно запроса.

Рисунок 30. Текст запроса

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

Рисунок 31. Результаты запроса

Теперь научимся формировать запросы с использованием нескольких таблиц.

Задание

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

  1. Нажмите на кнопку «Запросы» в окне базы данных, а затем на кнопку «Создать».
  2. В диалоговом окне «Новый запрос» выберите в списке пункт «Создание простых запросов». Нажмите на кнопку «OK». На экране появится диалоговое окно «Создание простых запросов» (рис. 32).
  3. В диалоговом окне «Создание простых запросов» в раскрывающемся списке «Таблицы и запросы» выберите: Таблица: Авторы. Переместите в список «Выбранные поля» все поля этой таблицы.

В раскрывающемся списке «Таблицы и запросы» выберите: Таблица: Отечественные авторы. Переместите в список «Выбранные поля» все поля, кроме поля Автор.

Нажмите на кнопку «Далее >».

В следующем диалоговом окне «Создание простых запросов» снова нажмите на кнопку «Далее >».

Рисунок 32. Подготовка запроса, использующего две таблицы

  1. В следующем диалоговом окне «Создание простых запросов» введите название создаваемого запроса: Авторы, которые издавались за рубежом.

Установите во включенное состояние кнопку выбора «Изменить макет запроса», чтобы можно было отредактировать запрос.

Нажмите на кнопку «Готово». После этого откроется окно запроса в режиме конструктора (рис. 33).

  1. Сформулируйте условие запроса.

Щелкните мышью в ячейке на пересечении столбца Издавался за рубежом и строки Условие отбора. Наберите в ячейке условие отбора записей: Истина (т.е. включать в результирующую таблицу только те записи, у которых значение этого поля принимает значение Истина). Переключатель в этом столбце установите в выключенное состояние - ведь в результирующую таблицу заведомо попадут только те записи, у которых значение этого поля является истинным, - так зачем его отображать?!

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

Рисунок 33. Запрос, использующий две связанные таблицы

  1. Для получения результирующей таблицы нажмите в панели инструментов на кнопку или .

4.3.3. Запросы с параметрами

Значения, с которыми в запросе сравниваются значения полей, не обязательно должны быть константами. Наряду с постоянными значениями в запросах можно использовать параметры, которые при выполнении запроса Microsoft Access 2000 попросит пользователя ввести. Создать запрос с параметром очень легко: вместо константы в конструкторе запросов в строку Условие отбора следует ввести имя параметра, заключенное в квадратные скобки, например, так: [Мой параметр].

Задание

Самостоятельно переделайте запрос Авторы, которые родились до войны (см. п. 4.3.2) в параметрический, в качестве параметра выбрав дату рождения.

При выполнении задания обратите внимание, что вводить можно конкретные даты, но не условия, т.е. в нашем случае с помощью такого параметрического запроса можно найти автора, родившегося, например, 25 апреля 1973 г., но не список авторов, родившихся в определенный период. Для этого в строке Условие отбора в конструкторе запросов следовало бы ввести, например: >[От] And <[До].

База данных Продажа книг 1.dbf Вам больше не понадобится; закройте ее. Для этого выберите в меню «Файл» пункт «Закрыть».

4.3.4. Запросы с группировкой и сортировкой записей

Если в каком-либо поле таблицы встречаются одинаковые значения, то группы записей, у которых значения этого поля совпадают, можно «свернуть» в одну запись. Что при этом происходит с остальными полями? Группу численных значений можно свести в одно с помощью статистических функций, таких как сумма (функция Sum) или среднее арифметическое (Avg), максимальное или минимальное значение (функции Min и Max), среднеквадратичное отклонение (функция StDev). Для всех типов полей, за исключением Поле МЕМО и OLE, можно вычислить количество различных значений в группе (функция Var) и количество любых значений, т.е. по сути дела количество записей в группе (функция Count). Можно заменить все значения одним, взятым у первой или у последней записи группы (функции First и Last). Можно указать в качестве значения поля выражение, которое использует перечисленные здесь функции, например среднее арифметическое между максимальным и минимальным значением поля. Кроме того, имеется возможность включать в группы только записи, удовлетворяющие определенным условиям. Иными словами, Вы можете еще до того, как будет выполнена группировка, исключить некоторые записи из рассмотрения (например, чтобы они «не портили статистику»). Все последующие задания выполняются с базой данных Примеры_Access_2000_RUS\Продажа книг\Задания\Продажа книг 2.mdb. Откройте ее.

Задание

Знакомимся с возможностями группировки и сортировки данных (на примере запроса Прайс-лист на книги).

  1. Откройте запрос Прайс-лист на книги в окне конструктора. Для этого в окне базы данных нажмите кнопку «Запросы».

Выделите в списке запрос Прайс-лист на книги.

Нажмите на кнопку «Конструктор». После этого структура запроса будет доступна для просмотра и редактирования в окне конструктора (рис. 34).

Рисунок 34. Структура запроса Прайс-лист на книги

  1. Рассмотрим структуру этого запроса.

Легко заметить, что он задействует четыре таблицы: Книги, Авторство, Произведения, и Продажи. В основном вся информация, которую обычно включают в прайс-лист, содержится в таблице Книги. Отсутствуют там только имена авторов и аннотации, которые мы берем из таблиц Авторство и Произведения соответственно. Таблица Продажи нужна нам здесь для того, чтобы отличать проданные книги от непроданных. Если у записи в результирующей таблице в поле Дата продажи находится непустое значение, значит, книга уже была продана и в прайс-лист ее включать нельзя. Для связи таблицы Продажи с таблицей Книги используется левое внешнее объединение (см. п. 1.6), поскольку при использовании внутреннего объединения в результирующую таблицу не могла бы попасть ни одна запись из таблицы книги, не имеющая связанной записи в таблице Продажи, и прайс-лист всегда был бы пустым! Похожая ситуация с таблицей Авторство. Если использовать внутреннее, а не левое внешнее объединение, то в прайс-лист не попадут книги, не имеющие авторов.

Теперь поговорим о том, каким образом в этом запросе следует группировать записи. Наиболее очевидное решение - группировать книги по авторам и названиям. При этом все книги одного и того же автора и с одним и тем же названием будут свернуты в одну строку, причем для них нужно будет с помощью какой-нибудь статистической функции рассчитать единую цену. Но такая группировка была бы некорректной, поскольку, скажем, прижизненное издание Эразма Роттердамского стоит на несколько порядков дороже, чем современное. Кроме того, выпуски одного и то же произведения, сделанные разными издательствами или одним и тем же издательством в разные годы, будут отличаться и по объему (зависит от формата, оформления и т. п.), и по цене. Что же касается группировки по имени автора, то это вообще приведет к неправильному результату. Книга, у которой более одного автора, будет встречаться в результирующей таблице столько раз, сколько у нее авторов, потому что для каждой пары Автор - Название книги будет сформирована отдельная группа.

Итак, в данной ситуации лучше всего группировать записи по названию книги, году издания и названию издательства (см. рис. 34). Кроме того, из группировки надо заранее исключить проданные книги, т.е. условием включения записи в группировку должно быть пустое значение в поле Дата продажи (рис. 35).

Рисунок 35. Включение в группировку только непроданных книг

А как быть с остальными полями? Что касается объема, будем считать, что у одного и того же произведения он одинаков при одинаковых издательствах и годах издания. Поэтому можно, не мудрствуя лукаво, взять его из любой записи в группе, например из первой (см. столбец Объем). Несколько сложнее обстоит дело с ценой. Вообще говоря, у разных экземпляров она, в зависимости от их состояния и особенностей, бывает разной. В этой ситуации можно было бы помещать в результирующую таблицу среднюю, минимальную или максимальную цену. Можно также создать еще одно поле и формировать в нем строку, в которой будет показана средняя цена плюс-минус утроенное среднеквадратичное отклонение. В нашем примере выражение в правом столбце дает одну цену, если разброса цен нет, и границы диапазона, если он есть. Выполнять вычисление с этим полем нельзя, зато его очень удобно использовать в отчетах.

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

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

В отношении авторов мы проявили определенный волюнтаризм: если у книги несколько авторов, то мы помещаем в результирующую таблицу одного, первого по алфавиту, для чего используем статистическую функцию Min (см. столбец Автор).

  1. Нажмите на кнопку в панели инструментов и рассмотрите внимательно результаты запроса.

Задание

Самостоятельно ознакомьтесь с запросом Прайс-лист на книги для VIP-клиентов. Этот запрос формирует список книг, объем которых превышает 500 страниц. Кроме того, этот запрос выводит цену, вдвое большую указанной в базе данных.

4.3.5. Редактирование и добавление записей в запросах

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

В п. 4.2.5 для ввода данных о продажах книг мы использовали собственно таблицу Продажи (см. рис. 25). У этого способа было несколько недостатков. Во-первых, проданные книги не исчезали из списка доступных для продажи. И хотя повторно ввести запись о продаже ранее проданной книги система не позволяла, присутствие лишних записей в списке создавало неудобства. Во-вторых, при выборе книги мы видели только ее название, а другие поля (Цена, Издательство, Год издания) были недоступны для просмотра, что на практике затрудняло бы работу пользователя. Покажем, как в данном случае можно организовать ввод продаж с помощью запроса.

В базе данных Продажа книг 2.mdb есть запрос Ввод продаж, структура которого показана ниже (рис. 36).

Рисунок 36. Структура запроса Ввод продаж

Этот запрос создает левое внешнее объединение таблиц Книги и Продажи, но не включает в него записи, у которых значение поля Дата продажи непустое. Следовательно, в результирующую таблицу попадают только те записи из таблицы Книги, у которых нет связанных записей в таблице Продажи. Отсутствие последних по определению левого внешнего соединения восполняется пустыми записями, структура которых соответствует таблице Продажи. Если у такой записи в поля Дата продажи и/или Клиент ввести данные, то в таблицу Продажи будет добавлена заполненная этими данными запись. Поле Код книги в новой записи будет заполнено значением из поля Код книги соответствующей записи таблицы Книги. Таким образом, у записи из таблицы Книги появляется связанная запись в таблице Продажи (рис. 37).

Рисунок 37. Использование запроса Ввод продаж

4.3.6. Перекрестные запросы

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

Предположим, мы хотим узнать, как продавалось каждое литературное произведение в каждый из месяцев. То, что в таблице указаны даты, а не месяцы - не проблема, по дате всегда можно получить месяц. Но нам нужна «прямоугольная» таблица, в которой, предположим, по вертикали идут названия литературных произведений, а по горизонтали - номера месяцев. При этом на пересечении строки и столбца должна быть проставлена сумма, вырученная от продажи этого произведения в течение этого месяца. Вместо этого у нас есть «длинная» таблица с фиксированным набором столбцов. Как быть? Нужно средство, которым можно было бы «разрезать» таблицу Проданные книги «вдоль столбцов», а затем «повернуть» столбец Дата перпендикулярно столбцу Название. Затем мы сгруппировали бы данные по названиям («в вертикальном направлении») и по датам («в горизонтальном направлении»). Таким образом, сначала были бы получены суммы продаж каждого произведения каждый день, а затем мы сложили бы их для дат внутри каждого месяца. К счастью, в Microsoft Access 2000 существует средство, называемое перекрестным запросом, которое решает эту задачу автоматически практически от начала до конца. Единственное, что в данном случае потребуется сделать самостоятельно - это подставить для каждой записи таблицы Проданные книги номера месяцев вместо дат. В базе данных Продажа книг 2.mdb для этого сформирован очень простой запрос Продажи книг по месяцам.

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

Задание

Создаем перекрестный запрос Продажи произведений по месяцам.

  1. В диалоговом окне базы данных нажмите на кнопку «Запросы».
  2. Нажмите на кнопку «Создать». На экране появится диалоговое окно «Новый запрос».
  3. В диалоговом окне «Новый запрос» выберите в списке пункт «Перекрестный запрос» и нажмите на кнопку «OK». На экране появится диалоговое окно «Создание перекрестных таблиц».
  4. В диалоговом окне «Создание перекрестных таблиц»

Выберите в списке имя таблицы, на основе которой будет построен перекрестный запрос. Поскольку в нашем случае эта таблица - запрос (Продажи книг по месяцам), нужно установить во включенное состояние кнопку выбора «Запросы», а затем выбрать в списке запрос Продажи книг по месяцам (рис. 38).

Для перехода к следующему этапу нажмите на кнопку «Далее >». После этого будет открыто следующее диалоговое окно «Создание перекрестных таблиц».

Рисунок 38. Создание перекрестного запроса. Шаг 1

  1. В данном диалоговом окне в списке «Доступные поля» выберите поле, уникальные значения которого будут отождествляться со строками перекрестного запроса (т.е. что пойдет по вертикали). В нашем случае это поле First_Название книги (приставку First к имени соответствующего поля мы получили «в наследство» от запроса Проданные книги. Дело в том, что при группировке Microsoft Access 2000 автоматически дает названия столбцам, значения в которых вычисляются статистическими функциями). Кстати, названия строк перекрестного запроса можно составить из нескольких полей, например, добавить к названию произведения имя автора. При этом значения будут не сцеплены как строки, а размещены в параллельных столбцах.

Выделите в списке «Доступные поля» имя поля Min_Автор. Затем нажмите на кнопку «>». После этого имя поля Min_Автор будет добавлен в список «Выбранные поля».

Таким же образом поместите в список «Выбранные поля» имя поля First_Название книги.

Обратите внимание на иллюстрацию в нижней части диалогового окна (рис. 39).

Нажмите на кнопку «Далее >».

Рисунок 39. Создание перекрестного запроса. Шаг 2

  1. В следующем диалоговом окне «Создание перекрестных таблиц» (рис. 40).

Выберите поле, значения которого будут отождествляться со столбцами перекрестного запроса (что пойдет по горизонтали). В нашем случае это поле Месяцы.

Нажмите на кнопку «Далее >».

Рисунок 40. Создание перекрестного запроса. Шаг 3

  1. Теперь в очередном диалоговом окне «Создание перекрестных таблиц» (рис. 41) нужно выбрать, значения какого поля и каким образом будут образовывать значения в ячейках на пересечении строк и столбцов перекрестного запроса.

В списке «Поля» выберите поле First_Цена, а в списке «Функции» - функцию Сумма.

Обратите внимание на переключатель в левой части диалогового окна. Если он установлен во включенное состояние, для каждой строки будет рассчитано итоговое значение. Итоговые значения размещаются в отдельном столбце. Установите этот переключатель во включенное состояние, если он выключен, - нам ведь не помешают итоговые суммы за все исследуемые месяцы.

Нажмите на кнопку «Далее >».

Рисунок 41. Создание перекрестного запроса. Шаг 4

  1. В очередном и на этот раз последнем диалоговом окне «Создание перекрестных таблиц» (рис. 42).

Наберите в поле название запроса, скажем: Продажи произведений по месяцам.

Установите во включенное состояние кнопку выбора «Просмотреть результаты запроса» (иначе запрос сначала откроется в режиме конструктора).

Нажмите на кнопку «Готово».

Рисунок 42. Создание перекрестного запроса. Шаг 5

  1. Итак, мы получили перекрестный запрос (рис. 43). Дальше его можно перенести в Microsoft Excel и построить по нему графики и диаграммы, иллюстрирующие динамику и структуру продаж.

Рисунок 43. Результаты перекрестного запроса

4.4. Конструируем отчеты

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

Посмотрим, как в Microsoft Access 2000 организовано создание отчетов. Если помните, в базе данных Продажа книг 2.mdb имеется запрос Прайс-лист на книги для VIP-клиентов. Создадим на его основе отчет, который можно будет распечатать и использовать в качестве прайс-листа как такового.

Задание

Создаем отчет на основе запроса Прайс-лист на книги для VIP-клиентов.

  1. В диалоговом окне базы данных нажмите на кнопку «Отчеты».
  2. Нажмите на кнопку «Создать».
  3. В диалоговом окне «Новый отчет» в списке выберите пункт «Мастер отчетов».

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

Нажмите на кнопку «OK». После этого откроется первое диалоговое окно «Создание отчетов».

  1. В первом диалоговом окне «Создание отчетов» нужно задать поля, которые будут отображаться в отчете. Для этого названия нужных полей следует переместить из списка «Доступные поля» в список «Выбранные поля». Для переноса поля его нужно выделить в списке «Доступные поля» и нажать на кнопку «>».

Переместите в список «Выбранные поля» поля Автор, Название книги, Издательство, Год издания, First_Объем, Count_Код книги, First_Аннотация и VIP-Цена, - желательно, именно в таком порядке (рис. 44). Для переноса в список «Выбранные поля» всех полей из списка «Доступные поля» можно было бы один раз нажать на кнопку «>>». Однако при этом поля были бы перенесены из левого списка в той последовательности, в которой они там находятся. Но порядок полей в правом списке нам важен, поскольку при автоматизированном создании отчета поля в нем расставляются слева направо в той последовательности, в которой они идут в правом списке сверху вниз. Отчет, конечно, потом можно будет отредактировать в конструкторе, но лучше с самого начала сделать все правильно. Скажем, в прайс-листах цену принято показывать последней справа - вот мы и поставили ее последней в списке «Выбранные поля».

Для перехода к следующему этапу нажмите на кнопку «Далее >».

Рисунок 44. Создание отчета. Выбор полей для вывода в отчет

  1. В очередном диалоговом окне «Создание отчетов» (рис. 45) нужно задать способ группировки строк в отчете. В прайс-листе мы будем группировать строки по автору (поле Автор), а внутри этой группировки еще раз по произведению (поле Название книги). Добавление полей группировки организовано примерно так же, как добавление полей в отчет. Поля, названия которых выведены в списке, можно добавлять на расположенную справа схему, выделяя их, а затем нажимая на кнопку «>».

Добавьте на схему поле Автор (если оно не было добавлено туда автоматически) и поле Название книги.

Нажмите на кнопку «Далее >».

Рисунок 45. Создание отчета. Задание способа группировки

  1. В очередном диалоговом окне «Создание отчетов» нужно задать способ сортировки строк внутри групп (рис. 46). Предусматривается четыре уровня вложенности сортировки. В раскрывающихся списках можно выбирать поля для сортировки и задавать для них порядок сортировки, нажимая на расположенные справа от раскрывающихся списков кнопки и . Давайте будем сортировать книги сначала по году издания в порядке убывания (наиболее новые издания - в начале группы), а затем по издательству.

В раскрывающемся списке «1» выберите поле Год издания. Нажмите на кнопку . Обратите внимание, что после этого пиктограмма на ней изменится - сверху теперь буква «z», что символизирует порядок сортировки по убыванию.

В раскрывающемся списке «2» выберите поле Издательство. Если бы нам нужно было вычислить итоги по группе, мы могли бы задать способ их вычисления в диалоговом окне, которое открывается при нажатии на кнопку «Итоги». Это бывает очень полезно, например, при создании отчетов, предназначенных для формирования финансовых документов: счетов, накладных, счетов-фактур и т.п.

Нажмите на кнопку «Далее >».

Рисунок 46. Создание отчета. Выбор способа сортировки строк внутри групп

  1. В очередном диалоговом окне «Создание отчетов» (рис. 47) нужно задать формат отчета. Установив во включенное состояние одну из кнопок выбора в группе «Макет», можно указать способ отображения блоков информации. С помощью кнопок выбора в группе «Ориентация» можно установить расположение страницы: вертикальное («книжная») или горизонтальное («альбомная»).

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

Выберите ориентацию страницы.

Нажмите на кнопку «Далее >».

Рисунок 47. Создание отчета. Выбор ориентации страницы и вида макета

  1. В очередном диалоговом окне «Создание отчетов» (рис. 48) нужно выбрать один из предлагаемых стилей оформления отчета.

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

Нажмите на кнопку «Далее >».

Рисунок 48. Создание отчета. Выбор стиля оформления отчета

  1. В очередном и последнем диалоговом окне «Создание отчетов» (рис. 49) введите название создаваемого отчета.

Установите во включенное состояние кнопку выбора «Просмотреть отчет» - тогда отчет будет выведен на экран сразу после его создания. В противном случае отчет будет открыт в режиме конструктора (мы в нем еще поработаем).

Нажмите на кнопку «Готово».

Рисунок 49. Создание отчета. Завершающая стадия

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

Рисунок 50. Отчет в окне предварительного просмотра

  1. При автоматизированном создании отчета, как правило, получается не совсем то, что хотелось. Теперь сформированный отчет можно «довести до ума» с помощью конструктора.

Задание

Редактируем отчет в режиме конструктора.

  1. Откройте полученный в предыдущем задании отчет в режиме конструктора. Если он находится на экране, для перехода в режим конструктора отчетов нажмите на кнопку в панели инструментов. В общем случае, чтобы открыть отчет в режиме конструктора, в окне базы данных следует нажать на кнопку «Отчеты», выделить в списке нужный отчет и нажать на кнопку «Конструктор».
  2. Рассмотрим структуру отчета (рис. 51). Отчет состоит из нескольких разделов, отделенных друг от друга серыми разделителями. На каждом разделителе указано название раздела, расположенного между ним и следующим разделителем. Внутри разделов находятся поля отчета, изображаемые в виде прямоугольников с серыми рамками. В каждом поле указано, какие данные в нем отображаются при выводе отчета. Такими данными могут быть поля таблиц, вычисляемые значения или константы. Теперь можно приступать к исправлению отчета.

Рисунок 51. Отчет в окне конструктора

  1. Уберем заголовки полей Автор и Название книги. Сами поля передвинем влево, на место этих заголовков.

Заголовок поля Автор расположен в разделе Заголовок группы «Автор», слева.

Сначала его надо выделить. Поскольку это первое поле в отчете, оно, скорее всего, уже выделено. Посмотрите, если по краям поля имеются черные квадратики, значит, так оно и есть. Если нет, выделите это поле, щелкнув по нему мышью.

Для удаления поля нажмите на клавишу [Del]. После этого поле исчезнет.

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

Поле Название книги и его заголовок находятся в разделе Заголовок группы «Название книги». Удалите заголовок и передвиньте поле влево таким же образом, как Вы это только что сделали с полем Автор.

  1. Заголовок поля Год издания книги в разделе Заголовок группы «Название книги» не умещается в поле. Расширим это поле.

В разделе Заголовок группы «Название книги» выделите заголовок поля Год издания.

Подведите курсор мыши к левой границе заголовка. Курсор должен принять форму двойной горизонтальной стрелки: .

Нажмите на левую клавишу мыши и отбуксируйте левую границу заголовка влево.

Таким же образом расширьте поле Год издания в разделе Область данных (чтобы поле располагалось под своим заголовком).

  1. В заголовке поля First_Объем так и написано: First_Объем. Отредактируем это неуместное в выходном документе название.

В разделе Заголовок группы «Название книги» выделите заголовок поля First_Объем.

Нажмите на клавишу [F2] - заголовок станет доступным для редактирования и будет работать как поле ввода в диалоговом окне.

Удалите префикс First_.

Для завершения редактирования с сохранением сделанных изменений нажмите на клавишу [ENTER] (для отказа от изменений нужно было бы нажать на [ESC]).

Если необходимо, измените длину заголовка, как Вы это сделали в предыдущем пункте.

  1. В поле Count_Код книги отображается количество книг в группе (см. п. 4.3.4), поэтому его заголовок имеет смысл переименовать, чтобы он отражал смысл отображаемой величины, назвать его, скажем, В наличии.
  2. Переместим поле First_Аннотация из раздела Область данных в раздел Заголовок группы «Название книги».

Освободите в разделе Заголовок группы «Название книги» место для аннотации. Для этого можно расширить его по вертикали. Подведите курсор мыши к верхней границе разделителя Область данных. Курсор должен принять форму двойной вертикальной стрелки: .

Нажмите на левую клавишу мыши и отбуксируйте верхнюю границу разделителя вниз.

Теперь передвинем вниз заголовки полей. Для этого их надо выделить и отбуксировать мышью вниз, поближе к перемещенному только что разделителю. Чтобы выделить несколько заголовков (полей) одновременно, щелкните мышью по первому из них, а затем нажмите на клавишу [SHIFT] и, не отпуская ее, щелкните мышью по всем остальным (другой способ выделить несколько полей и заголовков - «резиновая нить»).

Отбуксируйте мышью вниз выделенные заголовки раздела Заголовок группы «Название книги».

Теперь отбуксируйте мышью поле First_Аннотация из раздела Область данных в раздел Заголовок группы «Название книги». Расположите его между полем Название книги и заголовками полей.

Увеличьте размер поля по вертикали и горизонтали. Аннотация может быть достаточно объемной.

Из раздела Заголовок группы «Название книги» удалите ставший теперь ненужным заголовок First_Аннотация.

  1. Нажмите на кнопку в панели инструментов и посмотрите, как теперь выглядит отчет.
  2. Закройте окно отчета.

4.5. Конструируем экранные формы

4.5.1. Создаем автоформу

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

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

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

Задание

Создаем автоформу для работы с таблицей Авторы.

  1. В диалоговом окне базы данных нажмите на кнопку «Таблицы».
  2. Выделите в списке имя таблицы: Авторы.
  3. Выберите в меню «Вставка» пункт «Автоформа» или нажмите на кнопку в панели инструментов. После этого для работы с таблицей Авторы будет автоматически создана и выведена на экран форма (рис. 52).

Рисунок 52. Автоматически созданная форма

  1. Рассмотрим структуру полученной формы. В каждый момент времени в ней можно работать с одной из записей таблицы. Название диалогового окна формы (в заголовке) соответствует названию таблицы. Названия полей (элементов) формы соответствуют названиям полей таблицы. Типы элементов формы соответствуют типам данных в полях. Так, для текстовых полей были созданы обычные поля ввода, а для поля типа Поле МЕМО - многострочное поле. Если бы в таблице были поля типа Логический, для них были бы созданы переключатели. Значения в полях можно редактировать. Слева внизу находится конструкция Запись (поле записи), предназначенная для перемещения от одной записи к другой. Нажав на кнопку или , можно перейти к первой или к последней записи таблицы соответственно. Кнопки и предназначены для перехода к предыдущей и следующей записям. В расположенном между кнопками поле выведен номер текущей записи. Для перехода к записи с определенным номером можно ввести в это поле номер записи и нажать на клавишу [ENTER]. Наконец, кнопка предназначена для добавления в таблицу новой записи. Справа от этой кнопки выведено количество записей в таблице.

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

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

  1. Добавим в таблицу новую запись. Для этого нажмите на кнопку в поле записи.

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

Для отказа от ввода новой записи можно нажать на клавишу [ESC].

  1. Вы можете переключаться между формой и таблицей. Рассмотрим эту возможность.

Переключим форму в режим таблицы. Подведите курсор мыши к заголовку окна формы. Нажмите на правую клавишу мыши и выберите в динамическом меню пункт «Режим таблицы». После этого форма превратится в окно для работы с таблицей. Текущей записью в таблице будет та, которую Вы перед этим просматривали в форме.

Перейдите в таблице к другой записи.

Переключим форму обратно в режим формы. Подведите курсор мыши к заголовку окна формы. Нажмите на правую клавишу мыши и выберите в динамическом меню пункт «Режим формы». После этого форма примет первоначальный вид, причем в ней будет доступна запись, которую Вы только что выбрали в таблице.

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

  1. Закройте форму, для чего нажмите на кнопку в ее заголовке. После этого появится диалоговое окно, в котором можно будет выбрать либо сохранение формы в списке диалогового окна базы данных (кнопка «Да»), либо отказ от сохранения (кнопка «Нет»), либо отказ от закрытия формы (кнопка «Отмена»). Давайте сохраним созданную форму. Нажмите на кнопку «Да». После этого появится еще одно диалоговое окно, в котором нужно будет ввести название сохраняемой формы.

Предположим, она будет называться Авторы. Введите это имя формы и нажмите на кнопку «OK».

  1. В окне базы данных нажмите на кнопку «Формы». Посмотрите: в списке должна отобразиться форма Авторы.

Чтобы вызвать форму на экран, в окне базы данных нажмите на кнопку «Формы», выделите ее в списке, после чего нажмите на кнопку «Открыть» (либо просто дважды щелкните мышью по ее значку).

4.5.2. Ленточная форма. Конструктор форм

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

Задание

Создайте самостоятельно автоформу Авторство на основе одноименной таблицы.

Задание

Работаем с конструктором форм.

В диалоговом окне базы данных нажмите на кнопку «Формы».

Выделите в списке созданную в предыдущем задании форму Авторство.

Нажмите на кнопку «Конструктор», после чего форма будет загружена в окно конструктора форм (рис. 53). Увеличьте окно конструктора. Конструктор форм устроен примерно так же, как конструктор отчетов, с которым мы работали в предыдущем пункте.

Рисунок 53. Конструкция форм

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

Нажмите на правую клавишу мыши и выберите в динамическом меню пункт «Свойства». После этого откроется окно редактирования свойств формы.

На закладке «Макет» в поле со списком «Режим по умолчанию» (вторая строка сверху) выберите пункт «Ленточная форма» (рис. 54). Чтобы узнать назначение того или иного свойства, устанавливаемого в диалоговом окне свойств формы, перейдите в соответствующее поле со списком и нажмите на клавишу [F1]. После этого на экран будет выведен нужный раздел справочной системы Microsoft Access 2000.

Закройте окно редактирования свойств формы.

Рисунок 54. Окно редактирования свойств формы

Теперь посмотрим на результат. Выберите в меню «Вид» пункт «Режим формы». Получилось нечто среднее между таблицей и формой (рис. 55).

Закройте окно формы.

Рисунок 55. Ленточная форма

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

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

4.5.3. Создаем подчиненную форму

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

Задание

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

В окне базы данных Продажа книг 2.mdb дважды щелкните по значку таблицы Продажи. На экране появится таблица.

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

Нажмите на кнопку в панели «Form View». Форма откроется в режиме конструктора (рис. 56).

Рисунок 56. Форма Продажи в режиме конструктора

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

В панели инструментов «Панель элементов» нажмите на кнопку . Курсор примет форму . Щелкните мышью в окне формы; там появится заготовка для подчиненной формы. На экране появится диалоговое окно мастера подчиненных форм.

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

Чтобы создать подчиненную форму на базе таблицы Авторство, выберите в раскрывающемся списке «Таблицы и запросы» имя таблицы: Таблица: Авторство.

Чтобы отобразить в форме поле Автор (поле Название Вам уже не нужно, поскольку название произведения уже отображено в главной таблице), выберите название этого поля в списке «Доступные поля» и нажмите на кнопку «>». Название поля переместится в список «Выбранные поля».

Нажмите на кнопку «Далее >».

Нажмите на кнопку «Далее >» еще раз и в последнем диалоговом окне в поле ввода введите название вновь образуемой подчиненной формы: Авторы проданных книг. Нажмите на кнопку «Готово».

Нажмите на кнопку в панели «Конструктор форм», чтобы выйти из режима конструктора.

Результат отображен на рис. 57.

Рисунок 57. Подчиненная форма Авторы проданных книг в составе формы Продажи

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

4.6. Передаем данные в другие приложения Microsoft Office 2000

Данные из таблиц и запросов можно передавать в Microsoft Word и Microsoft Excel. Познакомимся с этими возможностями на конкретных примерах.

Задание

Передаем данные из запроса в документ Microsoft Word.

  1. В диалоговом окне базы данных нажмите на кнопку «Запросы».
  2. Выделите в списке запрос Прайс-лист на книги.
  3. Выберите в меню «Сервис» пункт «Связи с Office». В следующем меню выберите пункт «Публикация в MS Word». После этого будет сформирован и загружен в Microsoft Word документ, в котором данные из запроса будут представлены в виде таблице.
  4. Закройте Microsoft Word и вернитесь в Microsoft Access 2000. По аналогии с предыдущим пунктом передайте данные из запроса в Microsoft Excel.

4.7. Импортируем данные из файлов предыдущих версий Microsoft Access

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

Для того чтобы начать работать в Microsoft Access 2000 с данными из базы, созданной в более ранней версии системы, нажмите на кнопку в панели «База данных» или выберите в меню «Файл» пункт «Открыть». На экране появится диалоговое окно «Открыть».

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

Рисунок 58. Диалоговое окно «Преобразование или открытие базы данных»

Чтобы конвертировать базу данных в новый формат (формат Microsoft Access 2000), установите кнопку выбора «Преобразовать базу данных» во включенное состояние и нажмите на кнопку «OK». После этого база данных будет конвертирована в новый формат и на экране появится окно базы данных. Отныне Вы сможете работать со старой базой в новой версии системы, однако для старых версий Microsoft Access база будет недоступна. Это не всегда и не всякого пользователя устраивает, поэтому в Microsoft Access 2000 предусмотрена и другая возможность.

Чтобы открыть базу данных только для просмотра, не конвертируя ее в новый формат, установите кнопку выбора «Открыть базу данных» во включенное состояние и нажмите на кнопку «OK». После этого на экране появится диалоговое окно-предупреждение. Нажмите в нем на кнопку «OK». На экране появится окно базы данных, однако данные в ней не будут доступны для изменения.

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

Для того чтобы конвертировать базу данных, созданную в одной из более ранних версий Microsoft Access, в формат Microsoft Access 2000,

  1. Закройте окно базы данных; для этого нажмите на кнопку в заголовке окна.
  2. Выберите в меню «Сервис» пункт «Служебные программы».
  3. В следующем меню выберите пункт «Преобразовать базу данных».
  4. В следующем меню выберите пункт «к текущей версии базы данных Access». На экране появится диалоговое окно База данных для преобразования».
  5. В раскрывающемся иерархическом списке «Папка» выберите имя папки, в которой находится база данных, а в списке файлов выберите имя базы данных.
  6. Введите в поле ввода «Имя файла» имя новой базы данных. Это имя не должно совпадать ни с одним из имен имеющихся в папке файлов. Нажмите на кнопку «Преобразовать».

4.8. Экспортируем данные в другие форматы

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

4.8.1. Экспорт данных в табличные форматы

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

Чтобы экспортировать данные из таблицы, запроса, формы или отчета в один из поддерживаемых Microsoft Access 2000 табличных форматов,

  1. В окне базы данных нажмите на кнопку того вида объекта, данные из которого Вы хотели бы экспортировать. Например, таблицу Продажи.
  2. Выберите в меню «Файл» пункт «Экспорт». На экране появится диалоговое окно «Экспорт объекта:<тип объекта>'<имя объекта>' в». Например: «Экспорт объекта: Таблица 'Продажи' в».
  3. В диалоговом окне в раскрывающемся иерархическом списке «Папка» выберите имя папки, куда Вы намерены поместить файл, в котором, в свою очередь, будет храниться экспортированный объект.
  4. Выберите в раскрывающемся списке «Тип файла» формат данных, в котором Вы намерены хранить экспортированный объект. Microsoft Access 2000 поддерживает следующие табличные форматы данных: XLS (файлы Microsoft Excel 2000, 3, 4, 5-7), DBF (dBASE III, IV, 5, FoxPro 2.0, 2.5, 2.6, 3.0), таблицы в файлах формата RTF, таблицы в файлах формата HTML, а также любые ODBC-совместимые источники данных при наличии необходимых ODBC-драйверов.
  5. Введите в поле ввода «Имя файла» имя файла, в котором Вы намерены хранить экспортированный объект.
  6. Нажмите на кнопку «Сохранить».

Вообще, экспорт одних и тех же объектов в разные форматы может приводить к различным результатам. Так, экспорт формы в XLS-файл - это представление просматриваемых в форме данных в виде таблицы Microsoft Excel. В то же время, экспорт формы в MDB-файл - это создание в другой, уже существующей, базе данных Microsoft Access 2000 такой же формы. Отдельного рассмотрения заслуживает экспорт данных из базы Microsoft Access 2000 в текстовый файл.

4.8.2. Экспорт данных в текстовый файл

Задание

Экспорт рейтинга клиентов в текстовый файл.

В диалоговом окне базы данных нажмите на кнопку «Запросы».

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

Выберите в меню «Файл» пункт «Экспорт».

В диалоговом окне «Экспорт объекта:<тип объекта>'<имя объекта>' в»:

Выберите в списке папку, в которую Вы намерены поместить файл, в котором, в свою очередь, будут записаны данные.

В поле ввода «Имя файла» введите имя записываемого файла.

В раскрывающемся списке «Тип файла» выберите формат файла: Текстовые файлы (*.txt, *.csv, *.tab, *.asc).

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

Рассмотрим диалоговое окно «Экспорт текста» (рис. 59). В панели «Образец формата экспорта» показано, как будут выглядеть экспортированные данные в текстовом файле. Каждая запись таблицы преобразуется в одну строку этого файла. Значения полей могут быть разделены точками с запятой, запятыми, символами табуляции или пробелами. Сами строки могут быть заключены в кавычки, в апострофы или не иметь ограничителей. Другой вариант - использовать фиксированные поля, т.е. в строке текстового файла для каждого поля будет отведено определенное количество символов (неиспользованные позиции заполняются пробелами). Способ экспорта задается в данном диалоговом окне установкой во включенное состояние соответствующей кнопки выбора.

Выберите экспорт в файл с фиксированной шириной полей. Для этого установите кнопку выбора «фиксированная ширина полей - интервалы заполняются пробелами» во включенное состояние.

Рисунок 59. Выбор способа экспорта данных в текстовый формат

Нажмите на кнопку «Дополнительно». После этого откроется диалоговое окно «<имя объекта> - спецификация экспорта». В нашем случае «Рейтинг клиентов - спецификация экспорта» (рис. 60). В нем задайте следующие параметры экспорта:

  • в раскрывающемся списке «Язык» выберите язык вновь создаваемого текстового файла: Русский;
  • в раскрывающемся списке «Кодовая страница» задайте кодировку символов кириллицы в создаваемом текстовом файле: Кириллица (Windows);
  • задайте формат записи даты и времени в полях ввода группы «Даты, время, числа» (в нашем случае можно не вносить никаких изменений);
  • в таблице «Описание полей» в столбце Начало введите позиции, с которых будут начинаться поля в текстовом файле, а в столбце Ширина введите ширину каждого из полей. Впоследствии Вы сможете откорректировать эти параметры в визуальном режиме. Введенные в данном диалоговом окне настройки можно сохранить, нажав на кнопку «Сохранить как» и введя в открывшемся после этого диалоговом окне название группы настроек. В дальнейшем эти настройки можно будет использовать многократно. Для загрузки сохраненных ранее настроек следует нажать на кнопку «Спецификация».

В диалоговом окне «<имя объекта> - спецификация экспорта» нажмите на кнопку «OK».

Рисунок 60. Параметры экспорта в текстовый файл с фиксированными полями

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

В последнем диалоговом окне «Экспорт текста» нажмите на кнопку «Готово». После этого текстовый файл будет сформирован и записан в указанную Вами папку. На экране появится окно - сообщение о завершении экспорта. В этом окне нажмите на кнопку «OK».

Откройте этот файл стандартной программой NotePad и посмотрите, что получилось (рис. 61). Теперь эти данные можно импортировать в какой-нибудь овеянный дыханием старины DOS-овский, но очень мощный статистический пакет.

Рисунок 61. Результаты экспорта запроса в текстовый файл

4.8.3. Об экспорте данных Microsoft Access 2000 в формат HTML

Microsoft Access 2000 обладает расширенными возможностями публикации данных на Web-страницах. Благодаря новому мастеру, Вы получаете возможность создавать документы в формате HTML, которые напрямую связаны с данными в базе. Эта функция является, пожалуй, одним из главных преимуществ новой версией перед старыми. К сожалению, объем настоящего пособия не позволяет подробно рассмотреть открывающиеся перед пользователем перспективы. Мы скажем лишь, что обеспечение доступа к данным Microsoft Access 2000 в формате HTML представляет собой качественно новый шаг на пути дальнейшей интеграции составных частей Microsoft Office и Internet-технологий.

[an error occurred while processing this directive]