Создание запроса с параметрами 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Создание запроса с параметрами



Для создания запроса на выборку в режиме Конструктор для поля, которое предполагается использовать как параметр, ввести в ячейку строки Условие отбора выражение с текстом приглашения, заключенным в квадратные скобки [Текст приглашения].

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

Like “*” & [Текст вопроса] & “*”, в этом случае можно будет указывать неполное название.

 

Пример 10. Необходимо получить сведения о продукции в конкретном отделе. Построим следующий запрос (рис. 25):

 

 

Рис. 25. Конструктор запроса с параметрами

 

Теперь, при запуске запроса пользователю будет задаваться вопрос (рис. 26):

 

 

Рис. 26. Работа запроса с параметром

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

 

Упражнения

В БД Супермаркет реализовать следующие запросы:

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

У к а з а н и е. Для поля ДатаПоставки из таблицы Поставки в строке Условие отбора задать выражение:

Between [Введите начальную дату] And [Введите конечную дату].

2. Создать запрос Сотрудники отдела, с помощью которого можно узнать, кто работает в конкретно указанном пользователем отделе.

3. Что за последний месяц поставлялось в конкретный (указанный пользователем) отдел?

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

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

6. Создать запрос Поставщик и его товары, который по указанному поставщику выдает список поставляемых им товаров.

7. Создать запрос, который определяет того, кто раньше всех был принят на работу в конкретно указанный отдел.

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

 

Контрольные вопросы

1. Дайте определение условия Запрос с параметром.

2. Как построить условие Запрос с параметром?

3. Какое условие необходимо сформулировать для ввода неполного текстового параметра?

 

 

Тема 7. Функции в запросах

 

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

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

Примеры основных функций в Access:

Day ([Название таблицы].[Название поля]) – возвращает значение дня месяца в диапазоне от 1 до 31;

Month (дата) – возвращает значение месяца года в диапазоне от 1 до 12;

Year (дата) – возвращает значение года в диапазоне от 100 до 9999.

 

Пример 11. Создайте запрос, который позволяет получить полную информацию о поставленной продукции по указанному номеру месяца от 1 до 12 (рис. 27).

 

 

Рис. 27. Функции в запросах

 

Пример 12. Определите стаж работы каждого сотрудника.

Для этого воспользуемся построителем выражений (рис. 28).

Функция DateDiff позволяет получить промежуток между датами. Причем, чтобы промежуток был предоставлен в днях, годах или других единицах времени, необходимо указать формат ответа: «yyyy» – промежуток в годах; «m» – разница в месяцах; «d» – в днях; «w» – неделях.

Бланк запроса будет выглядеть, как показано на рис. 29.

 

При построении запросов, в которых сопоставляются данные по периодам, часто приходится ссылаться на начало месяца, квартала и т. п. (табл. 7).

 

 

Рис. 28. Использование функции DateDiff

 

 

Рис. 29. Бланк запроса с заданной функцией

 

Т а б л и ц а 7

Полезные функции для обработки дат

 

Для определения Выражение
Текущего месяца DataSerial (Year (Date()); Month(Date()); 1)
Следующего месяца DataSerial (Year (Date(); Month(Date())+1; 1)
Первого дня текущего месяца DataSeiral (Year (Date()); Month(Date())+1; 0)
Первого дня текущего квартала DataSeiral (Year (Date()); Int ((Month(Date())-1)/3)*3+1; 1)
Последнего дня текущего квартала DataSeiral (Year (Date()); Int ((Month(Date())-1)/3)*3+4; 0)

 

Записи без подчиненных

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

- в окне БД выбрать объект Запросы, нажать кнопку Создать;

- в открывшемся диалоговом окне выбрать Записи без подчиненных;

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

 

Упражнения

В БД Супермаркет реализовать следующие запросы:

1. Создать запрос Месяц поставки, в котором из полной ДатыПоставки будет выделен порядковый номер месяца (на основании таблиц Товары и Поставки). Категория функций Дата/время, функция Month.

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

Номер месяца: Month ([Поставки]![Дата Поставки]).

2. Создать запрос Год поставки (аналогично предыдущему заданию). Категория функций Дата/время, функция Year.

3. В запросе Расчет акциза, определить размер акциза (20 %), если товар подакцизный, в противном случае установить значение 0 (на основании таблицы Товары). Категория функций Управление, функция IIf.

У к а з а н и е. Добавить новое поле Размер акциза, в котором задайте выражение:

Размер акциза: IIf (Товары!Акциз=Истина;Товары!Цена*0,2;0).

4. В запросе Поставки в выходные дни, на основании таблиц Товары и Поставки, отобразить информацию о тех поставках, которые были сделаны в субботу или воскресенье. Категория функций Дата/время, функция WeekDay.

У к а з а н и е. Добавить новое поле День недели, в котором задать выражение:

День недели: Weekday ([Поставки]![Дата Поставки]; 2).

В строке Условие отбора задать условие 6 Or 7.

5. Создать запрос с параметром Данные по месяцу, который позволяет по введенному названию (текстом) месяца получить информацию о том, что, когда и в каком количестве поставлялось в супермаркет на основании таблиц Товары и Поставки.

У к а з а н и е. Добавить новое поле Название месяца, в котором задать выражение:

Название месяца: MonthName (Month ([Поставки]![Дата Поставки])).

В строке Условие отбора задать условие параметра:

Like «*» & [Ввести название месяца] & «*».

6. Создать запрос Возраст сотрудников (на основании таблицы Сотрудники). Категория функций Дата/время, функция DateDiff.

7. Сколько месяцев прошло с момента первой поставки?

8. В списке отделов супермаркета создать поле, в котором есть уточнения по поводу наличия в нем подакцизных товаров (т. е. в столбце написан текст: «подакцизные товары ЕСТЬ» или «подакцизных товаров НЕТ»).

У к а з а н и е. Добавить в запросе новое поле с условием Подакцизные товары:

IIf (Sum ([Товары]![Акциз]=Истина)<>0;«ЕСТЬ»;«НЕТ»).

Включить групповые операции, в строке Групповая операция выбрать Выражение.

9. Организовать запрос Сопоставление данных за 2006 и 2007, в котором будут выведены суммарные расходы по всем поставкам 2006 и 2007 годов отдельно в две строки.

10. Организовать запрос Сопоставление данных по двум любым месяцам, в котором будут выведены суммарные расходы по двум любым названиям месяцев, которые вводятся с клавиатуры в виде текста (например, янв., фев. и т. п.).

11. Организовать запрос Поставки текущего квартала (с использованием функций DateDiff, Now () для расчета разницы между датами, выраженной в месяцах «m», и других условий).

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

13. Создать запрос, который определяет, кто из зарегистрированных поставщиков не сделал ни одной поставки.

14. Создать запрос, который определяет, есть ли в БД названия отделов, в которых никто из сотрудников не числится.

 

Контрольные вопросы

1. Какие встроенные функции вы знаете?

2. Какими способами можно внести функцию в Конструктор запроса?

3. Дайте характеристику способа создания запросов записи без подчиненных.

4. С помощью какой функции можно определить разницу между датами?

5. Как определить в запросе текущую дату?

 

 

Тема 8. Перекрестные запросы

 

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

В этом случае значения полей по первому признаку группировки могут стать заголовками строк, а по второму – заголовками столбцов.

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

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

 



Поделиться:


Последнее изменение этой страницы: 2017-01-27; просмотров: 1115; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 54.144.81.21 (0.11 с.)