- •Основные термины и понятия ms Access
- •2. 1 Разработка структуры взаимосвязанных таблиц базы данных
- •2.2 Создание базы данных в субд Access
- •2.3 Создание структуры таблиц
- •2.4 Заполнение таблиц данными.
- •2.5 Создание связей между таблицами базы данных
- •2. 6 Создание простых форм ввода данных
- •2.7 Создание сложных форм
- •2.8 Создание запросов
- •2.10 Формирование запроса с параметром
- •2.12 Создание отчетов
- •Задания для выполнения работы
- •Варианты заданий:
2.10 Формирование запроса с параметром
Запрос с параметрами – это запрос, при выполнении отображающий в собственном диалоговом окне приглашение пользователю ввести данные или условие, для которых будет произведена выборка.
Основой для запроса с параметрами является запрос на выборку. Отличие запроса с параметрами от запроса на выборку заключается в том, что в строке Условие отбора вместо конкретного значения для выбранного поля записывается поясняющий текст с запрашиваемым параметром, заключенный в квадратные скобки. А после отправления этого запроса на выполнение на экране появится диалоговое окно со строкой ввода, в которой пользователь сможет указать требуемые данные. Так, в Примере 2 были выбраны отличники по информатике. Если же нужно выбрать отличников по другому предмету, то нужно создавать новый запрос на выборку. А если создать запрос с параметром, в котором предусмотреть возможность пользователю самому вводить название предмета (не на этапе создания запроса, а на этапе его выполнения), то один и тот же запрос может быть использован для просмотра отличников по разным предметам.
Примечание: поясняющий текст, заключаемый в квадратные скобки, обязательно должен отличаться от имени поля, поскольку при совпадении будет использоваться значение из названного поля, а не значение, вводимое пользователем.
Пример 3. Создадим запрос на выборку студентов определенной группы с запросом параметра – номера требуемой группы.
По аналогии с Примером 1 или Примером 2 для таблицы Студенты создаем запрос на выборку, включив в него поля Фамилия, Имя, Отчество, Номер группы. В строке Условие отбора для поля Номер группы записываем текст [введите номер группы]. Получим макет запроса:
Закроем диалоговое окно, подтвердив сохранение макета запроса и дав ему название Группа. Выполним запрос, введем в появившемся диалоговом окне запрашиваемое значение и убедимся в правильности выборки по заданным условиям.
Примечание: поскольку в нашем случае структура таблицы Студенты такова, что в поле Номер группы вводятся только цифры, а написание буквосочетания «гр» производится автоматически (это оговорено в маске ввода), то и при вводе номера группы в созданном запросе также необходимо набирать только цифры.
Задание 4. Создадим запрос на выборку студентов-отличников или студентов-хорошистов по информатике.
Отличие данного задания от Примера 2 состоит в том, что указывать, для каких именно студентов нужно выводить данные, пользователь должен в ходе выполнения запроса. Таким образом, данный запрос будет являться запросом с параметром. Основа для запроса создается так же, как в рассмотренных ранее примерах. Запрос формируется из полей таблиц: Студенты, Дисциплины и Оценки. Обязательно в бланк запроса должны быть помещены поля Фамилия, Дисциплина и Оценка, хотя поля Оценка и Дисциплина могут не печататься, если снять переключатель Вывод на экран.
Тогда макет запроса будет иметь вид:
Закроем диалоговое окно, подтвердив сохранение макета запроса и дав ему название Отметки по информатике. Выполним запрос, введем в появившемся диалоговом окне запрашиваемое значение (для студентов-хорошистов это условие «3», а для студентов-отличников соответственно условие «4») и убедимся в правильности выборки по заданным условиям.
Пример 5. Создадим запрос на выборку студентов-отличников или студентов-хорошистов по предмету, указать который должен пользователь в ходе выполнения запроса.
Запрос создается так же, как в Примере 4, но для поля Дисциплина в строке Условие отбора записывается не конкретный предмет, а поясняющий текст, заключенный в квадратные скобки. Макет запроса будет иметь вид:
Закроем диалоговое окно, подтвердив сохранение макета запроса и дав ему название Отметки по предмету. Выполним запрос, введем сначала в первом появившемся диалоговом окне название требуемой дисциплины, а затем, во втором – величину отметок и убедимся в правильности выборки по заданным условиям. Примечание: порядок появления диалоговых окон обусловлен взаимным расположением полей в макете запроса, в нашем случае, поле Дисциплина расположено левее поля Оценка, следовательно, и диалоговое окно по этому параметру при выполнении запроса появится первым.
Пример 6. Создадим запрос на выборку студентов нескольких групп, номера которых находятся в задаваемых пользователем пределах. Данное задание отличается от Примера 3 тем, что запрашиваться должен не один параметр (номер группы), а два – начальный и конечный номера требуемых групп.
В Примере 5 рассматривался случай запроса с формированием нескольких диалоговых окон для ввода запрашиваемых параметров, относящихся к разным полям. Возможно также использование нескольких диалоговых окон для ввода параметров, относящихся к одному полю. В нашем случае, нужно вводить начальный и конечный номера студенческих групп. Условие отбора можно сформулировать так: выводятся те студенческие группы, номера у которых больше либо равны начальному номеру и одновременно меньше либо равны конечному номеру (значит, необходимо использование логической связки И). Макет такого запроса будет иметь вид:
Закроем окно Конструктора, подтвердив сохранение макета запроса и дав ему название Группы. Выполним запрос, введем сначала начальный, а затем конечный номера студенческих групп и убедимся в правильности выборки по заданным условиям.
Пример 7. Создание перекрестного запроса Перекрестный запрос подсчитывает сумму, среднее, число значений или выполняет другие статистические расчеты, после чего результаты группируются в виде таблицы по двум наборам данных, один из которых определяет заголовки столбцов, а другой заголовки строк. Такой формат представления данных является наиболее компактным и удобным для анализа.
Перекрестный запрос формируется на основании одной таблицы в отличие от простого запроса, который может быть построен с использованием полей из нескольких таблиц. Поэтому если необходимо в перекрестный запрос включить поля из нескольких таблиц, сначала формируется простой запрос из нужных полей, а затем, на основании этого простого запроса создается перекрестный.
Создадим перекрестный запрос с вычислением среднего балла в студенческих группах по дисциплинам (номера студенческих групп расположим построчно, а по столбцам расположим названия учебных дисциплин).
Сначала формируем простой запрос на основе трех таблиц: из таблицы Студенты в бланк запроса помещаем поле Номер группы, из таблицы Дисциплины – поле Дисциплина, а из таблицы Оценки – поле Оценка.
Макет такого запроса будет иметь вид:
Сохраним макет запроса, дав ему название Средние оценки. Теперь на основе этого запроса можно создать перекрестный запрос. Щелкнув мышью по кнопке Создать, выберем вид запроса перекрестный. В появившемся диалоговом окне Создание перекрестных таблиц установим переключатель Показать на Запросы и из предложенного списка простых запросов выбираем тот, на основе которого будет строиться перекрестный запрос, т.е. Средние оценки. Щелкаем по кнопке Далее>. В следующем диалоговом окне нужно выбрать поле, являющееся заголовком строк для формируемой таблицы. В нашем случае это поле Номер группы. Переведем это поле из списка Доступные поля в список Выбранные поля нажатием на кнопку . Щелкаем по кнопке Далее>. В следующем диалоговом окне выберем поле, являющееся заголовком столбцов. В нашем случае это поле Дисциплины. Щелкаем по кнопке Далее>. В следующем диалоговом окне для оставшегося поля (в нашем случае это поле Оценка) нужно выбрать расчетную функцию. В нашем случае это функция среднее. Щелчком мыши можно снять или установить флажок Вычислить итоговое значение для каждой строки. Щелкаем по кнопке Далее> и в последнем диалоговом окне задаем название созданного перекрестного запроса Средние оценки групп. Нажимаем кнопку Готово и просмотрим результаты:
В случае, если бы был установлен флажок Вычислить итоговое значение для каждой строки, результат был бы таким:
