Access построитель выражений как найти

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

В этой статье

  • Начнем с начала — как его найти?

  • Проверьте возможность в действии

  • Использование поля построителя выражений

  • Использование расширенного построителя выражений

  • Пошаговый пример

Начнем с начала — как его найти?

Хотя построитель выражений доступен в разных местах приложения Access, наиболее верным способом его отображения является переход к окну свойств, содержащему выражение, например Данные или Значение по умолчанию и щелкните Построитель выражений Изображение кнопки или нажмите клавиши CTRL+F2.

Кнопка "Сборка" на странице свойств.

В макросе щелкните значок Изображение кнопки.

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

Проверьте возможность в действии

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

Браузер не поддерживает видео.

Использование поля построителя выражений

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

Технология IntelliSense и советы

Список IntelliSense и совет.

1 IntelliSense (Access 2010 или более поздняя версия) отображает возможные функции и другие идентификаторы по мере ввода выражения.

По мере ввода идентификатора или имени функции IntelliSense отображает раскрывающийся список возможных значений. Вы можете продолжать ввод или дважды щелкнуть правильное значение в списке, чтобы добавить его в выражение. Кроме того, можно использовать клавиши со стрелками вверх и вниз, чтобы выбрать нужное значение, а затем нажать клавишу TAB или ВВОД, чтобы добавить его в выражение. Например, если вы начнете вводить слово «Формат», в списке IntelliSense появятся все функции, имена которых начинаются со строки «Формат».

Совет    Чтобы скрыть раскрывающийся список IntelliSense, нажмите клавишу ESC. Чтобы снова отобразить его, нажмите клавиши CTRL+ПРОБЕЛ.

2 Совет — это краткое описание выбранного элемента.

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

Краткие сведения и справка

Окно кратких сведений о функции.

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

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

2 Необязательные аргументы заключены в квадратные скобки ([]). Аргумент, который вы вводите в данный момент, отображается полужирным шрифтом. Не путайте квадратные скобки, указывающие на необязательность аргумента, с квадратными скобками, в которые заключаются идентификаторы в фактическом выражении.

К началу страницы

Использование расширенного построителя выражений

Расширенный построитель выражений позволяет легко находить и вставлять функции, операторы, константы и идентификаторы (имена полей, таблиц, форм и запросов), экономя время и уменьшая число ошибок. Если отображается только поле построителя выражений, нажмите кнопку Больше >>, чтобы увидеть расширенный построитель выражений.

Диалоговое окно построителя выражений

1 Используйте инструкции и ссылку на справку, чтобы получить сведения о контексте, в котором вы вводите выражение.

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

3 В списке Элементы выражений выберите тип элемента, чтобы просмотреть его категории в списке Категории выражений.

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

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

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

Список Категории выражений содержит определенные элементы или категории элементов, соответствующие вашему выбору в списке Элементы выражений. Например, если в списке Элементы выражений выбран пункт Встроенные функции, в списке Категории выражений отображаются категории функций.

5 В списке Значения выражений дважды щелкните значение, чтобы добавить его в поле построителя выражений.

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

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

К началу страницы

Пошаговый пример

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

  1. Щелкните элементы в списке Элементы выражений, например Функции, и выберите Встроенные функции.

  2. Щелкните категорию в списке Категории выражений, например Управление.

  3. Дважды щелкните элемент в списке Значения выражений, например IIf, чтобы добавить его в поле построителя выражений:

    IIf (<<expression>>, <<truepart>>, <<falsepart>>) 

    Замещающий текст заключен в угловые скобки (<< >>).

  4. Замените замещающий текст действительными значениями аргументов. Можно ввести значения вручную или продолжить выбор элементов в трех списках.

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

  6. Если выражение содержит другие элементы, они могут быть разделены следующим заполнителем:

    <<Expr>>

    Замените этот заполнитель, чтобы сделать общее выражение допустимым.

К началу страницы

66

Работа в Microsoft Access

ка») имеет значение «студент», если в поле Пол содержится буква «м», и значение «студентка» — в противном случае.

Nz(выражение[; представление]) — возвращает 0 (нуль), пустую строку («») или другое указанное в аргументе <представление> значение, если <выражение> имеет значение Null. Например, Nz(([Стипендия]! [Сентябрь];»нет») возвращает значение стипендии студента за сентябрь, если он в сентябре получал стипендию, или слово «нет» в противном случае.

Аргумент <представление> необязателен. Если он отсутствует, то функция Nz возвращает нуль или пустую строку в зависимости от контекста, требующего числовое или текстовое значение.

4.4. Построитель выражений

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

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

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

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

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

Глава 4.Выражения в Access

67

Для ввода функции следует выбрать в левом поле папку Функции, а затем Встроенные функции. В среднем поле нужно выбрать категорию или вариант <Все>, а затем, прокрутив список в правом поле, — нужную функцию.

Для ввода оператора ( +, >, And и др.) щелкните по соответствующей кнопке в окне построителя. Если требуемого оператора на кнопках нет, следует открыть в левом поле папку Операторы. Затем в среднем поле выбрать категорию или вариант <Все>, а в правом поле — нужный оператор.

Рис. 4.1. Окно Построитель выражений

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

Для вставки элемента в выражение можно использовать кнопку Вставить. Чтобы отменить ошибочный ввод, нужно щелкнуть по кнопке Назад. Создание выражения завершается нажатием кнопки ОК.

68

Работа в Microsoft Access

Пример 4.1. Нужно создать выражение, которое подсчитывает суммарную стипендию, полученную каждым студентом за сентябрь и октябрь. Информация о стипендии содержится в таблице Стипендия. Само выражение имеет следующий вид:

[Стипендия]![Сентябрь] + [Стипендия]![Октябрь]1

Его можно ввести вручную, но лучше воспользоваться построителем выражений. После вызова построителя нужно выбрать в левом поле папку Таблицы, а затем — Стипендия. После щелчка по этой папке в среднем поле появится список полей таблицы Стипендия. Теперь нужно последовательно вставить в создаваемое выражение следующие элементы: поле Сентябрь, знак «+» и поле Октябрь, а затем щелкнуть по кнопке ОК.

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

Nz([Стипендия]![Сентябрь]) + Nz([Стипендия]![Октябрь])

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

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

Задача 1. В таблице ТОВАР имеются поля ЦЕНА и СТАВКА_НДС, вычислите цену с учетом НДС и сравните ее с полученной в вычисляемом поле таблицы Цена с НДС.

  1. Создайте в режиме конструктора запрос на выборку для таблицы ТОВАР. Перетащите в бланк запроса поля НАИМ_ТОВ, ЦЕНА, СТАВКА_НДС и Цена с НДС (рис. 4.6).
  2. Для подсчета цены с учетом НДС создайте вычисляемое поле, записав в пустой ячейке строки Поле (Field) выражение [ЦЕНА]+[ЦЕНА]*[СТАВКА_НДС].
  3. Для отбора записей со значением выше 5000 в вычисляемом поле в строку Условие отбора (Criteria) введите > 5000
  4. После ввода выражения система по умолчанию формирует имя вычисляемого поля Выражение 1, которое становится заголовком столбца в таблице с результатами выполнения запроса. Это имя вставится перед выражением [ЦЕНА]+[ЦЕНА]*[СТАВКА_НДС]. Для каждого нового вычисляемого поля в запросе номер выражения увеличивается на единицу. Имя вычисляемого поля отделяется от выражения двоеточием. Для изменения имени установите курсор мыши в вычисляемом поле бланка запроса и нажмите правую кнопку мыши. В контекстно-зависимом меню выберите Свойства (Properties) поля и в строку Подпись (Caption) введите новое имя поля ― Цена с НДС1. Теперь в таблице с результатами выполнения запроса в заголовке вычисляемого столбца отобразится это имя. Имя поля может быть исправлено также непосредственно в бланке запроса.
  5. Для отображения результата выполнения запроса щелкните на кнопке Выполнить (Run) в группе Результаты (Results). Вычисляемое поле таблицы и за-проса имеют одинаковые значения.
  6. Измените в одной из записей запроса цену товара. Значения в обоих вычисляемых полях будут моментально пересчитаны.
  7. Для формирования сложного выражения в вычисляемом поле или условии отбора целесообразно использовать построитель выражений. Построитель позволяет выбрать необходимые в выражении имена полей из таблиц, запросов, знаки операций, функции. Удалите выражение в вычисляемом поле и используйте построитель для его формирования.
  8. Вызовите построитель выражений (Expression Builder), нажав кнопку Построитель (Builder) в группе Настройка запроса (Query Setup) ленты Конструктор (Design), или выбрав Построить (Build) в контекстно-зависимом меню. Курсор мыши должен быть установлен предварительно в ячейке ввода выражения.
  9. В левой части окна Построитель выражений (Expression Builder) (рис. 4.7) выберите таблицу ТОВАР, на которой построен запрос. Справа отобразится список ее полей. Последовательно выбирайте нужные поля и операторы, двойным щелчком вставляя в выражение. Выражение сформируется в верхней части окна. Обратите внимание, построитель перед именем поля указал имя таблицы, которой оно принадлежит, и отделил его от имени поля восклицательным знаком.
  10. Завершите процесс построения выражения в вычисляемом поле, щелкнув на кнопке ОК.
  11. Сохраните запрос под именем ― Цена с НДС и закройте его.
  12. Выполните сохраненный запрос, выделив его в области навигации и выбрав в контекстном меню команду Открыть (Open).

Вычисляемые поля в запросах Access
Задача 2. В вычисляемых полях и условиях отбора можно использовать встроенные функции. В Access определено более 150 функций.
Пусть необходимо выбрать все накладные, по которым производилась отгрузка в заданном месяце. В таблице НАКЛАДНАЯ дата отгрузки хранится в поле ДАТА_ОТГ с типом данных Дата/время (Date/Time).

  1. Создайте в режиме конструктора запрос на выборку для таблицы НАКЛАДНАЯ. Перетащите в бланк запроса поля НОМ_НАКЛ и КОД_СК (рис. 4.8).
  2. Создайте вычисляемое поле в пустой ячейке строки Поле (Field), записав туда одно из выражений: Format([НАКЛАДНАЯ]![ДАТА_ОТГР];»mmmm») ― эта функция возвратит пол-ное название месяца
    или Format([НАКЛАДНАЯ]![ДАТА_ОТГР];»mm») ― эта функция возвратит номер месяца.
  3. Для отбора накладных, выписанных в заданном месяце, в вычисляемом поле в строку Условие отбора (Criteria) введите название месяца, например март (рис. 4.8), или номер месяца, например 3 в соответствии с параметром в функции Format.
  4. Выполните запрос, нажав кнопку Выполнить (Run) в группе Результаты (Results) на вкладке ленты Работа с запросами | Конструктор (Query Tools | Design).
  5. Запишите в вычисляемом поле функцию Month(НАКЛАДНАЯ!ДАТА_ОТГ), и убедитесь, что эта функция возвращает выделенный из даты номер месяца.
  6. Для выборки всех строк, относящихся ко второму кварталу, в строку Условие отбора (Criteria) введите оператор Between 4 And 6, определяющий, попадает ли значение выражения в указанный интервал.
  7. Запишите в вычисляемом поле выражение MonthName(Month(НАКЛАДНАЯ!ДАТА_ОТГ)) и убедитесь, что функция MonthName преобразует номер месяца в его полное на-звание.

Вычисляемые поля в запросах Access
Для закрепления смотрим видеоурок:

Параметрический запрос Access тут.

Лекция 6 Тема: Запросы. Вычисления и групповые операциию

6.1. Вычисляемые поля.

6.2. Создание выражений с помощью Построителя выражений.

6.3. Обзор встроенных функций СУБД MS Access.

6.4. Итоговые запросы.

6.5. Перекрестные запросы.

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

В QBE СУБД MS Access такие возможности предоставляются через вычисляемые поля и групповые операции.

6.1. Вычисляемые поля

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

Стоимость: Товары! Цена * Количество * (1-Скидка)

КоличествоМужчин: Sum(IIf(Пол = «м»; 1; 0))

ФИО: Фамилия &» «& Left(Имя;1) &». «& Left(Отчество;1) &».»

Стоимость, КоличествоМужчин и ФИО являются именами вычисляемых полей и отображаются в режиме таблицы в заголовке столбца, символ двоеточие исполняет роль разделителя между именем вычисляемого поля и выражением.

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

Стоимость: Цена*[Количество товара]

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

Обновить вычисленные результаты вручную невозможно.

Для построения сложных выражений в СУБД MS Access входит утилита, называемая Построитель выражений.

6.2. Создание выражений с помощью Построителя выражений

поле для формирования (записи) выраженияПостроитель выражений можно запустить щелкнув по клавише Построить на панели инструментов Конструктор запросов или выбрав в контекстном меню поля бланка запроса QBE команду меню Построить….

Рис.6.1. Диалоговое окно Построитель выражений

Рис.6.2. Диалоговое окно Построителя выражений
со сформированным выражением

6.3. Обзор встроенных функций СУБД MS Access

СУБД MS Access содержит более 100 встроенных функций (рис.6.3), которые можно использовать при формировании вычисляемого поля или при задании условия отбора.

Рис.6.3. Диалоговое окно Построителя выражений
со списком встроенных функций

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

При выборе функции в правом окне построителя, в нижней области окна Построителя выражений отображается синтаксис этой функции. Для более детальной справки необходимо щелкнуть по клавише Справка.

Обзор всех встроенных функций выходит за рамки лекции, поэтому рассмотрим наиболее используемые.

Таблица 6.1

Функции категории Дата/время

Day(дата)

Возвращает значение дня месяца от 1 до 31

Month(дата)

Возвращает значение месяца от 1 до 12

MonthName(месяц[; флаг])

Возвращает название месяца соответствующего номеру месяца: 1 – январь, 2 – февраль, и т. д. Если значение аргумента флаг Истина, то функция возвращает аббревиатуру месяца: 1 – янв, 2 – фев и т. д.

Year(дата)

Возвращает значение года от 100 до 9999

Weekday(дата[; число])

Если аргумент число не указан, возвращает значение дня недели от 1 (воскресенье) до 7 (суббота). Если аргумент число имеет значение 0, то возвращает значение дня недели от 1 (понедельник) до 7 (воскресенье)

Hour(дата)

Возвращает целое число от 0 од 23, представляющее значение часа

DatePart(интервал; дата)

Возвращает числовое значение в зависимости от значения аргумента интервал:

«q» – квартал (от 1 до 4);

«m» – месяц (от 1 до 12);

«yyyy» – год (от 100 до 9999);

«ww» – неделя (от 1 до 53);

и т. п. (см. справку по функции).

Date()

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

Функции категории Проверка

IsNull(переменная)

Возвращает значение Истина если значение переменной (значение поля в источнике данных) равно Null

IsNumeric(переменная)

Возвращает значение Истина если значение переменной (значение поля в источнике данных) имеет один из числовых типов данных

Функции категории Управление

IIf(условие; выр1; выр2)

Возвращает значение выражения выр1 если значение аргумента условие Истина и возвращает значение выражения выр2 если значение аргумента условие Ложь. Данная функция аналогична функции ЕСЛИ в MS Excel.

Продолжение таблицы 6.1

Функции категории Текстовые

Left(текст; n)

Возвращает n левых символов аргумента текст

Right(текст; n)

Возвращает n правых символов аргумента текст

Mid(текст; нач_поз[; n])

Возвращает n символов начиная с позиции нач_поз аргумента текст. Если аргумент n не указан, то возвращает все символы до конца строки начиная с позиции нач_поз аргумента текст.

Len(текст)

Возвращает количество символов (длину строки) в аргументе текст

LTrim(текст)

Возвращает строковое значение аргумента текст без начальных пробелов

RTrim(текст)

Возвращает строковое значение аргумента текст без заключительных пробелов

Trim(текст)

Возвращает строковое значение аргумента текст без начальных и заключительных пробелов

Str(число)

Возвращает строковое значение аргумента число

Format(переменная; формат)

Возвращает значение аргумента переменная в формате заданным аргументом формат

6.3. Итоговые запросы

При анализе данных очень часто интересуют не отдельные записи, а итоговые значения по группам данных, например:

—  количество сделок с Партнерами за определенный промежуток времени;

—  средний объем продаж по каждому месяцу за предыдущий год.

Ответы на такие вопросы дает итоговый запрос.

Для вычисления итоговых значений необходимо нажать кнопку Групповые операции на панели инструментов Конструктор запросов, чтобы в бланке QBE появилась строка Групповая операция (после имени таблицы).

По умолчанию для каждого поля, занесенного в бланк запроса, устанавливается значение Группировка (итоги не подводятся).

Для подведения итогов необходимо заменить установку Группировка на конкретную итоговую функцию. В СУБД MS Access предусмотрено 9 функций (табл. 6.2), обеспечивающих выполнение групповых операций.

Таблица 6.2

Функции категории Статистические

Функция

Назначение

Sum

Возвращает сумму набора значений

Avg

Возвращает среднее арифметическое набора значений

Min

Возвращает наименьшее значение из набора значений

Max

Возвращает наибольшее значение из набора значений

Count

Возвращает количество записей в наборе значений отличных от Null

First

Возвращает первое значение поля в группе

Last

Возвращает последнее значение поля в группе

StDev

Возвращает среднеквадратичное отклонение набора значений

Var

Возвращает дисперсию набора значений

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

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

Для решения более сложных статистических задач в СУБД MS Access предусмотрен специальный тип запроса – перекрестный запросов.

6.4. Перекрестные запросы

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

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

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

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

 

Область заголовков столбцов

     
         

Область
заголовков
строк

Область
значений

     
         
         
         
         
         

Рис.6.4. Макет перекрестной таблицы

Рис.6.5. Сформированный перекрестный запрос в QBE

Рис.6.6. Результат выполнения запроса в режиме Таблицы

Печатать книгуПечатать книгу

Оглавление

  • 1. ТЕОРЕТИЧЕСКИЙ МАТЕРИАЛ
    • 1.1. Назначение и типы запросов
    • 1.2. Выражение и его компоненты
    • 1.3. Операторы
    • 1.4. Литералы. Идентификаторы. Функции
    • 1.5. Использование Построителя выражений
  • 2. «СОЗДАНИЕ И ИСПОЛЬЗОВАНИЕ ЗАПРОСОВ»
    • 2.1. ЗАДАНИЕ 9. Построение запроса на выборку данных из нескольких таблиц
    • 2.2. ЗАДАНИЕ 10. Построение запросов с условием отбора
    • 2.3. ЗАДАНИЕ 11. Построение запросов с параметром
    • 2.4. ЗАДАНИЕ 12. Построение запросов с вычисляемыми полями
    • 2.5. ЗАДАНИЕ 13. Построение итоговых запросов
    • 2.6. ЗАДАНИЕ 14. Построение итоговых запросов с использованием сложных условий отбора
    • 2.7. ЗАДАНИЕ 15. Построение сложных запросов с условиями отбора для вычисляемых полей
  • 3. ВЫВОДЫ
  • 4. КОНТРОЛЬНЫЕ ВОПРОСЫ
  • 5. ОТВЕТЫ К ЗАДАНИЯМ

1. ТЕОРЕТИЧЕСКИЙ МАТЕРИАЛ

Цель работы1

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

а) использование простейших логических операндов,

б) приобретение практики выборки заданной информации,

в) изучение построения математического выражения в структуре запрос,

г) изучение групповых операций в запросах.

1 Для выполнения Лабораторной работы №6  необходимо наличие в базе пяти таблиц, созданных в Лабораторной работе № 5.

1.1. Назначение и типы запросов

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

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

Спектр возможностей, которыми обладает Access для обработки данных при помощи запросов, определяется разными типами запросов. Рассмотрим некоторые из них.

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

Запрос с параметромэто «интерактивный» тип запроса, при выполнении отображающий в собственном диалоговом окне приглашение ввести один или ряд параметров, например, условие отбора записей по определенному полю.

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

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

При создании запросов используется специальный язык программирования SQL (Structured Query Language). Это формальный стандартизованный язык высокого уровня, содержащий средства непроцедурной обработки (не требующей программирования) спецификации запросов. Однако пользователи Access могут не изучать этот язык. Вместо него в Access есть простое средство – бланк запроса по образцу. С его помощью можно сформировать запрос простыми приемами, перетаскивая элементы запроса между окнами. Делать это удобнее и понятнее с помощью Конструктора запросов, т.е. вручную, хотя для опытных пользователей можно воспользоваться помощью Мастера запросов. 

1.2. Выражение и его компоненты

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

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

1.3. Операторы

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

  • § Арифметические операторы. Выполняют привычные математические операции с числовыми значениями: сложения (+), вычитания (-), умножения (*), и деления (/). Кроме того, к этой категории относят оператор целочисленного деления первого операнда на второй (), оператор деления по модулю MOD (остаток целочисленного деления одного операнда на другой) и возведения в степень (^). В роли операндов могут быть как числа, так и значения полей или выражения.

Пример для оператора деления нацело: 25,63,8 = 6 (числа сначала округляются до целых значений, а затем вычисляется частное двух чисел, которое также округляется до целых).

Пример арифметического выражения для формулы вычисляемого поля:

СреднийБалл: ([1_e1]+[1_e2])/2

  • § Операторы сравнения. Служат для сравнения двух операндов и возвращают в зависимости от отношения между операндами, логические значения (True или False) или Null (если, хотя бы один из операндов имеет значение Null). К этому типу относятся следующие операторы: > (больше чем), < (меньше чем), >= (больше или равно, <= (меньше или равно), = (равно), <> (не равно).
  • § Логические (булевы) операторы. Так как в качестве операндов таких операторов могут быть значения, которые либо ложны, либо истинны, логические операторы возвращают логические значения (True или False) или Null.  Как правило, используются для комбинирования результатов выполнения двух и более операций сравнения. Список логических операторов включает And (Логическое И), Or (Включающее ИЛИ), Not (Логическое НЕ), Xor (Исключающее ИЛИ). Все логические операторы, за исключением Not, всегда работают с двумя операндами.

Например, Not”аспирант”. Будут отобраны все записи о преподавателях, имеющих в поле Должность любые значения, за исключением аспирант.

  • § Операторы конкатенации. Оператор & служит для объединения нескольких строк символов в одной строку. Обрабатывает все переменные как символьные строки.
  • § Операторы идентификации. Программа Access работает с двумя операторами идентификации: ! (восклицательный знак) и . (точка). С помощью этих операторов можно обращаться к конкретным объектам, например, к полю таблицы. Символ «!» используется вместе с различными зарезервированными словами, например, Forms, указывая на то, что далее следует имя формы. Так, например, идентифицировать форму Учетная карта, используется выражение Forms![Учетная карта], так как в базе данных могут быть другие объекты с таким именем, а именно: таблица  Учетная карта. Синтаксис выражения следующий: КлассОбъета!ИмяОбъекта.

Символ «.»(точка) отделяет имена объектов от их свойств или методов (синтаксис задан иначе: КлассОбъекта!ИмяОбъекта.Свойство или КлассОбъекта!ИмяОбъекта.Метод).

Например, Forms![Ведомость]![1_p].DefaultValue.

  • Прочие операторы. Это операторы языка SQL, такие как Like, Is, In, Between…And, с помощью которых можно упростить создание выражений. Возвращают значение True или False.

u  Is. Используется в выражениях Is Null или Is Not Null. Определяет наличие или отсутствие значения Null, т.е. является ли объект пустым.

u  Like. Проверяет, соответствует ли строковое значение заданному шаблону. Его ставят впереди заданного фрагмента, а до или после фрагмента, в этом случае, можно использовать 5 символов подстановки: *(любое число символов), ?(любой одиночный символ), #(любая цифра), [список](любой символ из списка) и [!список](любой символ, не принадлежащий указанному списку). Пример использования этого оператора будет рассмотрен в ЗАДАНИИ 11.

u  In. Проверяет, совпадает ли значение с одним из элементов, указанных в списке. Например, критерий отбора может иметь следующий вид: In(“А1”;”Б1”). Согласно этому критерию будут отобраны записи, содержащие в поле №гр значение А-1 или Б-1 (тире в названии группы указывать не надо, т.к. этот символ заложен в маску ввода).

u  Between…And. Определяет, принадлежит ли числовое значение заданному диапазону значений. Пример в ЗАДАНИИ 11.

1.4. Литералы. Идентификаторы. Функции

Литералы

 Литералы – это используемые в Access значения в их явном представлении. Литералы бывают следующих типов.

  • Числовые. Вводятся как ряд чисел, могут содержать знак разделителя (в десятичном числе) и знак «минус» (–) для отрицательных значений, символы «Е» и «е», а также знак показателя степени (при экспоненциальной форме представления чисел). Например: 3,4567Е-01, 12000,-25.
  • Текстовые (строковые). Включают любые печатные символы (А–Я, A–Z, числа от 0 до 9, знаки пунктуации и специальные символы клавиатуры, а также непечатаемые символы, например, перевода каретки (задаются с помощью функции Chr()). Строковые литералы следует заключать в двойные кавычки (»  «). Например: «Иванов».
  • Литералы даты и времени. В программе Access знак номера (#) ставится  до и после любой даты. Если при вводе в таблицу значение даты указывается в стандартной формате, распознаваемом Access, или  определяется в качестве критерия отбора в бланке запроса, указывать эти знаки необязательно. Например, #01.03.00#, 15-янв-2004.

Идентификаторы

 Идентификаторы – это имена объектов (баз данных, таблиц, полей, запросов, форм и отчетов). Используемые в выражениях, идентификаторы возвращают определенные числовые или текстовые значения: т.е. представляют собой ссылку на текущее значение поля, элементы управления или свойства. Например, такой идентификатор, как Forms![Ведомость]![1_p].DefaultValue  определяет ссылку на значение свойства Значение по умолчанию (DefaultValue)  элемента управления 1_р в форме Ведомость.

 Функции

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

  • Функции даты и времени.

Date(). Отображает текущую дату в формате дд.мм.гг.

DateAdd(«d»;15;[Абонемент]![Дата выдачи]). Для БД Библиотека возвращает дату, на 15 дней отстоящую от даты, заданной значением поля Дата выдачи таблицы Абонемент.

DateDiff («d»;[Дата возврата];[Дата выдачи]). Возвращает значение, представляющее разницу числа дней между значениями полей Дата возврата и Дата выдачи.

Year(#23.02.04#). Возвращает число, представляющее год в указанной дате: 2004.

  • Функции обработки текста.

InStr(«Андреева»;»е»). Возвращает число, указывающее позицию первого вхождения одной строки «е» в другую строку «Андреева»: 5.

LCase([ФИО]) Возвращает строку, преобразованную к нижнему регистру.

Left([ФИО],2). Отображает два первых символа значения поля ФИО.

Right([ФИО],5). Отображает 5 последних символов значения поля ФИО.

  • Функции преобразования типа данных.

Val(“1234.56”). Возвращает число, содержащееся в строке 1234.56.

Str(123,45). Возвращает строковое представление числа “123.45”.

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

1.5. Использование Построителя выражений

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

Структурно окно построителя состоит из нескольких областей (Рис. 25).

Рис. 25. Диалоговое окно построителя выражений

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

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

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

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

Запросы на выборку

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

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

2. «СОЗДАНИЕ И ИСПОЛЬЗОВАНИЕ ЗАПРОСОВ»

Цель работы1

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

а) использование простейших логических операндов,

б) приобретение практики выборки заданной информации,

в) изучение построения математического выражения в структуре запрос,

г) изучение групповых операций в запросах.

1 Для выполнения Лабораторной работы №6  необходимо наличие в базе пяти таблиц, созданных в Лабораторной работе № 5.

2.1. ЗАДАНИЕ 9. Построение запроса на выборку данных из нескольких таблиц

  1. Создание запроса начинается с открытия вкладки Запросы диалогового окна База данных и щелчка на кнопке Создать. В открывшемся диалоговом окне Новый запрос задают ручной режим создания запроса выбором пункта Конструктор.

Создание запроса начинают с выбора тех таблиц базы, на которых будет основан запрос. В данном случае – это Учетная карта  и  Ведомость. Выбор таблиц выполняют в диалоговом окне Добавление таблиц. В нем отображаются все таблицы, имеющиеся в базе. Выбранные таблицы заносятся в верхнюю половину бланка запроса по образцу щелчком на кнопке Добавить (рис. 26). Наличие в диалоговом окне вкладки Таблицы и Запросы говорит о том, что запрос можно основывать не только на таблицах, но уже и на имеющихся запросах

Рис. 26. Диалоговое окно Добавление таблицы. 

2. После выбора таблиц, приступаем к работе с Бланком запроса по образцу. Он имеет две панели (рис. 27). На верхней панели расположены списки полей тех таблиц, на которых основывается запрос. Строки нижней панели определяют структуру запроса, т.е. структуру результирующей таблицы, в которой будут содержаться данные, полученные по результатам запроса.

Рис. 27. Бланк запроса по образцу. В верхней части – выбранные таблицы. В нижней – выбранные (двойным щелчком или перетаскиванием) поля.
В строке Сортировка для поля ФИО показан раскрывающийся список для назначения типа сортировки по данному полю

3. Строку Поле можно заполнить двумя способами: или перетаскиванием названий полей из таблиц в верхней части бланка, или двойным щелчком на этом поле. Каждому полю будущей результирующей таблицы соответствует один столбец бланка запроса по образцу. Добавьте поля ФИО, Nst и Ngr из таблицы Учетная карта перетаскиванием мышью, а поля с названиями зачетов и экзаменов из таблицы Ведомость – двойным щелчком. Строка Имя таблицы заполняется автоматически при установке поля.

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

5. Закройте запрос, при закрытии дайте ему имя Общая ведомость.

6. Запустите запрос на выполнение, используя команду горизонтального меню Запрос>Запуск, или щелкнув на значке Представление запроса  панели инструментов Конструктор запроса. Посмотрите, какие данные он выводит.

7. Закройте запрос.

8. Следуя инструкциям 1 – 8, объединив данные из трех таблиц Группы, Преподаватели, Кафедры, создать запрос Кураторы, который дает список кураторов групп с их местом работы: название и месторасположение кафедры. Отсортируйте список кураторов по алфавиту (рис. 28). 

Рис. 28. Результаты выполнения запроса Кураторы, выполненного
по трем таблицам Группы, Преподаватели, Кафедры.  
Записи отсортированы по алфавиту кураторов

Построение запросов с условием отбора

 Условиями отбора называют ограничения, которые накладываются на запрос или фильтр для отбора конкретных записей. Например, требуются сведения не обо всех студентах, а только о тех, кто обучается на бюджетной основе. Для этого следует указать условия отбора, которые позволят включать в набор записей только те, у которых в поле Paym (Форма опл)  находится значение «Б» (рис. 29). 

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

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

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

Например, если требуется получить список студентов, не подлежащих призыву в армию, то в него войдут все девушки (поле pol=”ж”), студенты имеющие льготы (поле Lgoty= ДА), мужчины, дата рождения которых позднее, т.е. меньше 1 января 1985 года (на 2003 год). Тогда бланк запроса будет иметь вид, аналогичный показанному на рис. 30.

Рис. 30. Критерий запроса включает три условия для разных полей,
объединенных оператором OR. Результирующие записи должны
удовлетворять одному из трех условий

2.2. ЗАДАНИЕ 10. Построение запросов с условием отбора

  1. Сформировать запрос Запрос1 на получение списка студентов-мужчин, обучающихся на коммерческой основе. В результирующей таблице выведите только список фамилий. Рекомендация: условия для требуемых полей записывать в одной строке.
  2. Сформировать запрос Запрос2 на получение списка студентов-мужчин, дата рождения которых находится в интервале от 1.01.1983г. до 31.12.1983г. Рекомендация: условия для выбора можно задать с помощью операторов >=#1.01.83# And <= #1.01.83# или  Between #1.01.83# And #31.12.83# 

 Построение запросов с параметром

Если приходится часто выполнять один и тот же запрос на выборку, изменяя при этом условия отбора, то сэкономить время позволяет запрос с параметрами. Запрос с параметрами не требует каждый раз вносить изменения в бланк запроса; вместо этого выводится приглашение пользователю ввести условия отбора. Для каждого поля допускается определение набора параметров.

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

Например, сделаем запрос на отсрочку от армии (рис. 30) более универсальным: возраст призыва будет меняться в зависимости от времени призыва. Для этого выполните следующее задание.

2.3. ЗАДАНИЕ 11. Построение запросов с параметром

  1. Используя буфер обмена, скопировать в базу данных запрос Отсрочка от армии на 2003год. Дать ему новое имя  Отсрочка от армии.
  2. Открыть новый запрос в режиме Конструктора. В ячейке Условие ввода
    ввести: <[Ввести дату призыва дд.мм.гг.] (рис. 31 а).
  3. Для предварительного просмотра запроса с параметрами до его сохранения нажмите кнопку  на панели инструментов и введите значение параметра. Для возвращения в режим конструктора запроса нажмите кнопку   на панели инструментов. При выполнении запроса программа Access открывает диалоговое окно с введенной вами в квадратных скобках подсказкой (рис. 31 б). В это окно необходимо ввести нужную величину.
  4. Активизируйте запрос несколько раз, задавая разные значения параметра. Посмотрите, как меняются результаты выполнения запроса.
  5. Скопируйте Запрос2 из ЗАДАНИЯ 10, дав ему имя Запрос3. Откройте его в режиме Конструктора.
  6. Для того чтобы вывести приглашения «Введите начальную дату:» и «Введите конечную дату:» для определения диапазона отбираемых значений, введите Between [Введите начальную дату :] And [Введите конечную дату:] в ячейку строки Условие отбора в столбце поля Dtr (Дата рожд). Поработайте с этим запросом. 

            

а)                                                    б)

Рис. 31. а) Фрагмент бланка запроса, в котором параметром является

условие отбора для поля Dtr (Дата рожд);

б) Диалоговое окно для ввода параметра

Для того, чтобы находить в поле не конкретное значение, а только его фрагмент используют оператор Like. Например, если требуется отобрать студентов, фамилия которых начинаются на букву «А», в бланке запроса для поля ФИО можно записать условие Like «А*».

7. Для таблицы Ведомость создать запрос, который выводил результаты экзаменов за I семестр для любой группы.

8. Для этого создайте новый запрос в режиме конструктора на основе запроса Общая ведомость. Добавьте поля ФИО, Nst, 1_p, 1_e1,1_e2, Ngr. В последнем поле Ngr задайте условие отбора Like [Ввести номер группы]. Дайте ему название Ведомость группы за I семестр.

9. Проверьте, как работает данный запрос. Обратите внимание, что при вводе в поле параметра группы можно не соблюдать регистр букв и не надо набирать дефис. Например, чтобы получить ведомость группы А‑2, надо ввести а2.

 Вычисления в запросах

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

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

 Построение вычисляемых полей

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

2.4. ЗАДАНИЕ 12. Построение запросов с вычисляемыми полями

Построим простейший запрос, в котором выдается список группы и средний балл каждого студента (для II курса II семестра – это группы А-2 и Б-2).

  1. Откройте окно запроса Ведомость группы за I семестр  в режиме конструктора.
  2. Уберите флажки в ячейке Вывод на экран для полей Nst, Ngr, 1_e1, 1_e2. В ячейку Поле свободного столбца поставьте курсор, вызовите контекстное меню и выберите команду Область ввода: в этом окне удобнее работать с длинными выражениями.
  3. В Области ввода набрать выражение:
    СреднийБалл: ([1_e2]+[1_e1])/2. Закрыть Область ввода. Поставить галочку в ячейке Вывод на экран вычисляемого поля: (рис. 32).
  4. Запустите запрос (пункт 7 ЗАДАНИЯ 9), как работает данный запрос?
  5. При проектировании таблиц мы оговаривали, что в таблице Группы количество студентов в группе и номер курса могут быть вычислены по уже имеющимся полям. Составьте самостоятельно запрос Список групп, в котором номер курса определяется в вычисляемом поле как разность между последней цифрой текущего года и последней цифрой номера группы. Например, для II полугодия 2004 года группа Б-1 будет отнесена к III курсу: (200)4-(Б-)1=3. Причем, если берется I полугодие, то формула расчета должна включать добавление единицы. Этот факт реализуется вводом параметра в выражение:

Kурс: Val(Right$(Date$();1))-Val(Right$([Nгр];1))+[Для I полугодия ввести 1, иначе 0]

Рис. 32. Запрос с вычисляемым полем

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

7. Используя выражение для вычисления номера курса пункта 5, создайте запрос Список студентов по курсам на основе таблицы Учетная карта, включив в него все поля, кроме Phgr. При этом модифицируйте выражение для вычисления курса так, чтобы полугодие вычислялось автоматически (для этого используйте функции MID$, DATE$(), чтобы определить текущий месяц года.)

 Групповые операции и вычисления. Итоговые запросы

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

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

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

Список опций поля Групповая операция включает 9 итоговых функций и три элемента: Группировка, Выражение, Условие.

  • Группировка. Этот элемент указывает на поле, по которому результаты выполнения запроса будут организованы в группы для дальнейших итоговых вычислений.
  • Sum. Суммируются все значения, содержащиеся в поле запроса.
  • Avg. Вычисляется среднее арифметическое значение для всех чисел, содержащихся в выбранном поле.
  • Min/Max. Отображается минимальное/максимальное изо всех значений, содержащихся в поле запроса.
  • Count. Вычисляется количество непустых значений в поле запроса.
  • StDev. Вычисляется среднеквадратичное отклонение для значений в поле.
  • Var. Вычисляется дисперсия распределения значений, содержащихся в указанном поле.
  • First/Last. Отображается значение из первой/последней записи результирующего набора.
  • Выражение. Этот элемент сообщает программе Access, что следует создать поле, значение которого будет вычисляться.
  • Условие. Элемент, указывающий Access, что данное поле не участвует в группировке; условие отбора, вводимое в это поле, определяет какие записи будут участвовать в вычислениях.

2.5. ЗАДАНИЕ 13. Построение итоговых запросов

В ЗАДАНИИ 12 в пунктах 5 – 6 был создан запрос Список групп. Дополним этот запрос новыми вычисляемыми полями, в которых указано количество студентов в группе и средний балл по двум экзаменам.

  1. Откройте запрос Список групп в режиме Конструктора.
  2. Добавьте в верхнюю половину бланка запроса таблицу Учетная карта.
  3. Поставьте курсор в поле Instructor(Куратор) и перетащите поле Ngr таблицы Учетная карта. Новое поле вставляется между имеющимися полями запроса.
  4. Отобразите строку Групповая операция, выполнив команду горизонтального меню Вид>Групповые операции.
  5. В ячейке нового поля строки Групповая операция щелкните на кнопке раскрывающегося списка справа от элемента Группировка и выберите опцию Count.
  6. Сохраните запрос и посмотрите, как он работает. Обратите внимание, какое имя дает Access новому полю.
  7. Перейдите в режим Конструктора и вызовите контекстное меню на вычисляемом поле. Перейдите к пункту Свойства и дайте новую Подпись Количество.
  8. Теперь вычислите средний балл группы по каждому экзамену. Снова перейдите в режим Конструктора. Вставьте в верхнюю половину бланка запроса таблицу Ведомость. В свободные столбцы вставьте из новой таблицы поля с результатами экзаменов:1_е1, 1_е2, 2_е1, 2_е2.
  9. Выберите среди групповых операций для этих полей функцию Avg. Посмотрите, как работает запрос.
  10.  Дайте новые подписи каждому полю (например, СрБ_1э1) так, как это было сделано в пункте 7.
  11.  Измените формат вывода среднего балла так, чтобы высвечивался только один знак после десятичной запятой. Для этого воспользуйтесь пунктами Формат (Фиксированный) и Число десятичных знаков (1) из вкладки Свойства поля, вызываемой из контекстного меню.
  12.  Сохраните запрос и посмотрите результаты его работы. Они должны выглядеть так, как показано на рис. 33.
  13. Самостоятельно постройте запрос по таблице Преподаватели, определяющий количество сотрудников по каждой должности. Используя ввод параметра, модифицируйте построенный запрос так, чтобы он определял количество сотрудников только одной категории.

    Рис. 33. Результаты итогового запроса Список групп

2.6. ЗАДАНИЕ 14. Построение итоговых запросов с использованием сложных условий отбора

Если возникает необходимость отфильтровать записи еще до выполнения вычислений, а условие отбора применяется не для поля группировки, в строке Групповая операция такого поля следует выбрать опцию Условие. Например, необходимо в каждой группе подсчитать количество студентов, сдавших экзамены за первый семестр без задолженностей и троек – количество «хорошистов». При этом вначале должны быть отобраны записи (студенты), удовлетворяющие указанному критерию, затем они должны быть сгруппированы по полю Nгр и по каждой группе уже будет подсчитано количество попавших в нее студентов. Бланк такого запроса и результаты его работы представлены на рис. 34.

  1. Создайте запрос, бланк которого показан на рис. 34. Обратите внимание, что программа Access автоматически снимает флажок опции Вывод на экран для полей, к которым применено условие отбора. Дайте запросу имя Хорошисты групп
  2. Модифицируйте запрос Хорошисты групп так, чтобы он выдавал данные только для одной группы, т.е. введите параметр для названия группы.
  3. Создайте запрос, определяющий в каждой группе количество студентов, имеющих задолженности за I семестр.
  4. Создайте запрос, определяющий количество студентов, претендующих на повышенную стипендию (сдавших зачет и имеющих оценки «5» по двум экзаменам, например, по предметам 1_з,2_э1,2_э2).
  5. Создайте запрос, определяющий список студентов II курса  (группы А‑2 и Б–2), которые могут получать стипендию. Критерий для обора таких студентов следующий: это студенты, которые обучаются на бюджетной основе и не имеют задолженностей, оценки по двум экзаменам II семестра (2_э1 и 2_э2) «4» и «5» ИЛИ имеют льготы (в поле Lgotyда), которые дают им возможность получать стипендию, если среди оценок на экзаменах есть тройки. Дайте запросу имя Список II курса на стипендию.

 

а)

б)

Рис. 34. а) Бланк запроса, в котором критерий отбора записей будет
применен до выполнения вычислений. б) Результаты работы запроса:
показано, сколько «хорошистов в каждой группе»

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

7.  Усложним запрос, включив в него возможность подсчитывать общую сумму стипендии, выделяемой на каждую группу. Размер стипендии ввести как параметр. Для того, чтобы в выражении для стипендии записать формулу, необходимо ввести имя поля Count_Ngr, в котором подсчитывается количество студентов в группе, получающих стипендию. Поскольку в бланке запроса это имя не видно (оно выдается только при просмотре результатов запроса, да и то в случае, если не дана другая подпись полю), то для записи выражения лучше воспользоваться Построителем выражений и взять требуемое поле из раскрывающегося списка полей запроса Стипендия II курса (рис. 35).

Как видно из этого рисунка, размер стипендии вводится параметром в само выражение, её значение будет запрашиваться при запуске запроса.
Для того, чтобы запрос подсчитывал стипендию согласно построенному выражению, необходимо в строке Групповая операция поля Стипендия выбрать опцию Выражение.

8.  Посмотрите, как работает созданный Вами запрос. 

Рис. 35. Использование Построителя выражений для создания

вычисляемого поля Стипендия  на основе поля группировки Count_Ngr.

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

2.7. ЗАДАНИЕ 15. Построение сложных запросов с условиями отбора для вычисляемых полей

В запросе Стипендия II курса размер стипендии задавался одинаковым для всех категорий студентов. Во многих ВУЗах практикуется дифференцированная стипендия для разных категорий студентов. Допустим, что размер базовой стипендии равен N руб. Для отличников стипендия увеличивается вдвое, а для тех, кто получает стипендию, имея тройки, уменьшается вдвое. Составим запрос, в котором выдается список всех студентов II курса (группы А-2, Б-2) за II семестр (2_з, 2_э1, 2_э2) с указанием начисленной стипендии.

