Вопрос №3. СУБД Microsoft Access: создание запросов с параметрами и запросов действия




 

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

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

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

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

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

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

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

Язык SQL (Structured Query Language - структурированный язык запросов) - это стандартный набор слов английского языка, применяемый для описания запроса к базе данных. Access автоматически транслирует все запросы в последовательность символов своего собственного диалекта языка SQL, именуемого Jet SQL.

В Access различают четыре основных типа запросов, позволяющих решать различные задачи:

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

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

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

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

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

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

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

Для текстового поля задается строка, содержимое которой будет сравниваться со значениями соответствующего поля таблицы. Совпадение значений приведет к добавлению текущей записи в итоговую таблицу. При составлении строки знак * означает любую последовательность символов, а? один любой символ. Например, условие "ГОМЕЛЬ" в поле Город, выдаст список записей, содержащих название этого города. Условие "Нов*" соответствует значениям начинающимся с Нов, "*а*" выдаст все записи с буквой а в названии, "?????" отыщет все комбинации из пяти символов, а "??*" соответствует значениям состоящим не менее чем из двух символов.

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

Для этой цели служит специальная команда языка SQL, которая выглядит так:

Like [ Текст сообщения пользователю ]

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

По умолчанию Access определяет тип вводимых данных как Текстовый. Если же параметр задает условие отбора из столбца с данными типа Числовой или Дата/Время, то необходимо вручную назначить тип данных.

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

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

Доход: [Продано]*[Цена]/6

До двоеточия следует название вычисляемого поля, выводимое в заголовке столбца результирующей таблицы. В узкое поле бланка запроса неудобно записывать длинные формулы, но если воспользоваться комбинацией клавиш Shiht+F2, то откроется вспомогательное окно Область ввода. В нем есть возможность ввести сколь угодно длинную формулу, а затем добавить ее в поле запроса, простым нажатием на кнопку ОК.

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




Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-10-17 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: