Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Проектирование_Запросов.doc
Скачиваний:
4
Добавлен:
06.11.2018
Размер:
800.26 Кб
Скачать
    1. Использование некоторых функций в запросах

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

Функция Format

Format — возвращает значение, отформатированное согласно аргументам функции.

Синтаксис функции:

Format(expr [,format[,firstdayofweek[,firstweekofyear]]])

expr — обязательный аргумент, определяет выражение, идентификатор, подлежащий форматированию.

format — определяет формат возвращаемого значения. Необязательный аргумент.

Firstdayofweek — константа, которая определяет первый день недели. Необязательный аргумент.

Firstweekofyear — константа, которая определяет первую неделю года. Необязательный аргумент.

Значения аргумента Формат для форматирования дат представлены в таблице2. Исходные значения 05.01.02, 05.07.02

Таблица 2

Значение аргумента

Описание

Пример

Возвращаемое значение

“mm”

Возвращает номер месяца в текстовом формате

Format([Счет]![Дата выписки счета];"mm")

01

07

“mmmm”

Возвращает наименование месяца в текстовом формате

Format([Счет]![Дата выписки счета]; "mmmm")

Январь

Июль

“d”

Возвращает № дня месяца в текстовом формате

Format([Счет]![Дата выписки счета];»d»)

1

5

“ddd”

Возвращает краткое наименование дня недели в текстовом формате

Format([Счет]![Дата выписки счета];"ddd")

Вт

Пт

“dddd”

Возвращает полное наименование дня недели в текстовом формате

Format([Счет]![Дата выписки счета];"dddd")

Вторник

Пятница

“y”

Возвращает № дня года в текстовом формате

Format([Счет]![Дата выписки счета];"y")

1

186

Функция month

month — определяет № месяца в числовом формате.

Синтаксис функции:

Month(дата)

Пример: Month(([Счет]![Дата выписки счета]).

Функция IsNull

IsNull — возвращает значение ИСТИНА, если аргументу соответствует пустое значение, в противном случае возвращает значение ЛОЖЬ.

Синтаксис функции:

IsNull (аргумент)

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

Как правило, используется в качестве встроенной функции.

Функция iif

IIF— возвращает значение одно их двух значений в зависимости от оценки логического выражения.

Синтаксис функции:

IIf(expr, truepart, falsepart)

Expr — логическое выражение.

Truepart — возвращаемое значение если логическое выражение истинно.

Falsepart — возвращаемое значение если логическое выражение ложно.

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

Примеры:

IIf([Продажа]![количество продано]>10;"большие продажи";"обычные продажи")

IIf(IsNull([Продажа]![количество продано]);0;[Продажа]![количество продано]) — если для записи значение поля количество продано пусто, то присвоить 0.

Функция Nz

Nz — возвращает существующее значение для записей с непустым значением выражения и установленное значение для записей с пустым значением выражения.

Синтаксис функции:

Nz (expr; valueifnull)

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

Valueifnull — устанавливаемое значение для записей с пустым значением поля.

Пример: Nz ( [Продажа]![количество продано]; 0) — если для записи значение поля количество продано пусто, то присвоить 0.

Задание 11. Вывести информацию о помесячных заказах товаров (в единицах измерения).

Данная задача реализуется в 2 этапа:

1 этап — определение месяца выписки счета (запрос 11-1_месяц выписки счета).

2 этап — определение объема заказов товаров (запрос 11-2_заказано по месяцам).

Алгоритм выполнения задания с использованием функции FORMAT:

  1. Создать новый запрос. Исходная таблица — СЧЕТ.

  2. Выбрать необходимые поля: № СЧЕТА. В свободной колонке создать новое поле. Поставить курсор в строке ПОЛЕ первой свободной колонки бланка запроса.

  3. Нажать кнопку на панели инструментов или нажать правую клавишу мышки и в ниспадающем меню выбрать пункт ПОСТРОИТЬ.

  4. В окне 1 (см. Рисунок 14) построителя выражений дважды щелкнуть по папке ФУНКЦИИ и выделить папку встроенные функции.

  5. В окне 2 выбрать элемент ВСЕ или ТЕКСТОВЫЕ. (Для папки функции в окне 2 отражена группировка функций.)

  6. В окне 3 найти функцию FORMAT и нажать кнопку ВСТАВИТЬ (или двойной щелчок мышки по соответствующей функции). В окне выражения появилась функция: Format («expr»; «fmt»; «firstweekday»; «firstweek»).

  7. Ввести аргументы функции. Вместо «expr»: в окне 1 (см. Рисунок 14) построителя выражений дважды щелкнуть по папке ТАБЛИЦЫ и выделить таблицу СЧЕТ, в окне 2 построителя выражений выделить поле ДАТА ВЫПИСКИ СЧЕТА и нажать кнопку ВСТАВИТЬ. Вместо «fmt» ввести — “mm”. Выражение имеет следующий вид: Format([Счет]![Дата выписки счета];"mm").

  8. Нажать кнопку ОК окна построителя выражений.

  9. В бланке запроса для нового поля поставить флажок ВЫВОД НА ЭКРАН.

  10. Ввести имя нового поля — МЕСЯЦ ВЫПИСКИ СЧЕТА.

  11. Сохранить запрос под именем 11-1_месяц выписки счета. Запустить запрос. Бланк запроса представлен на Рисунок 20.

Рисунок 20 Бланк запроса 11-1_ месяц выписки счета задания 11

  1. Создать новый запрос. Исходные таблицы/запросы: 11-1_месяц выписки счета, СПЕЦИФИКАЦИЯ СЧЕТА.

  2. Установить связь по полю № СЧЕТА.

  3. Вывести поля код товара, месяц выписки счета, количество по счету.

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

  5. Для поля количество по счету в строке ГРУППОВЫЕ ОПЕРАЦИИ необходимо определить функцию SUM и присвоить имя Заказано.

  6. Сохранить запрос под именем 11-2_заказано по месяцам. Запустить запрос. Бланк запроса представлен на Рисунок 21.

Рисунок 21 Бланк запроса 11-2_заказано по месяцам задания 11

Задание 11 возможно реализовать в одном запросе. Бланк запроса 11_заказ по месяцам представлен на Рисунок 22.

Рисунок 22 Бланк запроса 11_заказаз по месяцам задания 11

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

Задание 1_11. для самостоятельной работы. Вывести информацию о помесячных продажах товаров (в единицах измерения). Использовать функцию FORMAT. Задание выполнить в один запрос. Новым полям присвоить имена: МЕСЯЦ ПРОДАЖИ, ПРОДАНО. Запрос сохранить под именем 14-1_продажа по месяцам.

Задание 12. Провести полный анализ заказов каждого наименования товара, продаваемого фирмой (в соответствии со справочником товаров).

Проведение полного анализа подразумевает вывод заказов всех наименований товаров из справочника. Если данный товар не выписывался по счетам, то заказанное количество соответствует 0.

Данная задача реализуется в 2 этапа:

1 этап — определение объема заказа товаров по счетам. На этом этапе определяется объем заказов тех товаров, на которые выписаны счета.

2 этап — определение объема заказа всех товаров, в том числе не включенных в счета.

Алгоритм выполнения задания с использованием функций IIF, ISNULL:

  1. Создать новый запрос. Исходная таблица — СПЕЦИФИКАЦИЯ СЧЕТА.

  2. Вывести поля код товара, количество по счету.

  3. установить группировку записей по полю: код товара.

  4. Для поля количество по счету в строке ГРУППОВЫЕ ОПЕРАЦИИ необходимо определить функцию SUM и присвоить имя Заказ.

  5. Сохранить запрос под именем 12-1_заказано по счетам. Запустить запрос.

  6. Создать новый запрос. Исходные таблицы/запросы — 12-1_заказано по счетам, ТОВАР.

  7. Установить связь по полю код товара.

  8. Для реализации задачи сначала необходимо вывести полный список товаров, независимо от присутствия их в спецификациях счетов. Следовательно, требуется изменить параметры объединения исходных структур (см. алгоритм решения задания 7). Установить переключатель на пункте: «Объединение всех записей из таблицы товар и только тех записей из 12-1_заказано по счетам, в которых связанные поля совпадают. Нажать кнопку ОК. Убедиться, что связь изменилась. Направление связи (отражается стрелкой) от таблицы ТОВАР к запросу 12-1_заказано по счетам.

  9. запустить запрос. В режиме просмотра запроса в записях для товаров, на которые не выписывались счета, значение поля ЗАКАЗ пустое.

  10. Перейти в режим конструктора запроса. Для вывода нулевых значений для не заказанных товаров необходимо создать новое поле, используя ПОСТРОИТЕЛЬ ВЫРАЖЕНИЙ.

  11. В окне 1 (см. Рисунок 14) построителя выражений дважды щелкнуть по папке ФУНКЦИИ и выделить папку встроенные функции, В окне 2 выбрать элемент ВСЕ или УПРАВЛЕНИЕ. В окне 3 найти функцию IIF и вставить ее в окно выражения. Функция имеет вид — IIf («expr»; «truepart»; «falsepart»).

  12. Ввести аргументы функции. В качестве логического выражения («expr») используется функция ISNULL. Ввести указанную функцию по алгоритму п.11. Аргументом функции ISNULL является поле заказ запроса 12-1_заказано по счетам. Если ISNULL возвращает ИСТИНУ (аргумент «truepart» фукции IIF), то полю присваивается значение 0; в противном случае (поле ЗАКАЗ не пустое — на товар выписывались счета) — идентификатор поля ЗАКАЗ запроса 12-1_заказано по счетам. Выражение имеет следующий вид: IIf(IsNull([12-1_заказано по счетам]![заказ]); 0;[12-1_заказано по счетам]![заказ]).

  13. Нажать кнопку ОК окна построителя выражений. В бланке запроса для нового поля поставить флажок ВЫВОД НА ЭКРАН.

  14. Ввести имя нового поля — Объем заказов(ЕИ).

  15. Сохранить запрос под именем 12-2_объемы заказов товаров (ЕИ).

  16. Для проверки полноты вывода информации в таблицу ТОВАР ввести новый товар, не включенный ни в один счет. Запустить запрос. Убедиться в точности проведенного анализа (для вновь введенного товара значение поля ЗАКАЗАНО соответствует 0).

Бланк запроса 12-2_объемы заказов товаров (ЕИ) представлен на Рисунок 23.

Рисунок 23 Бланк запроса 12-2_объемы заказов товаров (ЕИ) задания 12

Алгоритм выполнения задания с использованием функций NZ:

  1. Создать новый запрос. Исходные таблицы/запросы — 12-1_заказано по счетам, ТОВАР.

  2. Установить связь по полю код товара. Изменить связь аналогично п.8 предыдущего алгоритма (стр.30).

  3. Вызвать построитель выражения для нового поля, вставить функцию NZ. Функция имеет вид: Nz («expr»; «valueifnull»).

  4. Ввести аргументы функции. В качестве выражения («expr») используется идентификатор поля ЗАКАЗ запроса 12-1_заказано по счетам. Аргументу «valueifnull» (для записей с пустым значением поля ЗАКАЗАНО) присваивается значение 0. Выражение имеет следующий вид: Nz ( [12-1_заказано по счетам]![заказ] ; 0).

  5. Ввести имя нового поля — Объем заказов(ЕИ).

  6. Сохранить запрос под именем 12-2(2)_объемы заказов товаров (ЕИ)

  7. Запустить запрос. Убедиться в точности проведенного анализа.

Бланк запроса 12-2(2)_объемы заказов товаров (ЕИ) представлен на Рисунок 24.

Рисунок 24 Бланк запроса 12-2(2)_объемы заказов товаров задания 12

Задание 1_12. для самостоятельной работы. Провести полный анализ продаж (в стоимостном выражении) каждого наименования товара, реализуемого фирмой (в соответствии со справочником товаров). Проведение полного анализа подразумевает вывод стоимости продаж всех наименований товаров из справочника. Если данный товар не продавался, то стоимость продаж соответствует 0.