Создайте такой запрос по следующей схеме.

  1. Создайте новый запрос в режиме Конструктора. Добавьте в бланк запроса таблицы Учетная карта  и Ведомость.
  2. Перенесите в нижнюю половину запроса поля ФИО, Nгр, Форма опл, Льготы из таблицы Учетная карта и поля 2_з, 2_э1, 2_э2 из таблицы Ведомость.
  3. В ячейке Условие Отбора поля №гр укажите выбор групп II курса любым способом, например, используя операторы In («А2″;»Б2») или «А2» OR «Б2». (Можете предложить другой способ определения студентов одного курса?)
  4. В новом столбце создайте вычисляемое поле логического типа K, определяющее что студент может получать базовую стипендию, а именно: он обучается на бюджетной основе, не имеет задолженностей за сессию и оценки за экзамены выше «3». Выражение, соответствующее данному критерию, можно записать так:

K: [Paym]=»б» And [2_p]=»з» And ([2_e1]=4 Or [2_e2]=4) And [2_e1]>3 And [2_e2]>3

  1. По аналогии в новом столбце запишите выражение для вычисляемого поля логического типа L, определяющее что студент может получать повышенную стипендию: он обучается на бюджетной основе, не имеет задолженностей за сессию и все оценки за экзамены «5».
  2. В следующем столбце запишите выражение для вычисляемого поля логического типа M, определяющее что студент может получать половину базовой стипендии: он обучается на бюджетной основе, имеет льготы, сессию сдал без задолженностей и без двоек, но имеет тройки.
  3. В следующем новом столбце создайте вычисляемое поле денежного типа Стипендия, указав в Свойствах поля формат поля Денежный с числом знаков 2. Выражение для этого можно записать, используя функцию управления Iif. Это выражение будет достаточно громоздким, а именно:

Стип: IIf([K]=-1; [Стипендия]; IIf([L]=-1;[Стипендия]*2;

IIf ([M]=–1;[Стипендия]/2;0)))

  1. Посмотрите результаты работы запроса (рис. 36). Знак «-1» в логических полях K,L,M свидетельствует о том, к какой категории относится данный студент.
  2.  Сохраните запрос, присвоив ему имя Дифференцированная стипендия II курса.
  3. Создайте с помощью Конструктора новую таблицу Активисты факультета (рис. 37). В этой таблице представлен список студентов, занимающихся общественной работой.

Категория этой работы оценивается как «1», если работа соответствует уровню факультета, и «0», если – уровню группы. Если категория общественной работы «1»,то к стипендии добавляется M % от стипендии, которую получает данный студент.

11. Свяжите новую таблицу с таблицей Учетная карта, не устанавливая целостность данных.

Рис. 36. Результаты работы запроса на вычисление дифференцированной стипендии. Значение «-1» в логических полях K,L,M является
показателем для начисления стипендии в зависимости
от категории студента

Рис. 37. Таблица Активисты факультета

12. Модифицируйте запрос Дифференцированная стипендия II курса так, чтобы в нем вычислялась дополнительная стипендия, если категория общественной работы оценивается «1», и выдавалась суммарная стипендия (Рис. 38).

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

Рис. 38. Результаты работы модифицированного запроса
Дифференцированная стипендия II курса для случая 10 % надбавки

к стипендии за общественную работу

3. ВЫВОДЫ

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

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

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

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

4. КОНТРОЛЬНЫЕ ВОПРОСЫ

  1. Для чего служат запросы на выборку?
  2. Почему запросы не занимают в базе данных много места?
  3. Перечислите все способы включения полей таблицы в бланк запроса.
  4. Какие виды запросов были использованы при конструировании БД Факультет?
  5. Как с помощью запроса провести сортировку  записей по какому-либо полю?
  6. Для чего в запрос вставляют ссылки на таблицы?
  7. Как включают в запрос условия отбора?
  8. Для чего служит оператор Like?
  9. Какие преимущества дает запрос с параметром?
  10.  Что такое выражения и функции?
  11.  Как строится выражение в Access?
  12.  Какие действия допустимы с полями текстового типа? логического типа?
  13.  Как работает функция управления IIf?
  14.  Какие операции допустимы в вычисляемых полях? Сохраняются ли значения таких полей в файле базы данных?
  15.  Для чего используется Построитель выражений?
  16.  Для чего предназначена операция группировки? В чем суть итогового запроса?
  17.  Какие итоговые функции вы знаете?

5. ОТВЕТЫ К ЗАДАНИЯМ

ЗАДАНИЕ 10. Построение запросов с условием отбора

Пункт 1.

Запрос Список студентов – мужчин, обучающихся на коммерческой основе.

  

ЗАДАНИЕ 12. Построение запросов с вычисляемыми полями

Запрос Список групп

 

Запрос Список студентов по курсам

Kurs: Val(Right$(Date$();1))-Val(Right$([Ngr];1))+-IIf(Val(Mid$(Date$();4;2))<=6;0;1)

  

ЗАДАНИЕ 13. Построение итоговых запросов

Пункт 13. Запрос Количество сотрудников по должностям

 

ЗАДАНИЕ 14.

Пункт  5. Запрос Список студентов II курса на стипендию

 

Пункт 6. Запрос Стипендия II курса

 

Cтипендия: [Размер стипендии]*[Count_Ngr]

ЗАДАНИЕ 15.

 Модифицированный запрос Дифференцированная стипендия II курса

  

K: [Paym]=»б» And [2_p]=»з» And ([2_e1]=4 Or [2_e2]=4) And [2_e1]>3 And [2_e2]>3 – критерий для получения базовой стипендии.

L: [Paym]=»б» And [2_p]=»з» And [2_e1]=5 And [2_e2]=5 – критерий для получения повышенной стипендии.

M: [Paym]=»б» And [2_p]=»з» And [Lgoty]=Истина And ([2_e1]=3 Or [2_e2]=3) And [2_e2]>2 And [2_e1]>2 – критерий получения стипендии по льготам с тройками.

Стип: IIf([K]=-1;[Стипендия];IIf([L]=-1;[Стипендия]*2;IIf([M]=-1; [Стипендия]/2; 0))) – вычисление величины стипендии.

Ds: IIf([категория]=1;[Процент]*[Стип]/100;0) – надбавка за общественную работу.

Сумма: [Стип]+[Ds] – значение стипендии с надбавками. 

Понравилась статья? Поделить с друзьями:
  • Том хэнкс как найти
  • Как составить рыцарский герб
  • Как узнать что я нашла свою половинку
  • Как найти обмотки электродвигателя 380
  • Как найти rss в эконометрике