Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Базы Данных

.pdf
Скачиваний:
162
Добавлен:
04.06.2015
Размер:
5.09 Mб
Скачать

2. Создание запросов

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

 

 

Таблица 2.6

 

 

 

Формулировка

Пример записи

Результат отбора

условия

 

 

 

 

 

Равно заданному

100 или =100

Записи, в которых числовое поле

значению

 

Цена равно 100

 

 

 

Не равно заданному

Not 100 или <>100

Записи, в которых поле Цена не

значению

 

равно 100

 

 

 

Содержит значение,

< 100

Записи, в которых поле Цена

меньше заданного

 

меньше 100

 

 

 

Диапазон значений

Between 50 And 100

Записи, в которых значение поля

(включая границы)

 

Цена находится в указанном диа-

 

 

пазоне, включая границы

 

 

 

Совпадает с одним

In (50; 75; 100)

Записи, в которых значение поля

из значений списка

 

Цена содержится в списке

 

 

 

 

 

 

Таблица 2.7

 

 

 

 

Формулировка

Пример записи

 

Результат отбора

условия

 

 

 

 

 

 

 

Равно заданному

#10. 06.2009#

Записи,

в которых поле типа

значению

или

Дата/время, например, ДатаПо-

 

=#10. 06.2009#

ставки равно заданному значению

 

 

«10.06.2009»

 

 

 

Не равно

Not #10. 06.2009#

Записи, в которых значение поля

заданному

или

ДатаПоставки не равно заданному

значению

<>#10. 06.2009#

значению «10.06.2009»

 

 

 

 

Совпадает с одним

In (#10. 05.2009#; #10.

Записи,

в которых значение поля

из значений списка

06.2009#)

ДатаПоставки равно значению из

 

 

списка

 

 

 

 

 

80

2. Создание запросов

 

 

Продолжение табл. 2.7

 

 

 

Формулировка

Пример записи

Результат отбора

условия

 

 

 

 

 

 

 

Содержит любой

DatePart ("m";

Записи, в которых значение поля

день заданного

[ДатаПоставки]) = 1

ДатаПоставки относится к любому

месяца (независи-

 

дню января. Функция DatePart из-

мо от года)

 

влекает указанную часть даты

 

 

 

Содержит любой

DatePart ("q";

Записи, в которых значение поля

месяц заданного

[ДатаПоставки]) = 2

ДатаПоставки относится к любому

квартала (незави-

 

месяцу второго квартала

 

симо от года)

 

 

 

 

 

 

 

Содержит

Date ()

Записи, в которых значение поля

текущую дату

 

ДатаПоставки равно текущей дате

 

 

 

Содержит

Date () – 1

Записи, в которых значение поля

вчерашнюю дату

 

ДатаПоставки

равно

вчерашней

 

 

дате

 

 

 

 

 

Содержит

Date () + 1

Записи, в которых значение поля

завтрашнюю дату

 

ДатаПоставки

равно

завтрашней

 

 

дате

 

 

 

 

 

Содержит один из

Between Date () – 6 And

Записи, в которых значение поля

последних семи

Date ()

ДатаПоставки относится к по-

дней

 

следним семи дням

 

 

 

 

Содержит дату,

Year ([ДатаПоставки])

Записи, в которых значение поля

приходящуюся на

= Year (Date ())

ДатаПоставки относится к теку-

текущий год

 

щему году

 

 

 

 

 

Содержит дату,

Year ([ДатаПоставки])

Записи, в которых значение поля

приходящуюся на

= Year (Date ()) – 1

ДатаПоставки относится к преды-

предыдущий год

 

дущему году

 

 

 

 

 

Содержит дату,

Year ([ДатаПоставки]) =

Записи, в которых значение поля

приходящуюся на

Year (Date ()) And

ДатаПоставки приходится на пе-

период с начала

Month ([ДатаПоставки])

риод с 1 января текущего года по

текущего года до

<= Month (Date ()) And

текущую дату. Функции Year,

настоящего

Day ([ДатаПоставки])

Month, Day извлекают из даты год,

времени

< = Day (Date ())

месяц и день соответственно

 

 

 

 

 

81

2. Создание запросов

СОЗДАНИЕ ЗАПРОСА С ПАРАМЕТРОМ

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

жается окно Введите значение параметра.

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

1.Создать запрос на выборку. Открыть запрос в Конструкторе за-

просов.

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

[ВведитеДатуПоставкиТовара].

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

3. Повторить шаг 2 для каждого параметра, который должен использоваться в запросе.

Таким образом, можно задавать не только отдельное значение параметра, но и диапазон. Например, диапазон дат в строке Условие отбора можно указать так:

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

Здесь мы имеем по существу два параметра для одного поля.

При вводе значений в диалоговое окно Введите значение параметра следует учитывать тип поля, для которого определен параметр. Для текстового типа используемый регистр не играет значение. При создании запроса с параметром можно применять подстановочные знаки. Например, если требуется выбрать студентов или сотрудников по первой букве фамилии, для поля Фамилия можно указать условие отбора в виде:

Like [ВведитеПервуюБуквуФамилии] & *.

82

2. Создание запросов

Текст «ВведитеПервуюБуквуФамилии» будет отображаться в диалоговом окне Введите значение параметра. Знак «&» указывает Access, что нужно сцепить введенную букву со звездочкой. Напомним, что звездочка является подстановочным знаком, заменяющим любое число символов (букв или цифр). Вместо «&» можно использовать знак «+».

СОРТИРОВКА, ФИЛЬТРАЦИЯ И СУММИРОВАНИЕ

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

Режиме таблицы.

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

Главная в группе Сортировка и фильтр.

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

В Access существуют следующие способы добавления в запрос статистических функций:

создать строку итогов в Режиме таблицы;

создать итоговый запрос;

создать перекрестный запрос.

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

1.Открыть запрос в Режиме таблицы.

2.На вкладке Главная в группе Записи щелкнуть команду Итоги.

83

2. Создание запросов

Таблица 2.8

 

Статистическая

Тип данных

Описание

Доступ

 

функция

 

 

 

 

 

 

 

 

 

 

Sum

Числовой,

Вычисляет сумму всех

Режим таблицы,

 

 

 

Денежный,

значений, содержащихся

Конструктор

 

 

 

Счетчик

в поле

запросов,

 

 

 

 

 

Мастер запросов

 

 

 

 

 

 

 

Avg

Числовой,

Вычисляет среднее

Режим таблицы,

 

 

 

Денежный,

арифметическое всех

Конструктор

 

 

 

Счетчик,

значений поля. Игнори-

запросов,

 

 

 

Дата/время*)

рует пустые значения

Мастер запросов

 

 

 

 

 

 

 

Min

Числовой,

Отображает наименьшее

Режим таблицы,

 

 

 

Денежный,

из значений поля

Конструктор

 

 

 

Счетчик,

 

запросов,

 

 

 

Дата/время*)

 

Мастер запросов

 

 

 

 

 

 

 

Max

Числовой,

Отображает наибольшее

Режим таблицы,

 

 

 

Денежный,

из значений поля

Конструктор

 

 

 

Счетчик,

 

запросов,

 

 

 

Дата/время*)

 

Мастер запросов

 

 

 

 

 

 

 

Count

Все типы данных

Подсчитывает число

Режим таблицы,

 

 

 

за исключением

значений в поле

Конструктор

 

 

 

столбца подста-

 

запросов,

 

 

 

новок, допус-

 

Мастер запросов

 

 

 

кающего не-

 

 

 

 

 

сколько значений

 

 

 

 

 

 

 

 

 

STDev

Числовой,

Вычисляет стандартное

Режим таблицы,

 

 

 

Денежный,

отклонение

Конструктор

 

 

 

Счетчик

 

запросов

 

 

 

 

 

 

 

Var

Числовой,

Вычисляет дисперсию

Режим таблицы,

 

 

 

Денежный,

для всех значений поля.

Конструктор

 

 

 

Счетчик

Если поле содержит

запросов

 

 

 

 

менее двух значений, то

 

 

 

 

 

функция возвращает

 

 

 

 

 

пустое значение

 

 

 

 

 

 

 

 

First

Все типы данных

Отображает первую

Конструктор

 

 

 

 

запись группы

запросов

 

 

 

 

 

 

 

Last

Все типы данных

Отображает последнюю

Конструктор

 

 

 

 

запись группы

запросов

 

 

 

 

 

 

 

 

 

 

 

 

*) Отсутствует в Мастере запросов.

84

2.Создание запросов

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

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

Скрыть строку итогов можно щелчком по команде Итоги на вкладке

Главная в группе Записи.

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

СОЗДАНИЕ ИТОГОВОГО ЗАПРОСА

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

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

1.Открыть запрос.

2.На вкладке Конструктор в группе Показать или скрыть выбрать команду Итоги. В бланке конструктора появится строка Групповая операция, а для каждого поля будет установлено состояние Группировка.

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

85

2. Создание запросов

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

своено имя Sum-Количество.

5.Запрос сохранить.

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

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

Примечание. Итоговый запрос можно создать также с помощью Мас-

тера запросов, если в окне Создание простых запросов выбрать пере-

ключатель Итоговый. После этого станет активной кнопка Итоги. Надо не забывать, что в Мастере запросов доступны не все статистические функции (табл. 2.8).

86

2. Создание запросов

СОЗДАНИЕ ЗАПРОСА С ВЫЧИСЛЯЕМЫМ ПОЛЕМ

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

1.Открыть запрос на выборку в Конструкторе запросов.

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

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

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

строить контекстного меню. Эти команды становятся доступными, если щелкнуть в пустой ячейке строки Поле.

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

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

87

 

 

2. Создание запросов

 

 

 

 

 

Таблица 2.9

 

 

 

 

Тип выражений

Пример определения вычисляемого поля

 

 

 

 

Выражения с

ОбъемЗаказа: [Количество] [Цена]

 

арифметическими

Произведение значений числовых полей

 

операциями

 

 

ДоляОтВсего: 100 [ОбъемЗаказа]/ Sum ([ОбъемЗаказа])

 

 

 

 

Вычисление доли объема заказа от объема всего портфеля зака-

 

 

зов в процентном выражении. Функция Sum используется для

 

 

вычисления объема портфеля заказов

 

 

 

 

Выражения,

ВремяДоставки: DateDiff ("d"; [ДатаЗаказа]; [ДатаПоставки])

 

производящие

Разность дат в днях

 

операции над

 

 

Квартал: DatePart ("q"; [ДатаПоставки])

 

датами

 

 

Извлечение номера квартала из даты

 

 

 

 

Выражения,

ПолноеИмя: [Фамилия]&""&[Имя ]&""&[Отчество]

 

обрабатывающие

Конкатенация (объединение) трех строк через пробел

 

текст

 

 

НомерАТС: Mid ([Телефон]; 2; 2)

 

 

 

 

Извлечение из номера телефона двух цифр, начиная со второй

 

 

 

 

Выражения с

Переплата: IIf ([Разность] >=0; [Разность]; "")

 

функцией IIf

Если значение поля Разность больше или равно 0, то вывод зна-

 

 

чение этого поля. Иначе вывод пустой строки

 

 

 

 

 

Недоплата: IIf ([Разность] <0; Abs([Разность]); "")

 

 

Если значение поля Разность строго меньше 0, то вывод абсо-

 

 

лютное значение этого поля. Иначе вывод пустой строки

 

 

 

 

 

Адрес: IIf (Is Null ([Регион]); [Индекс] & [Город]; [Индекс] &

 

 

[Регион] & [Город])

 

 

Если значение поля Регион пустое, то отображение адреса в виде

 

 

значений полей Индекс и Город. Иначе к адресу добавляется

 

 

значение поля Регион

 

 

 

 

 

Возраст: IIf (Is Null ([ДатаРождения]); "Отсутствует дата ро-

 

 

ждения"; DateDiff ("yyyy"; [ДатаРождения]; Date ())

 

 

Если поле ДатаРождения пустое, вывод сообщения «Отсутст-

 

 

вует дата рождения». Иначе – возраст (число полных лет)

 

 

 

88

2. Создание запросов

СОЗДАНИЕ ПЕРЕКРЕСТНОГО ЗАПРОСА

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

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

1.Вызвать Конструктор запросов.

2.На вкладке Конструктор в группе Тип запроса щелкнуть команду Перекрестный. Откроется бланк конструктора, в котором появятся стро-

ки Групповая операция и Перекрестная таблица.

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

4.Выбрать из источника записей необходимые три поля.

5. В строке Групповая операция выбрать функцию напротив поля, которое будет вычисляться. Для остальных двух полей установить значе-

ние Группировка.

6. В строке Перекрестная таблица для вычисляемого поля выбрать пункт Значение, а для двух других – Заголовки строк и Заголовки столбцов соответственно.

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

Перекрестная таблица (не отображается).

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

89