МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ Государственное образовательное учреждение высшего профессионального образования НИЖЕГОРОДСКИЙ ГОСУДАРСТВЕННЫЙ ЛИНГВИСТИЧЕСКИЙ УНИВЕРСИТЕТ им. Н.А. ДОБРОЛЮБОВА Н.Д.Сухонина MICROSOFT ACCESS. ПРАКТИКА Учебное пособие Нижний Новгород 2010 Печатается по решению редакционно-издательского совета ГОУ ВПО НГЛУ. Специальности: «Документоведение и документационное обеспечение управления», «Менеджмент организации», «Финансы и кредит». Дисциплина: Информатика, часть 2. УДК ББК М 65 004.9 (075.8) 32.97 MICROSOFT Н.Новгород: ACCESS. Нижегородский ПРАКТИКА: Учебное государственный пособие. – лингвистический университет им. Н.А. Добролюбова, 2010. – 76 с. В данном учебном пособии подробно рассмотрено создание базы данных в Microsoft Access, а также приведен пример выполнения контрольной работы. Цель предлагаемых материалов – обучение студентов очно-заочного и заочного факультетов работе в программе Microsoft Access. Учебное пособие можно использовать как на практических занятиях в компьютерном классе, так и для самостоятельной работы дома. УДК ББК 004.9 (075.8) 32.97 Составитель Н.Д.Сухонина, программист 1-й категории Рецензент С.М. Кашаев, канд.техн. наук, доцент © ГОУ ВПО НГЛУ, 2010 © Сухонина Н.Д., 2010 Содержание Системы управления базами данных ................................................................ 4 Базы данных Microsoft Access............................................................................ 5 Создание таблицы ............................................................................................... 9 Таблица в режиме просмотра ........................................................................... 15 Настройка готовой таблицы ............................................................................. 18 Создание поля со списком подстановок или списком значений .................. 19 Формы ................................................................................................................. 21 Работа с данными. Поиск и сортировка .......................................................... 25 Фильтры ............................................................................................................. 28 Запросы ............................................................................................................... 31 Редактирование запросов ................................................................................. 34 Многотабличная база данных .......................................................................... 35 Ключевые поля .................................................................................................. 35 Связь между таблицами .................................................................................... 37 Схема данных .................................................................................................... 38 Простейшие расчеты в запросах на выборку ................................................. 40 Итоговые запросы ............................................................................................. 46 Отчеты ................................................................................................................ 47 Пустые значения (Null) ..................................................................................... 55 Работа с MS Office............................................................................................. 56 Основные выводы ............................................................................................. 59 Дополнительные сведения о запросах ............................................................ 60 Параметрический запрос на выборку.............................................................. 60 Групповые операции ......................................................................................... 62 Заключение ........................................................................................................ 66 Пример выполнения контрольной работы ..................................................... 69 3 Системы управления базами данных Для хранения и работы с большим объемом информации (особенно, если эти данные постоянно изменяются) используются специальные программы – системы управления базами данных (СУБД). Рассмотрим пример. Допустим, в вузе необходимо вести учет студентов, т.е. хранить и использовать данные об оценках, сдаче экзаменов, отчислении, поступлении и пр. Для этой цели совершенно не годится Microsoft Word. Можно, конечно, создать множество текстовых файлов с этими данными, но изменения в данных отследить в текстовом редакторе невозможно. Чуть более подходящим для этой цели является Microsoft Excel. Данные в ячейках легко сортируются и фильтруются, к тому же в Excel можно делать достаточно сложные расчеты. Мы можем создать большую таблицу с ФИО каждого студента, его адресом, факультетом, оценками за все сессии. Но в ней невозможно отследить изменения типа смены фамилии, смены группы, академического отпуска. Строки этой таблицы придется постоянно редактировать. А если таблиц несколько, то данные надо менять во всех таблицах. Если же в некоторых таблицах данные поменяли, а в других забыли (а так и будет), то получится, что, в общем, информация неверна. Подходящей программой для этой конкретной цели в пакете MS Office является СУБД Microsoft Access. Данные в Access хранятся в одной или нескольких таблицах, которые могут быть связаны друг с другом. Такая организация позволяет не дублировать данные; а изменение данных в одном объекте базы приводит к изменению данных во всей базе. Кроме Microsoft Access есть много других СУБД. Например, Paradox, SQL, FoxPro. Большинство баз позволяют переносить информацию из базы одного типа в другой. 4 Базы данных Microsoft Access Microsoft Access позволяет создавать реляционные базы данных (это базы, хранящие данные в таблицах). Для задания отношений между таблицами в реляционных базах данных используются совпадающие значения из столбцов различных таблиц. Как правило, в реляционных базах данных каждый вид данных содержится только в одном месте. Кроме того, Microsoft Access позволяет работать с другими программами баз данных, такими как Microsoft SQL Server и другие. Microsoft Access позволяет управлять всеми сведениями из одного файла базы данных. Его расширение – *.accdb (для Access 2007) В рамках этого файла используются следующие объекты: таблицы для сохранения данных; запросы для поиска и извлечения только требуемых данных; формы для просмотра, добавления и изменения данных в таблицах; отчеты для анализа и печати данных в определенном формате; страницы доступа к данным для просмотра, обновления и анализа данных из базы данных через Интернет или интрасеть. Данные сохраняются один раз в одной таблице, но просматриваются из различных расположений. Повторим, что при изменении данных они автоматически обновляются везде, где появляются. Вернемся к примеру с базой данных «ВУЗ». В Microsoft Access мы можем сделать несколько таблиц. В одну таблицу введем кадровую информацию (адрес, паспорт, ФИО). Данные об оценках можно хранить в отдельных таблицах для каждой сессии. В следующей таблице у нас будут данные о смене фамилии, а в следующей – учтем поступление/отчисление и т.д. 5 Чтобы постоянно не переписывать во всех этих таблицах ФИО студента вводят код студента (идентификационный номер). Код должен присутствовать во всех вышеперечисленных таблицах и именно по этому коду таблицы можно связать. После этого можно будет получить из таблиц всю сводную информацию о конкретном студенте. Естественно, код должен быть уникален, т.е. у каждого студента свой единственный, неповторяющийся код. Это может быть номер студенческого билета. В Microsoft Access используется следующая терминология: Поля – элемент таблицы, содержащий определенную информацию (столбец). Записи – строки таблицы. Режим конструктора – окно, в котором отображается макет следующих объектов базы данных: таблицы, запросы, формы, отчеты, макросы и страницы доступа к данным. В режиме конструктора пользователь создает новые объекты базы данных или изменяет макеты существующих. Первичный ключ – одно или несколько полей (столбцов), комбинация значений которых однозначно определяет каждую запись в таблице. Первичный ключ не допускает значений Null (пусто) и всегда должен иметь уникальный индекс. Первичный ключ используется для связывания таблиц. Свойства полей — это набор характеристик, обеспечивающих дополнительные возможности управления хранением, вводом и отображением данных в поле. Число доступных свойств зависит от типа данных поля. 6 В Microsoft Access действуют следующие ограничения на имена полей, элементов управления и объектов: имя должно содержать не более 64 знаков; имя может включать любую комбинацию букв, цифр, пробелов и специальных знаков за исключением точки (.), восклицательного знака (!), надстрочного знака (`) и квадратных скобок ([ ]); Хотя пробелы внутри имен полей, элементов управления и объектов являются допустимыми, в большинстве примеров в документации Microsoft Access имена полей записываются без пробелов. Пробелы в именах могут, при некоторых обстоятельствах, вызывать конфликты в программах Microsoft Visual Basic для приложений. Создание базы данных Microsoft Access. В Microsoft Access поддерживаются три метода создания базы данных. Создание базы данных с помощью мастера. Создание базы данных с помощью шаблона. Создание базы данных без помощи мастера. При создании базы с помощью мастера или шаблона пользователю надо отвечать на вопросы программы и, в конце концов, база будет создана. Мы же будем рассматривать только третий способ. Откройте Microsoft Access (меню Пуск Программы MS Office MS Access). Откроется диалоговое окно с перечнем шаблонов и кнопкой «Новая база данных», нажмите ее. Справа выберите «Новая база», введите имя и каталог. 7 В результате создается пустая база данных, которая открыта на вкладке Таблицы. Рабочий каталог, в который по умолчанию заносится база данных, при необходимости можно изменить в меню Сервис Параметры Общие. Задание 1. Создание базы. Создайте в папке «Мои документы» свою папку. Откройте Access. Создайте новую базу данных, назовите ее ВУЗ_мояФИО (например, ВУЗ_Ивановой), сохраните ее в своей папке (Рис.1). 1. Сначала нажмите сюда 2. Затем введите название базы 3.Выберите свою папку Рис.1 8 Создание таблицы Основой базы данных является таблица. Хотя бы одна таблица в базе должна быть. Существует три способа создания пустой таблицы для последующего ее заполнения данными: с помощью мастера; создание таблицы путем ввода данных; создание таблицы в режиме конструктора. Кроме того, можно создать таблицу на основе существующих данных: импортировать данные из другого приложения (из текстового файла, электронной таблицы и т.д.) или из текущей таблицы при помощи запроса на создание таблицы. Новая база в MS Access 2007 открывается на раскрытой таблице, которую можно заполнять данными. Закройте ее. Для создания таблицы необходимо в окне базы данных выбрать вкладку «Создание». Вы увидите три кнопки: «Таблица», «Шаблоны таблиц», «Конструктор таблиц». Создание таблицы путем ввода данных. Щелкаем 1 раз по кнопке «Таблица». При этом открывается пустая таблица. Поля (столбцы) никак не названы. Переименовать поле можно двойным щелчком по его названию. 9 Вводим данные в эту пустую таблицу. При сохранении таблицы Microsoft Access проанализирует данные и автоматически присвоит каждому полю соответствующий тип. После того как таблица была сохранена и закрыта, Microsoft Access уберет лишние поля и пустые записи. Создание таблицы с помощью мастера. Щелкаем 1 раз по кнопке «Шаблоны таблиц». Откроется список таблиц. В выбираем подкатегории: например, «Контакты», вводим данные. Если надо, то добавляем поля или переименовываем уже имеющиеся. Сохраняем таблицу, указываем ей имя. Создание таблицы в режиме конструктора. Рассмотрим создание таблицы в режиме конструктора подробно, т.к. именно в этом режиме и следует создавать таблицы. Во вкладке «Создание» 1 раз нажимаем «Конструктор таблиц». Откроется окно конструктора, в котором названия полей будущей таблицы записывают в столбце «Имя поля» друг под другом. Задание 2. Создание таблицы. В базе ВУЗ в режиме конструктора создайте таблицу «Кадровая информация» (название таблице дадим в момент сохранения). В этой таблице должны быть поля: ID, ФИО, город, адрес, дата рождения, группа и пол. 1. Начнем с поля ID. У каждого студента должен быть свой персональный номер, обычно это номер студенческого билета. В первой строке конструктора в столбце «Имя поля» введите ID Тип данных – текстовый (выберите из списка). Этим мы определим тип значений, которые можно вводить в это поле (по умолчанию – 10 текстовый). В зависимости от типа данных в поле можно вводить разную информацию. Мы выбрали текстовый тип, следовательно, в это поле мы сможем вводить текст или цифры, не требующие арифметических операций. Например, номер билета может быть 20091254 или ДОУ9589 (Рис 2). Курсор на ID Здесь выбираем тип данных Размер поля ID Рис.2 В столбце «Описание» введите текст: в это поле водим номер зачетки, до 6 символов. После создания таблицы этот текст будет появляться в информационной строке при наведении курсора на это поле. Это своеобразная подсказка. Длина 6 символов (длину указываем внизу окна конструктора, в разделе «Свойства»), в строке «Размер поля». В свойствах в строке «Подпись» введите «Номер_зачетки». В имени поля может быть использовании кириллица, но правильнее назвать на латыни. В этом случае можно в области свойств, в строке 11 «Подпись» ввести русский перевод и в готовой таблице будет отображаться это название. Следующие поля вводим по очереди под ID: 2. Фамилия, текстовое, длина 30 символов. 3. Имя, текстовое. 4. Отчество, текстовое. 5. Дата_рождения, тип – дата/время, формат – средний формат даты (Рис.3). 6. Город, текстовое, в строке по умолчанию введите «Нижний Новгород». В эту строку можно ввести то значение, которое встречается чаще всего, и оно будет автоматически появляться в каждой новой записи. Это удобно, когда, например, большинство студентов из Нижнего Новгорода (Рис.4). 7. Адрес, текстовое. Курсор – на «Дата рождения» Формат даты выбираем здесь Рис.3 12 Курсор на «Город» Свойства поля для «Город» Рис.4 8. Сохраните таблицу (обычная кнопка «Сохранить»), на запрос программы «Создать ли ключевое поле?», ответьте «Нет», появится диалоговое окно, в нем укажите имя новой таблицы – Кадровая информация. 9. Закройте таблицу (обычный ) Типы данных. Рассмотрим подробнее типы данных, которые использует Access. Текстовый. Используется для хранения текста или чисел, не требующих вычислений (или их комбинации). Например, номера телефонов, инвентарные номера или почтовые индексы. Сохраняет до 255 знаков. Свойство Размер поля (FieldSize) определяет максимальное количество знаков, которые можно ввести в поле, по умолчанию =50 Поле МЕМО. Длинный текст или комбинация текста и чисел до 65 536 знаков (если размер поля менее 255 символов, то используется текстовый тип). 13 Числовой. Числовые поля используются для хранения числовых данных, которые должны использоваться в математических вычислениях, за исключением финансовых расчетов (для них следует использовать тип «Денежный»). Дата/время. Значения дат и времени. Формат может быть краткий, средний или полный. Вводить с клавиатуры можно по любому формату даты или времени, но в таблице будет показано по выбранному формату. Денежный. Используется для денежных значений и для предотвращения округления во время вычислений. Символы денежной единицы соответствуют настройкам в окне «Язык и стандарты» панели управления Microsoft Windows. Счетчик. В Microsoft Access для создания полей, в которые при добавлении записи автоматически вводится уникальное число, существует тип данных счетчика. Созданный для записи номер уже не может быть удален или изменен. Поле счетчика может генерировать или последовательно возрастающие на единицу числа или случайные числа. Наиболее часто используется счетчик последовательно возрастающих чисел. Такой тип счетчика удобно использовать как первичный ключ таблицы. Счетчик случайных чисел создает случайный номер для каждой записи в таблице. Логический. Данные, принимающие только одно из двух возможных значений, таких как «Да/Нет», «Истина/Ложь», «Вкл/Выкл». Поле объекта OLE. Объекты OLE (такие как документы Microsoft Word, электронные таблицы Microsoft Excel, рисунки, фотографии, звукозапись или другие данные в двоичном формате), Гиперссылка. Гиперссылка может иметь вид пути либо адреса URL. 14 Мастер подстановок. Создает поле, позволяющее выбрать значение из другой таблицы или из списка значений. В некоторых случаях может потребоваться изменение типа данных полей, уже содержащих данные. Например, установленный тип данных поля больше не соответствует данным, которые требуется сохранить в этом поле. Наиболее часто встречающиеся преобразования типов данных можно представить следующими четырьмя категориями: преобразование в текст других типов данных; преобразование текстовых данных в числовые, денежные, логические форматы или в формат «Дата/время»; преобразование денежного типа данных в числовой, текстового в поле MЕМО и наоборот; а также изменение свойства Размер поля (FieldSize) для числовых полей. Таблица в режиме просмотра Таблица в режиме просмотра открывается двойным щелчком. Задание 3.Просмотр таблицы. Откройте таблицу «Кадровая информация» двойным щелчком. Заполните таблицу данными, 10-15 записей. ФИО и номера зачеток любые или как на Рис.5. Номера зачеток не должны повторяться!!! Адрес (улица, дом и квартира) – любые, Город для трех-четырех человек – не Нижний Новгород. Убедитесь, что: номер зачетки не может быть длиннее 6 символов. при вводе новой записи появляется город Нижний Новгород, 15 в поле дата рождения можно ввести только дату. Объясните, почему столбец называется «Номер_зачетки», а само поле «ID»? Где и когда появляется на экране фраза «В это поле водим номер зачетки, до 6 символов»? Получится примерно так: Рис.5 Режим просмотра. В нижней части экрана находятся стрелки перехода по записям ( | – к первой, – на одну назад, – на – поле номера записи и строка – одну вперед, |– к последней, для новой записи). Для перехода к нужной записи в поле номера записи вводим ее номер, нажимаем Enter. 16 При наведении курсора на ячейку он может иметь вид вертикальной черты, тогда можно щелкнуть это поле и ввести новые данные или отредактировать уже введенную информацию. Клавиша TAB может быть использована для перехода в следующее поле. В конце записи клавиша TAB переводит к следующей записи. Чтобы заменить все значение в ячейке, переместите указатель в самую левую часть поля, чтобы он превратился в указатель «плюс», нажмите кнопку мыши и выделите всю ячейку. Вся запись целиком выделяется слева стрелкой Для удаления записи выделяем ее и нажимаем кнопку «Удалить запись» на панели инструментов или Delete. Данные можно копировать и перемещать через буфер обмена (выделяем и используем кнопки или меню Правка). При копировании записей из другого приложения в Microsoft Access убедитесь перед выделением данных, что они организованы в форме листа или таблицы или разделены знаками табуляции. Задание 4. Просмотр и редактирование записей. Копирование в другие приложения. Используя кнопки перехода по записям перейдите к последней записи, к предыдущей и к пятой) Отредактируйте запись № 6 (измените что-нибудь). Удалите целиком запись № 4 Выделите вместе записи с 3-й по 7-ю, скопируйте их в буфер обмена и вставьте в Microsoft Excel и Microsoft Word. 17 Сохранение данных. Программа Microsoft Access автоматически сохраняет добавляемую или редактируемую запись при каждом перемещении курсора на другую запись, а также при закрытии используемой формы или таблицы. Все запросы программы о сохранении касаются макетов таблицы и других элементов. Настройка готовой таблицы Обычно заранее трудно решить какие поля должны быть в таблице. Microsoft Access позволяет добавить, удалить, переименовать или настроить поля существующей таблицы. Это можно сделать как в режиме конструктора таблиц, так и в открытой таблице. Если таблица открыта, то переход между режимами просмотра и конструктора осуществляется кнопками «Режим» на вкладке «Главная» (Рис. 6а) Рис. 6а Если таблица закрыта, то надо щелкнуть по ней ПКМ и выбрать «Открыть» или «Конструктор» (Рис.6б) 18 Рис. 6б Создание поля со списком подстановок или списком значений Часто приходится вводить в таблицу данные, повторяющиеся от записи к записи, а вариантов данных немного. Например, в вузе всего несколько факультетов, и только эти значения мы вводим в записи. Очевидно, что не надо вводить много раз одно и тоже, а надо обеспечить возможность выбора. И дело даже не в лишней работе оператора, а в большой вероятности ошибок при вводе и необходимости обеспечить сортировку и фильтрацию данных. В таких случаях Access предлагает использовать поле подстановок. В поле подстановок указывается список значений, которые выбираются пользователем при вводе данных. Это облегчает ввод данных и обеспечивает согласованность данных в этом поле. Поле подстановок может получать список значений из таблицы или запроса, а также из постоянного набора значений, который задается пользователем. Выбор того или иного способа происходит в мастере подстановок. 19 Создавать новые поля со списком подстановок или списком значений можно как в режиме конструктора, так и в режиме таблицы. Создание поля подстановки в режиме конструктора. Откройте таблицу в режиме конструктора. Поставьте курсор на нужную строку. В столбце Тип данных нажмите кнопку со стрелкой и выберите Мастер подстановок. В первом шаге мастера Создание подстановки выберите нужный переключатель (из таблицы или фиксированные значения). Нажмите кнопку «Далее» и следуйте инструкциям в остальных диалоговых окнах. Задание 5. Мастер подстановок (поля группы и пол). Создайте еще одну таблицу «Группы» с одним столбцом и в него введите названия групп 6МВО, 6МВИ, 7МВО. (На рис. показан режим просмотра, а не конструктор!!!). Добавьте в таблицу «Кадровая информация» в режиме конструктора два поля «Группы» и «Пол», используя «Мастер подстановок». Для групп используйте для подстановки таблицу «Группы» (т.е. в первом шаге выбираете «……из таблицы или запроса», во втором шаге выбираете таблицу Группы, в третьем шаге выбираете столбец, остальное можно не выбирать). Для пола используйте список значений (т.е. в первом шаге выбираете «……фиксированный набор значений», во втором шаге вводите эти значения – муж и жен друг под другом). Откройте таблицу «Кадровая информация» в режиме просмотра и введите данные по полям «Пол» и «Группа», выбирая их из списков. 20 Закройте таблицу «Кадровая информация». В таблицу «Группа» добавьте запись «9ДОУ» Откройте таблицу «Кадровая информация». Убедитесь, что в списке для выбора групп появилась новая группа 9ДОУ. В таблице «Кадровая информация» измените значения групп для нескольких записей на 9ДОУ. Получится так: Рис.7 Для подстановки в поле «Пол» мы выбрали фиксированные значения, т.к. список полов у нас не меняется. Для подстановки в поле «Группа» мы выбрали таблицу, т.к. список групп может меняться от года к году и даже в течение одного учебного года. Но надо понимать, что можно было сделать таблицу с двумя записями «муж» и «жен» и использовать ее для подстановки. А для групп мы могли использовать фиксированный список и обновлять его по мере надобности. Формы Формы являются типом объектов базы данных, которые обычно используется для отображения данных в базе данных. 21 Большинство форм являются присоединенными к одной или нескольким таблицам и запросам из базы данных. Источником записей формы являются поля в базовых таблицах и запросах. Форма может включать все (или не все) поля из каждой таблицы или запроса, на основе которых она создается. В форме могут быть также результаты расчетов, поступающие из выражений, которые сохраняются в макете формы. Чтобы увидеть имеющиеся формы или создать новую форму, выбираем вкладку Формы (слева) в окне базы данных. Аналогично можно увидеть и другие объекты базы данных Для создания формы нажимаем вкладку «Создание». 22 Задание 6. Создание автоформы. На основе таблицы «Кадровая информация» сделайте автоформу. Название оставьте «Кадровая информация». Для этого: Слева в окне базы данных выделите таблицу «Кадровая информация» Перейдите на вкладку «Создание», нажмите кнопку «Форма» (Рис.8). Рис.8 В любой форме открытой для просмотра есть также стрелки перехода по записям Используя кнопки перехода по записям перейдите к последней записи, к предыдущей и к пятой. Добавьте несколько записей через форму. Убедитесь, что в таблице они появились. Более сложные формы на основе одной или нескольких таблиц или запросов создают при помощи мастера. Мастер задает подробные вопросы об источниках записей, полях, макете, требуемых форматах и создает форму на основании полученных ответов. 23 Задание 7. Создание формы с помощью мастера. Сделайте еще одну форму с помощью мастера на основе таблицы «Кадровая информация», оставьте в ней только поля ФИО и группа (Рис.9). Назовите ее «ФИО_группы». Для этого: Перейдите на вкладку «Создание», сделайте щелчок по кнопке «Другие формы» и выберите «Мастер форм». Выберите имя таблицы или другого источника записей, содержащего данные, на которых должна быть основана форма (Рис.9). Далее. Выберите нужные поля кнопками > или >> (убрать ненужные можно < или <<). Далее. В следующих шагах выбираем «в столбец», «Далее» – стиль, «Далее» – имя формы, «Готово» 1. Выбрать таблицу «Кадровая информация» 2. Слева поставить курсор на нужную строку и кнопкой > перегнать поле направо. Рис.9 24 В результате выполнения заданий 6 и 7 получится примерно это (Рис.10): Рис.10 Создание формы в режиме конструктора. Для начинающих пользователей проще сначала создать базовую форму с помощью мастера, а затем изменить в соответствии с требованиями в режиме конструктора. Так мы и будем поступать в дальнейшем. Работа с данными. Поиск и сортировка Данные в Access можно вводить и изменять как в таблицах, так и в формах. Программа дает возможность поиска/замены данных, сортировки их в нужном порядке и фильтрации. Для поиска нужной записи можно прокрутить форму или таблицу; использовать диалоговое окно Поиск; использовать фильтры и запросы. На Рис 11 показаны кнопки фильтрации и сортировки на вкладке «Главная» 25 Рис.11 Сортировка по возрастанию или убыванию Поиск данных Изменить фильтр Фильтр по выделенному Поиск и замена данных. С помощью диалогового окна Поиск можно найти конкретные записи или определенные значения в полях. Имеется возможность перехода по записям по мере обнаружения каждого вхождения нужного элемента. Если требуется заменить конкретные обнаруженные при поиске значения, следует воспользоваться диалоговым окном Замена. Окно Поиск вызывается кнопкой «Бинокль» или меню Правка Найти. Задание 8. Поиск данных. Задание делаете и в таблице и в форме. Используя «Поиск» (кнопка «Бинокль») найдите конкретную фамилию (Седлов). Сначала введите фамилию полностью, проведите поиск. Внимательно следите за выбором параметров для поиска («Поиск в….», «Совпадение» и «Просмотр»). Введите часть фамилии, проведите поиск («Совпадение» – с любой частью поля) 26 2. Если курсор не поставили на нужный столбец (на любую фамилию), то из списка выбрать таблицу (как на рис), 1. Вручную вводим фрагмент для поиска 3.Совпадение полностью или частично 4. направление просмотра (вверх, вниз, везде) Сортировка записей. При сортировке в режиме формы или в режиме таблицы можно сортировать по одному полю. Для этого курсор ставят на одну из записей в поле, по которому идет сортировка, и нажимают кнопку или на панели инструментов (т.е. все записи сортируются по возрастанию или по убыванию). При сортировке по нескольким полям сразу столбцы в режиме таблицы перетаскивают мышью так, чтобы они оказались рядом, но впереди тот столбец, по которому идет основная сортировка. Затем все столбцы вместе выделяют мышью и нажимают кнопку сортировки или меню Записи Сортировка. Выделяют столбцы мышью, как в таблицах Microsorf Word (т.е. стрелка должна быть ). Для отмены сортировки выберите меню Записи Удалить фильтр. 27 Задание 9. Сортировка данных. Отсортируйте данные в таблице и форме: по фамилиям, по алфавиту, убедитесь, что данные отсортированы; по дате рождения. Только в таблице отсортируйте данные по группе и полу одновременно (выделите оба столбца); по группе, полу и фамилии (перетащите столбцы). 1. Сначала выделяем вместе. 2. Затем перетаскиваем перед фамилиями, (курсор мыши ) Удалите сортировку Фильтры В Access применяется несколько видов фильтра. Простейшие – «фильтр по выделенному» и «исключение выделенного». Более сложный, но и более эффективный – «Изменить фильтр» и расширенный. 28 Фильтр по выделенному. Выделяем нужный фрагмент (или его часть) и нажимаем кнопку «Фильтр по выделенному» или меню Записи Фильтр Фильтр по выделенному. Такой фильтр можно применять несколько раз. Чтобы удалить фильтр, нажимаем кнопку «Удалить фильтр» Задание 10. Фильтр по выделенному. Выберите всех мужчин (выделите «муж» в первой попавшейся Вам записи и нажмите кнопку , можно и ПКМ использовать). Выберите всех мужчин из группы 6МВИ (сейчас у Вас в списке только мужчины, выделите «6МВИ» в первой попавшейся записи, нажмите кнопку). Удалите фильтр. Исключение выделенного. Выделяем ненужное, нажимаем ПКМ и выбираем «Исключить выделенное» или Записи Фильтр Исключить выделенное. Задание 11. Исключение выделенного. Исключите всех женщин (выделите «жен» в первой попавшейся Вам записи, ПКМ). Удалите фильтр. Кнопка «Изменить фильтр». Появляется окно конструктора фильтра. В нем можно ввести условие для фильтра. Условия, записанные в одной строке, связаны между собой условием И. Для того, чтобы связать параметры условием ИЛИ, нажимаем ярлычок ИЛИ в нижней части окна фильтра. 29 Задание 12. «Изменить фильтр». Допустим, нужен список мужчин из 6МВИ и женщин из 9ДОУ. Открываем таблицу «Кадровая информация», нажимаем кнопку «Изменить фильтр». В окне конструктора фильтра на первой вкладке Найти в столбце Группа вводим вручную «6МВИ» или выбираем из списка, в столбце Пол указываем «муж» (Рис.13). Рис.13. Первая вкладка «Найти» (отбор «муж» из «6МВИ»). Нажимаем ярлычок ИЛИ. В столбце «Группа» вводим вручную «9ДОУ» или выбираем из списка, в столбце «Пол» указываем «жен» (Рис.14). В конце нажимаем . Рис.14. Вторая вкладка «Или» (отбор «жен» из «9ДОУ») 30 Удалите фильтр. Получите другой список: нижегородцы, мужчины из 6МВИ. Удалите фильтр. Получите список женщин не старше 25 лет (используйте, в столбце «Дата рождения» >22.02.85). Расширенный фильтр. Меню Записи Расширенный фильтр. Появляется пустое окно конструктора фильтра, в которое можно перетаскивать нужные поля и указывать условия для отбора. Запросы Запрос создается на основе одной или нескольких связанных таблиц или других запросов. Есть два способа создания запроса: с помощью мастера и в режиме конструктора. Переходим на вкладку «Создание», выбираем «Мастер» или «Конструктор» Создание запроса с помощью мастера. щелчок по кнопке «Мастер запросов», выбираем «простой запрос»; в списке выбираем источник (таблицу или другой запрос), Рис.15; выбираем необходимые поля стрелками > >> < <<; нажимаем «Далее», указываем имя запроса, «Готово» 31 Список таблиц и запросов для выбора источника Рис. 15 Выбор полей Задание 13. Создание запроса в режиме конструктора. Рассмотрим подробно на примере. Допустим, надо получить список студентов–мужчин из Нижнего Новгорода. На вкладке «Создание» щелкаем по кнопке «Конструктор запросов». Открывается пустое окно конструктора запроса с открытым окном «Добавление таблиц». Выбираем все нужные таблицы или запросы двойным щелчком (в данном случае таблицу «Кадровая информация») и закрываем «Окно добавления таблиц». Затем мышью (или двойным щелчком, или выбирая из списков) перетаскиваем в пустой бланк запроса нужные поля. Несколько полей можно отметить с Shift (подряд) или с Ctrl (выборочно). Перетащим все поля, хотя все они нам и не нужны (Рис.16) В строках «Сортировка» и «Условие» можно указать условия отбора и порядок сортировки. Если условия записаны в одной строке, то они 32 добавляются. Чтобы условия связать с помощью «Или» их записывают в разных строках. В столбце «Город» в строке «Условие отбора» вводим «Нижний Новгород», в столбце «Пол» – «муж» Получится в конструкторе примерно так: Перетаскиваем так Таблицу выбираем здесь Рис.16 Поле выбираем здесь Перейдем в режим просмотра (те же кнопки, что и для таблицы), получится: Запрос показывает нам только мужчин из Нижнего Новгорода. Сохраним, назовем «Нижегородцы, мужчины» 33 Задание 13а. Создание запроса. Второй пример. Допустим, нужен отсортированный по фамилиям список женщин из группы 7МВО и мужчин из группы 6МВИ. Запрос делаем на основе той же таблицы. По фамилии указываем сортировку по возрастанию, а условия отбора записываем в две строки. Сортируем здесь Рис.17 Условия отбора вводим здесь Редактирование запросов Если сразу Вы не указали все нужные таблицы для запроса, то кнопкой на панели инструментов откройте «Окно добавления таблиц» и добавьте все недостающие таблицы или запросы. Конечно, запрос, сделанный с помощью мастера, можно редактировать в конструкторе. Если в конструкторе не хватает таблиц или запросов, добавляем их кнопкой «Добавить таблицу» . Лишние таблицы в конструкторе запроса выделяем и удаляем клавишей «Delete». Все созданные в базе объекты Вы можете увидеть в левой части окна, в области переходов. Таблицы, запросы, формы имеют разные иконки. Любой из объектов можно открыть двойным щелчком. При необходимости перейти в конструктор данного объекта кнопками «Режим» (см. Рис. 6а). 34 Многотабличная база данных Если в базе несколько таблиц с данными, то для получения общей информации таблицы следует связать. Связи между таблицами устанавливают в схеме данных, но сначала надо в каждой таблице определить ключевое поле. Ключевые поля Ключевые поля – одно или несколько полей (столбцов), комбинация значений которых однозначно определяет каждую запись в таблице. Первичный ключ не допускает значений Null (пусто) и всегда должен иметь уникальное значение, т.е. не повторяться в разных записях. Первичный ключ используется для связывания таблиц. 35 Если при создании таблицы не было сразу указано ключевое поле, то при сохранении таблицы программа предлагает его создать. Если мы отвечаем «Да», то создается автоматически поле «Код» типа «Счетчик», причем, генерируются последовательные значения. Такое поле удовлетворяет всем требованиям для ключевого поля (не Null и не повторяется). В ряде случаев это-то как раз и важно. Но если не нужна нумерация строк, то или на запрос отвечаем «Нет» (ключ определим потом) или, не выходя из конструктора, указываем ключ. Для создания ключевого поля надо поставить курсор на нужную строку (ID в нашем случае) и нажать кнопку на панели инструментов. Слева в строке появится знак ключа Рис.18 Задание 14. Ключевые поля. Откройте таблицу «Кадровая информация» в режиме конструктора. Поле ID сделайте ключевым (Рис.18). Сохраните таблицу. Если программа не сохраняет Вашу таблицу с этими изменениями, то сбросьте «ключ» с этого поля, перейдите в просмотр таблицы и проверьте, у всех ли студентов есть номер зачетки и не повторяются ли они. 36 Создайте еще одну таблицу для ввода оценок после первой сессии с полями ID (ключевое, текстовое), фил (числовое), инф (числовое), лит (числовое). Назовите ее «Сессия_1» (без кавычек!!!). Заполните эту таблицу данными (ID, естественно, должны совпадать с ID из первой таблицы). Получится примерно так, как на рис. По очереди откройте таблицы «Сессия_1» и «Кадровая информация» в конструкторе и убедитесь, что поля ID в обеих таблицах ключевые и имеют один и тот же тип (текстовый). Закройте таблицы. Связь между таблицами Пока мы не можем быстро и удобно получить полную информацию из этих двух таблиц. Из второй таблицы мы видим, что студент с номером билета 2356 получил оценки 5, 3 и 4, но какая у него фамилия и в какой он группе, мы не знаем. Нам надо открыть первую таблицу и в ней увидеть, что это Смирнова. Если мы правильно свяжем таблицы, то эту работу за нас в дальнейшем сделает программа. Очевидно, что таблицы мы будем связывать по полям ID. Собственно, для создания связи мы и завели эти поля и уже сделали их ключевыми. В принципе, ключевым могло бы быть любое другое поле, например, фамилия. Но встречаются однофамильцы, следовательно, фамилия не может быть ключевым полем, ведь ключевые поля должны быть уникальны для каждой записи. Номер же студенческого билета не повторяется и не может быть пустым, следовательно, он идеально подходит для ключевого поля. Если бы мы не создали поля ID раньше 37 (допустим, в таблице «Кадровая информация» они нам были не нужны), то нам пришлось бы их создать теперь, когда нам понадобились связи. При установке связей надо внимательно следить за тем, чтобы типы данных связываемых полей были одинаковы (названия же связываемых полей могут быть разными в разных таблицах). Схема данных Задание 15. Выберите вкладку «Работа с базами данных» Схема Данных, откроется «Окно добавления таблиц» (если не откроется, то нажмите ). Добавьте двойным щелчком таблицы «Кадровая информация», «Группы» (они уже обе могут быть в схеме) и «Сессия_1». Закройте «Окно добавления таблиц». Заметьте, между таблицами «Кадровая информация» и «Группы» уже есть связь, она получилась автоматически при использовании мастера подстановок. Перетащите мышью поле ID из таблицы «Кадровая информация» к полю ID таблицы «Сессия_1». Если все правильно, то появляется окно «Изменение связей», где указан тип отношения. Надо обязательно проверить, тот ли это тип, который нужен. Всего возможно три варианта отношений: 38 один к одному, когда одной записи в первой таблице соответствует одна запись во второй таблице (так должно быть в нашем случае); один ко многим, когда одной записи в первой таблице соответствует много записей во второй таблице; многое ко многим, когда многим записям в первой таблице соответствует много записей во второй таблице. Рис.19 Если же отношение «не определено», то в первую очередь надо проверить наличие ключей в таблицах. В схеме данных ключевые поля в таблицах показаны жирным шрифтом. Поставьте все флажки «Обеспечение целостности данных» для того, чтобы изменения данных в одном объекте базы (таблице или запросе) отражались везде. Для дополнительных настроек нажмите кнопку «Объединение». По умолчанию идет объединение только тех записей, в которых связанные поля совпадают. Оставьте этот вариант. Но надо иметь в виду, что в этом случае, если у части студентов не стоят оценки, то из всех запросов эти 39 студенты будут выброшены. Есть еще два типа объединения: Объединение ВСЕХ записей из "Таблица1" (с которой начинали) и только тех записей из "Таблица2" (куда тащили мышь), в которых связанные поля совпадают и Объединение ВСЕХ записей из "Таблица2" и только тех записей из "Таблица1", в которых связанные поля совпадают. Выйдите из окна «Параметры объединения» ничего не меняя. Нажмите «Создать». Закройте схему данных, сохраните ее. Откройте обе таблицы. Вы увидите, что появились + в начале строки, щелкните по плюсу + в той и другой таблице (плюс раскрывает записи из другой таблицы, минус сворачивает их). Рис.20 Если при создании связи что-либо не учли, то параметры готовой связи можно изменить, щелкнув по связи ПКМ и выбрав «Изменить» / «Удалить» (подразумевается, что открыта схема данных или соответствующий запрос в конструкторе). Удалить выделенную связь можно клавишей «Delete». Простейшие расчеты в запросах на выборку В запросах на выборку можно делать расчеты в каждой строке. 40 Пример 1. Допустим, нам нужна информация по суммарному баллу, полученному каждым студентом за 1-ю сессию (такой запрос можно было бы сделать по результатам приемных экзаменов и отобрать абитуриентов, имеющих балл выше проходного). Задание 15а. Расчет суммарного балла. Сначала сделаем запрос, в котором будут данные из обеих таблиц. Для этого нажмите «Создание запроса в режиме конструктора». Добавьте в запрос две таблицы – «Кадровая информация» и «Сессия_1». Закройте окно добавления таблиц. Обе таблицы (со связью) появятся в окне запроса (Рис.21). Перетащите в поля запроса из таблицы «Кадровая информация» поля ID, Фамилия, Имя, Отчество (с Shift) и Группа, из таблицы «Сессия_1» – поля лит, фил, инф. В режиме конструктора запрос выглядит так: Рис.21 Перейдите в режим просмотра. Должно быть так: 41 Рис.22 Сохраните запрос, имя – «Результат 1 сессии». Вернитесь в режим конструктора, щелкните ПКМ по свободному полю в конце (правее «инф») и выберите «Построить». Откроется «Окно построителя выражений», состоящее из трех разделов, располагающихся сверху вниз (Рис.23). 1. Поле выражения. Расположено в верхней части окна (горизонтально), в нем создается выражение. Само выражение можно записать вручную или использовать возможности построителя (двойной щелчок по названию поля внизу переводит его в «Поле выражения»). 2. Кнопки операторов. Ниже находятся кнопки с часто используемыми операторами + * и т.д. (или вводим их с клавиатуры). 42 Рис. 23 3. Элементы выражения. Расположены в нижней части окна построителя, состоят из трех частей: Слева выводятся папки, содержащие таблицы, запросы, формы, функции, константы, операторы и общие выражения. В середине задаются определенные элементы или типы элементов для папки, заданной в левом поле. Справа выводится список значений (если они существуют) для элементов, заданных в левом и среднем полях. Двойным щелчком выбирайте по очереди поля «лит», «фил» и «инф», они будут попадать в поле выражения, ставьте между ними +. После того, как будут сложены все три оценки, нажмите ОК в построителе. Если Вы не видите в среднем поле ничего, то это означает, что Вы забыли сохранить запрос. Отмените построение, сохраните запрос и начните работу с построителем сначала. Сохраните запрос и перейдите в режим просмотра. Вернитесь в конструктор, переименуйте «Выражение 1:» на «Общий балл:». Сохраните. В конечном итоге будет так: Рис.24 Пример 2. Допустим, нам надо начислить стипендию по результатам сессии. Учтем, что с тройками стипендию не начисляют, а отличники получают повышенную стипендию. Пусть повышенная стипендия 1200 руб., обычная – 900 руб. 43 В этом случае будем использовать логическое выражение IIf (логическое выражение; значение, если выражение истинно; значение, если выражение ложь). Задание 16. Расчет стипендии. Откройте запрос «Результат_сессии» в режиме конструктора Щелкните ПКМ по свободному полю в конце (правее «Общий_балл») и выберите «Построить». Введите в построителе выражение: К выдаче: IIf([Общий_балл]=15;1200;0) Часть выражения можно набрать вручную, [Общий_балл] – двойным щелчком. Смысл этой записи следующий: если Общий балл =15 (логическое выражение верно), то в ячейке будет 1200; если Общий балл не равен 15 (логическое выражение не верно), то в ячейке будет 0. Просмотрите результат (откройте запрос в режиме просмотра). Вы видите, что пока мы рассчитали стипендию только для отличников. Теперь надо сделать так, чтобы тем, у кого нет троек, тоже начислили стипендию. Перейдите в режим конструктора, щелкните ПКМ по полю «К выдаче», выберите «Построить» и вместо последнего 0 допишите используя еще одно вложенное IIf : К выдаче: IIf([Общий_балл]=15;1200;IIf([лит]>3 And [фил]>3 And [инф]>3 And [Общий_балл]<15;900;0)) Просмотрите результат. Сохраните запрос. 44 Пример 3. Допустим, нам надо из ФИО введенных полностью получить фамилию и инициалы. Будем использовать функцию Left, которая «отрезает» k знаков слева Left ([imya];k) и оператор конкатенации &. Задание 17. Функция Left. Откройте этот запрос в режиме конструктора, в свободном поле в «Построителе» введите следующее: ФИО: [Фамилия] & " " & Left([Имя];1) & ". " В результате к фамилии добавляется пробел, первая буква имени, точка и пробел. Просмотрите результат. Самостоятельно добавьте в построителе нужный текст, чтобы получилось: Для текстовых полей вместо & можно использовать +. Для числовых полей нельзя. 45 Итоговые запросы Если же нужно подвести итоги по столбцу для всех записей, например, средний балл по философии по всему вузу, то делается итоговый запрос. Начинаем делать запрос по мастеру. В мастере запросов выбираем только числовые поля. Во втором шаге мастера выбираем «Итоговый» и нажимаем кнопку «Итоги» для определения нужной функции. Выберем Avg – среднее значение, затем продолжим работу с мастером по шагам. Задание 18. Итоговый запрос «Средние оценки». Создайте итоговый запрос и определите средние значения оценок по всем предметам На вкладке «Запросы» выберите – «…. с помощью мастера». Тип запроса – простой. В качестве источника выберите таблицу «Сессия_1» или запрос «Результаты_сессии». Выберите только числовые поля «фил», «лит» и «инф». На втором шаге мастера укажите «Итоговый», нажмите кнопку «Итоги» и поставьте флажки Avg (это среднее значение), ОК. Запрос назовите «Средние оценки». Перейдите в режим конструктора и переименуйте заголовки. Надеюсь, Вы уже поняли, что заголовок в запросе это то, что стоит слева от двоеточия. 46 Отчеты Для вывода на печать определенным образом систематизированной информации используют отчеты. Как и обычно, есть два способа. С помощью мастера. Указываем источник – таблицу, или запрос, сделанный по одной или нескольким связанным таблицам; выбираем нужные поля и внешний вид отчета. В отчете можно сгруппировать данные, для этого выбираем уровни группировки, их может быть несколько. Например, группировка по факультетам, а затем по специальности или наоборот, сначала по специальности, а затем по факультетам. Данные в отчете можно отсортировать (до 4 полей) в порядке возрастания или убывания. В режиме конструктора. Начинающему пользователю лучше сделать отчет с помощью мастера, а затем в конструкторе его отредактировать. Если в отчете обнаружились ошибки в данных, то их исправляют в таблице или запросе. Отчет можно перенести в файл MS Excel или в файл MS Word (используя меню Сервис Связи с MS Office или соответствующую кнопку на панели инструментов). Задание 19. Отчет «Выдача стипендии». Скопируйте запрос «Результат_сессии» и вставьте, дайте копии новое название «Выдача стипендии». Перейдите в запросе «Выдача стипендии» в режим конструктора и поставьте в полях «лит», «фил» и «инф» условие отбора >3 (см. подсказку к заданию). Таким образом, запрос «Выдача стипендии» покажет нам тех студентов, которые имеют только хорошие оценки и будут получать стипендию. Просмотрите запрос, сохраните. 47 Создайте на основе «Выдача стипендии» отчет с помощью мастера. В отчет включите только поля ID, ФИО, Группа и К_Выдаче (Рис.25). Рис.25. Первый шаг мастера создания отчета Добавьте группировку по полю Группа (Рис.26) 48 Рис.26. Второй шаг мастера, группировка данных. Отсортируйте по фамилии (Рис.27). Рис.27. Третий шаг мастера, сортировка данных. Выберите макет (например, ступенчатый), Далее. Выберите стиль (например, деловой). Готово. Просмотрите отчет. Допустим, мы считаем, что надо немного подвинуть вправо столбцы К выдаче и Номер зачетки. Кроме того, необходимо увеличить размер для поля ФИО, т.к. длинные фамилии могут не убраться. Продолжение задания 19. Конструктор отчета. Перейдите в режим конструктора (кнопки «Режимы» или щелчок ПКМ по отчету) и перетащите поля и заголовки. Сначала надо щелчком мыши выделить нужный объект (несколько объектов выделяют с Shift). Всю строку выделяют слева. 49 Заголовки полей Значения Рис.28. Конструктор отчета «Выдача стипендии» Выделите слева всю строку с заголовками полей. Уберите заливку и увеличьте размер шрифта кнопками на панели инструментов Рис. 28а После увеличения шрифта заголовков мы видим,что слово «Группа» не умещается в рамку. Увеличим размер рамки по высоте и ширине (курсор ставим справа так, чтобы получилась двойная стрелка, и растягиваем рамку; аналогично тянем вверх). Также растягиваем рамку для ФИО. Заметьте, остальные поля сдвигаются вправо. Получится примерно так: 50 Рис 29. Вы видите, что благодаря группировке и сортировке данные были выведены по группам и внутри каждой группы в алфавитном порядке по фамилии. Задание 20. Изменение данных в запросе. Откройте запрос «Результаты_сессии». Для дальнейшей работы нам необходимо, чтобы в каждой группе было не меньше 7-10 студентов. Измените в запросе группы так, чтобы остались только две группы – 9ДОУ и 7МВИ (тем студентам ,у которых другая группа смените на 9ДОУ и 7МВИ) или добавьте студентов в каждую группу. Измените в запросе оценки так, чтобы было больше студентов, получающих стипендию. Нескольким студентам (двум-трем) по дисциплине «лит» удалите оценки. Это будут не явившиеся на экзамен 51 студенты. Обратите внимание – для них исчезли цифры в поле «Общий балл». Снова откройте отчет «Выдача стипендии», убедитесь, что все изменения отражены в отчете. Этот отчет требует дальнейших изменений, т.к. в заголовке должно быть «Ведомость выплаты стипендии», и для каждой группы должна быть отдельная ведомость. Задание 21. Изменение отчета в режиме констуктора. Продолжение. В отчете «Выдача стипендии» перейдите в режим конструктора. Щелкните по надписи «Выдача стипендии», введите текст «Ведомость выплаты стипендии». Растяните надпись на всю ширину страницы. Отцентрируйте, шрифт – 16 пт., форматирование в конструкторе – обычное, как в Word (Рис.28а). Рис. 30. На панели инструментов найдите кнопку «Разрыв страницы» , нажмите ее и сделайте разрыв под строкой «Заголовок группы….». Просмотрите отчет (теперь каждая группа начинается со своего листа), но заголовок остался на первом листе. Надпись «Ведомость выплаты стипендии» вырежьте и вставьте в верхний колонтитул, чтобы она была на каждой странице. Для этого сначала мышью передвиньте вниз область «Заголовок группы…..», сдвиньте вниз названия полей. Затем вырежьте надпись «Ведомость выплаты стипендии», выделите мышью строку «Верхний колонтитул» и вставьте. 52 Подвиньте вверх область верхнего колонтитула так, чтобы исчезла область заголовка. Это уменьшит нам поля. Просмотрите отчет. Если есть пустые листы, это означает, что данные надо расположить по горизонтали более компактно. Передвиньте все влево. Начертите горизонтальную линию под данными. В конечном итоге получите в конструкторе то, что изображено на Рис. 31. (а в просмотре – на Рис.32) Рис. 31. Разрыв страницы Рис. 32 53 Осталось пронумеровать студентов в списке. Перейдите в конструктор отчета «Выдача стипендии». Если надо, то немного подвиньте вправо все элементы, чтобы освободить место. Добавьте поле кнопкой (нажмите кнопку и в нужном месте нарисуйте прямоугольник для поля, см. Рис. 33). В данные введите =1, Нажмите кнопку «Страница свойств» , выберите сумма с накоплением «для группы». Просмотрите отчет. 3. «Для группы» 2. вводим=1 1. Новое поле Рис. 33 Дополнительная информация. Чтобы изменить порядок сортировки или группировку, щелкаем ПКМ в любом месте отчета (в конструкторе), выбираем «Сортировка и группировка». Появится диалоговое окно, в нем можно добавить, убрать или изменить группировку или сортировку. Обратите внимание на нижнюю часть листа. Там показана дата печати и номер страницы. В нижней части отчета в области «Нижний колонтитул» 54 находятся функции ( =Now() и ="Страница " & [Page] & " из " & [Pages]), благодаря которым и распечатывается текущая дата и номера страниц. Редактировать отчет можно и в режиме «Макет». Окончательный вид просматриваем в режиме «Предварительный просмотр». Пустые значения (Null) Вернемся к проблеме студентов, не явившихся на экзамен. Access не превращает пустые значения в нули, и не учитывает их в расчетах. Это надо иметь в виду, поэтому нам придется в запросе исправить формулу для поля «Общий балл». Задание 22. Пустые значения. Откройте в режиме конструктора запрос «Результаты_сессии». По полю «Общий балл» щелкните ПКМ, выберите «Построить». Измените выражение: Условие Значение, если условие выполняется Значение, если условие не выполняется Это означает, что если в поле «лит» значение не пустое (Is not Null), то в формулу для «Общий балл» войдет значение, равное «лит», если же «лит» пустое, то в формулу для «Общий балл» войдет значение, равное 0 Попробуйте самостоятельно исправить формулу для «Общий балл», с учетом возможных пустых значений в полях «фил» и «инф». Задание 23. Запрос «Не сдали литературу». Создайте новый запрос «Не сдали литературу». Можно делать на основе двух таблиц или запроса «Результаты_сессии». В новом запросе достаточно полей ФИО, группа и ID (и «лит», конечно). 55 Сделайте такое условие отбора, чтобы в запрос попали и не явившиеся на экзамен и получившие двойки. Для поля «лит» уберите признак вывода на экран. Всегда просматривайте готовые запросы. Просмотрите запрос. На основе «Не сдали литературу» сделайте отчет «Список должников по литературе», отсортируйте в отчете студентов по фамилии. Запрос Отчет Работа с MS Office Перейдите на вкладку «Внешние данные». MS Access позволяет Перенести данные из таблицы или запроса (или формы) в файл MS Excel Перенести данные из таблицы или запроса в файл MS Word Использовать слияние с MS Word. Анализ в MS Excel. Задание 24а. Выделите запрос «Результаты_сессии» или откройте его, нажмите . Укажите параметры экспорта (лучше оба флажка поставить). 56 Программа покажет Вам данные из этого запроса, сохраненные в файл MS Excel в рабочем каталоге. Теперь Вы можете работать с этими данными, используя средства MS Excel. Публикация в MS Word. Задание 24б. Откройте запрос «Выдача стипендии», нажмите . Укажите параметры экспорта. В результате данные окажутся в файле MS Word в виде таблицы. Теперь Вы можете работать с данными, используя средства MS Word. Уберите в таблице лишние столбцы, перетащите их в нужное положение, отсортируйте строки (по группам), разбейте таблицу на части так, чтобы для каждой группы получилась своя таблица, сделайте заголовок (или колонтитул) и получите файл, заменяющий сделанный ранее отчет. Разница в том, что отчет Вы делаете один раз, и все изменения в базе сразу отразятся в отчете. А файлы MS Word или MS Excel Вам придется постоянно переделывать. Слияние с MS Word. Задание 24в. Справка об обучении. Это более сложное действие, но результат того стоит. Можно установить связь с уже готовым документом или создать новый документ. Сделаем справку о том, что данный студент учится в вузе. Выделите запрос «Результаты_сессии», нажмите , выберите «Слияние…...», выберите «Создать новый документ……», ОК. Откроется документ Word, наберем текст (Рис. 34, 35 и 36). Там, где планируется брать данные из базы, кнопкой «Вставить поле слияния» 57 вставляем названия полей. На Рис. 34 вставлено поле «Фамилия» и показан процесс вставки поля «Имя», работать надо на вкладке «Рассылки». На Рис.35 показан конечный вариант файла (с полями), на Рис. 36 – тот же файл, но с данными для первой записи. Показана вставка поля «Имя» (после «Фамилия») Рис. 34 Рис. 35. Показаны поля. 58 После этого переходим от полей к данным (кнопка «Просмотр результатов»). От записи к записи переходим, используя кнопки . Если обнаружена ошибка в данных, то изменять их надо в базе, в таблице или запросе, а не в документе слияния. Кнопки перехода по записям Кнопка для просмотра данных Рис. 36. Показаны данные. Основные выводы MS Access создает базу данных в файле с расширением*.mdb в MS Access 2003 и с расширением*.accdb в MS Access 2007. Этот файл содержит несколько типов объектов Таблицы, для хранения данных. Хотя бы одна таблица в базе данных должна быть. В таблицах могут быть особые ключевые поля, по которым программа может однозначно определить запись. Ключевые поля не могут иметь пустых или повторяющихся значений. Ключом могут быть поля 59 типа счетчик. Если таблиц несколько, то, благодаря наличию ключей, их можно связать. Если таблица одна, то ключевых полей может не быть. Запросы, для выборки определенной информации и некоторые другие запросы. В запросах могут быть расчетные поля. Формы, для более удобного ввода данных. В формах могут быть расчетные поля. Выражения для расчета в формах и запросах одинаковые, только в форме в пустое поле вводится = выражение, а в запросе (в конструкторе) синтаксис следующий – название: выражение. Отчеты, для вывода определенным образом структурированной информации на печать. В отчетах тоже могут быть расчеты. Дополнительные сведения о запросах В MS Access существуют следующие виды запросов: запрос на выборку, запрос на изменение, перекрестные запросы. Запрос на выборку строится на одной или нескольких связанных между собой таблицах или другом запросе. Из исходных таблиц мы выбираем только нужные поля, а в конструкторе запроса можно указать условия отбора и порядок сортировки данных (этот тип запроса мы делали на практике). Существует несколько вариантов запросов на выборку. Параметрический запрос на выборку Если приходится делать запрос на выборку с разным условием отбора по одному полю, то удобно делать запрос с параметром. Для этого в конструкторе запроса вводим в строке «Условие» квадратные скобки с поясняющим текстом. Например, [введите номер группы]. Тогда перед открытием запроса появится окно, в которое и будем вводить требуемое условие. 60 Задание 25. Параметрический запрос. Скопируйте запрос «Результаты_сессии», вставьте, назовите копию «Результаты сессии по группам». Перейдите в режим конструктора. В строке «Условие отбора» для поля Группа введите вручную текст – [введите группу] (Рис.37) Рис.37 Просмотрите. На запрос программы в диалоговом окне введите одну из групп, 9ДОУ, например, ОК. В результате Вам будут показаны только студенты этой группы. Выполните этот запрос еще раз, теперь введите другую группу. 61 Групповые операции Иногда в запросе на выборку удобно группировать данные. Для создания подобных запросов необходимо после начала создания запроса в меню Вид выбрать раздел «Групповые операции» (или кнопка ). В результате в конструкторе запросов появится строка «Групповая операция». В Microsoft Access можно выполнять групповые операции для всех записей сразу или для групп записей. Для выполнения вычислений необходимо для каждого поля, включенного в запрос, выбрать соответствующую опцию из раскрывающегося списка в строке Групповая операция. Чаще всего используются опции: Группировка. Данная функция используется для указания поля, которое будет использоваться в качестве группирующего. Sum – это функция для вычисления суммы значений в поле для каждой группировки. Avg – функция для вычисления среднего значения в поле для каждой группировки. Max - функция для вычисления макс. значения в поле для каждой группировки. Min - функция для вычисления мин. значения в поле для каждой группировки. Count - функция для вычисления количества записей для каждой группировки. Задание 26. Групповые запросы. Допустим, мы хотим узнать количество студентов в каждой группе. Создайте новый запрос на основе таблицы «Кадровая информация» или запроса «Результаты_сессии» (т.к. нужные нам данные находятся и там и там). В этот запрос возьмите только два поля – Группы и ID. 62 Нажмите кнопку (в режиме конструктора), в поле ID в строке «Групповая операция:» выберите Count. Просмотрите запрос, получится, как на Рис. 38. Переименуйте поле Count-ID в «Количество студентов» (Рис. 38а) Конструктор Просмотр Рис. 38 Рис. 38а Задание 27. Оплата обучения. Допустим, что часть студентов обучается платно. Создайте таблицу для ввода оплаты за обучение. Естественно, что в ней должны быть поля ID (тип – текстовый), Дата_оплаты (тип – дата/время), №_счета (или квитанции или договора, 63 тип – текстовый) и Сумма_оплаты (тип – денежный). Введите их в конструкторе таблицы. Для поля Дата_оплаты в свойствах в строке «По умолчанию» введите Date(), тогда автоматически для каждой новой записи будет введена текущая дата. Для выбора студента (ID) используйте мастер подстановок из таблицы «Кадровая информация». Т.к. оплата может быть сделана несколькими этапами, то ID не может быть ключевым полем (ведь он будет повторяться), поэтому при сохранении таблицы на вопрос о ключевых полях ответьте «Да». Программа создаст поле типа Счетчик, Вы его сразу увидите в режиме просмотра таблицы. Это поле вы могли создать сами в конструкторе сразу или потом. Назовите таблицу «Оплата_1_семестра». Просмотрите таблицу, заполните ее данными. Пусть стоимость обучения 20000 руб. за семестр. Оплата проходит в 2 этапа. Пусть некоторые оплатили полностью все 20000, часть студентов заплатила только половину. В результате будет примерно так, как на Рис.39. Здесь мы для подстановки выбрали не только столбец ID, но еще и фамилию, а ключевой столбец скрыли. Поэтому на Рис 39 мы видим название поля ID, а в ячейках фамилию. Проделано это было из тех соображений, что удобнее вводить оплату по фамилии (но это вопрос спорный, не известно, как удобнее на самом деле, а надежнее по ID, т.к. могут быть однофамильцы и их трудно отличить). Вы можете сделать иначе. 64 Автоматически созданное при сохранении таблицы ключевое поле Мастер подстановок Рис.39 На основе этой таблицы сделайте автоформу в столбец. На основе этой таблицы сделайте групповой запрос для определения общей суммы, оплаченной каждым студентом. Сохраните его, назовите «Суммарный платеж». Просмотрите. Переименуйте «Sum-сумма» в «Сумма платежа» Перейдите в режим конструктора, условие отбора для поля [Сумма платежа] сделайте <20000. Просмотрите. Переименуйте запрос в «Долги по оплате» 65 На основе «Долги по оплате» сделайте отчет по мастеру. Просмотрите. Очевидно, что тут не хватает суммы долга. Перейдите в конструктор отчета. Выделите поле [Сумма платежа]. В окне свойств, в строке имя наберите pl (мы переименуем это поле для удобства). Нажмите кнопку на панели инструментов и введите справа новое расчетное поле. Для него в окне свойств в строке «Данные» введите = 20000-[pl] В строке «Формат поля» выберите «Денежный». Выше (в верхнем колонтитуле) введите заголовок «Долг» используя кнопку . Просмотрите отчет. Сохраните изменения. Заключение В результате на этих занятиях мы создали базу данных студентов «ВУЗ». 66 В этой базе в таблицу «Кадровая информация» введены студенты, обучающиеся в вузе. Оценки за первую сессию введены в другую таблицу «Сессия_1». Эти таблицы связаны по полю ID (номер зачетки). Создано несколько запросов. Из них мы можем получить информацию о должниках по оплате или по экзаменам, численный состав групп, списки групп и др. Любой из этих запросов или таблиц можно вывести на печать (меню Файл Печать). Создано несколько отчетов для более понятного и удобного представления информации. Это, как вы понимаете, один из возможных вариантов построения базы данных. Основной недостаток этой базы почти сразу бросается в глаза. Очевидно, что таблица «Сессия_1» не удобна для введения оценок. Ведь не весь же поток сдает одни и те же предметы, и не ясно, как учитывать пересдачи. Кроме того, для учета успеваемости в других семестрах надо для каждого семестра создать отдельную таблицу. Поэтому лучшим вариантом была бы таблица «Успеваемость», в которой учтено все: ID студента, название предмета, форма испытания (зачет, экзамен и т.д.), оценка, фамилия преподавателя, дата испытания. Очевидно, что в этой таблице для каждого студента будет несколько записей (по числу экзаменов за все время обучения). Поэтому ключевым полем для нее будет не ID, а поле типа «Счетчик» – номер (код) экзамена. Связь между таблицами тогда будет типа «один-ко-многим». К сожалению, такова судьба всех разработчиков баз данных. Свою базу постоянно приходится переделывать и улучшать. Иногда это требует значительных усилий, иногда проще выкинуть старую неудачную базу и все сделать заново. Только такие глобальные переделки лучше делать как можно раньше, пока в Вашу базу не внесено несколько тысяч записей. Не 67 всегда их удастся перенести, а заново все вводить….(далее без комментариев). Поэтому лучше обо всем подумать заранее. Подсказки к заданиям: К заданию 17. ФИО: [Фамилия] & " " & Left([Имя];1) & ". " & Left([Отчество];1) & "." К заданию 19. Конструктор запроса «Выдача стипендии» и условия отбора К заданию 22. 68 К заданию 23. Пример выполнения контрольной работы Требования к работе. Необходимо создать базу данных «Квартирное агентство». В базе должна быть информация о квартирах, которые продаются в данном агентстве, данные о покупателях и продавцах (ФИО и паспорт), данные о сделках (№ договора, дата, реальная стоимость). В базе должны быть сделаны запросы и отчеты. Эти запросы и отчеты должны давать информацию о процессе, например, общие итоги сделок, количество проданных квартир (разбито по улицам, по количеству комнат, по агентам), списки проданных квартир, данные по клиентам (что продал, что купил) Должна быть одна или несколько форм для операторов, водящих данные и распечатывающих документы. 69 Выполнение. В базе создадим таблицы: Улицы, для выбора улиц из списка. Используем ее для мастера подстановок в таблице «Квартиры». Квартиры, здесь данные о продающихся квартирах: количество комнат, площадь жилая и общая (числовые поля), стоимость (денежное поле), улица (мастер подстановок), № дома, № квартиры, этаж, этажность дома, наличие балкона и лоджии (логические поля), дополнительная информация. Ключевое поле – код_квартиры, счетчик. Агенты, в ней находится информация о сотрудниках агентства. Эту таблицу используем в мастере подстановок. Клиенты, в ней находится информация о покупателях и продавцах. Ключевые поля в таблицах Агенты и Клиенты – счетчики. Заполним таблицы (Рис.40) 70 Рис.40 Создадим новую таблицу Продажи с полями Код_продажи – ключевое поле, счетчик; квартира (мастер подстановок из таблицы «Квартира»); дата продажи (дата/время) в строке «По умолчанию» введем Date(); номер договора; покупатель (мастер подстановок из таблицы «Клиенты»); продавец (мастер подстановок из таблицы «Клиенты»); агент, оформивший сделку (мастер подстановок из таблицы «Агенты»); действительная_стоимость (денежный), т.к. она может отличаться от заявленной. 71 На основе этой таблицы делаем автоформу. Эта форма поможет оператору вводить данные. Оформляем несколько продаж с помощью формы (см. Рис.41 и 41а) Рис.41, форма «Продажи» Рис.41а, таблица «Продажи» 72 Схема данных выглядит примерно так: Делаем запрос по таблицам «Продажи» и «Квартиры», называем его «Квартиры проданные». В запрос возьмем все поля из этих таблиц (см. Рис.42 и 42а). Рис.42. Конструктор запроса. 73 Рис.42а. Просмотр запроса. В этом запросе делаем расчетное поле Адрес, а поля Улица, Дом, Квартира скрываем Скрыть здесь, снять флажок В просмотре. В конструкторе. В таблице Продажи изменим несколько дат так, чтобы было всего два месяца продаж, например, часть квартир продана в феврале 2010, а часть в марте 2010. 74 Делаем отчет «Продажи» (с помощью мастера) на основе запроса «Квартиры проданные». В отчет берем поля: Адрес. Этаж. Количество комнат. Дата продажи. Действительная стоимость. Номер договора. Продавец. Покупатель. Делаем группировку по полю «Дата продажи»; сортировку по полю «Дата продажи», а затем по полю Адрес. Ориентацию выбираем альбомную. Немного в конструкторе двигаем поля, чтобы отчет стал легко читаемым. 75 Допустим, нас интересует, на какую сумму за все время было продано 3комнатных квартир. Делаем групповой запрос (Рис.43), называем его «Продажи 3-комнатных квартир». Рис.43 Допустим, нас интересует, сколько квартир продал тот или иной агент. Делаем групповой запрос (Рис.44). Рис.44 В запросе «Продажи 3-комнатных квартир» убираем условие отбора. По этому запросу делаем отчет (с помощью мастера). Получим примерно то, что на Рис.45 (здесь был выбран тип отчета – спокойный, но Вы можете выбрать другой тип): 76 Рис.45 Ясно, что без подготовки тут ничего не поймешь. Перейдем в конструктор этого отчета, отредактируем отчет так, чтобы получилось примерно такое: Подсказка: В конструкторе должно быть примерно так: 77 Темы контрольных работ. 1. База данных «Платная поликлиника». В этой базе должен вестись учет платных больных в поликлинике: Создано несколько таблиц (некоторые из них для подстановки). Создано несколько запросов для получения списка больных, списка врачей и их специальностей, выручка за день, всего заплачено по клиентам. Созданы отчеты по этим запросам. Созданы формы для оформления больных. 2. База данных «Магазин». В этой базе должно вестись движение товара: Создано несколько таблиц (некоторые из них для подстановки). Создано несколько запросов для получения списка товаров проданных или полученных на склад, выручка за день, всего заплачено по поставщикам или покупателям. Созданы отчеты по этим запросам. Созданы формы для кладовщика и работника торгового зала, получающего или отпускающего товар. 3. База данных «Школа». В этой базе должно быть: Создано несколько таблиц (некоторые из них для подстановки). Создано несколько запросов для получения списка учеников по классам, список учителей, успеваемость каждого ученика, средние оценки по предметам за год. Созданы отчеты по этим запросам. Созданы формы для ввода оценок. 78 MICROSOFT ACCESS. ПРАКТИКА Учебное пособие Наталья Дмитриевна Сухонина Редакторы: Л.П. Шахрова Н.И. Морозова Лицензия ПД № 18-0062 от 20.12.2000 Подписано к печати Печ.л. Формат Тираж 200 экз. Заказ № Цена договорная Типография НГЛУ им. Н.А. Добролюбова, 603155, г. Н.Новгород, ул. Минина, д.31-а 79