Использование вычисляемых полей в запросах
Допускается создание вычисляемых полей в запросе с помощью ввода выражения в строку с именами полей. Для создания вычисляемого поля необходимо в режиме конструктора запроса ввести выражение в пустую ячейку строки "Поле". После нажатия клавиши Enter или перевода курсора в другую ячейку будет выведено имя поля ВыражениеN, где N - целое число, увеличивающееся на единицу для каждого нового создаваемого вычисляемого поля в запросе. Это имя выводится перед выражением и отделяется от него двоеточием. В режиме таблицы данное имя становится заголовком столбца.
Пользователь имеет возможность переименовать вычисляемое поле. Для этого нужно заменить слово ВыражениеN на другое, которое и будет заголовком столбца.
Например, для создания поля Сумма следует ввести в ячейку в строке Поле выражение: Сумма: [Цена]*[Количество]
При выполнении запроса в поле Сумма будет занесено новое значение, найденное путем перемножения содержимого полей Цена и Количество.
Вычисляемые поля позволяют:
- рассчитывать числовые значения и даты;
- комбинировать значения в текстовых полях;
- создавать подчиненные запросы;
- рассчитывать значения итоговых полей с помощью групповых функций.
Для вычисляемых полей допускается сортировка, задание условий отбора и расчет итоговых значений, как и для любых других полей. Для расчета итоговых значений следует выбрать в ячейке строки Групповая операция элемент Выражение.
Ввод данных в вычисляемые поля или их изменение в режимах таблицы или формы невозможен. При изменении значений полей, используемых в выражении, значение вычисляемого поля обновляется автоматически.
При делении денежного значения на любое число возвращается числовое значение со значением свойства Размер поля - С плавающей точкой (8 байт). Для того чтобы возвращалось значение типа Денежный, следует указать этот тип в свойстве запроса Формат поля.
В Microsoft Access определена специальная функция Count, обеспечивающая подсчет числа записей в запросе. Для этого следует ввести Count() в ячейку в строке полей.
Окно Область ввода, выводящееся нажатием клавиш Shift+F2, позволяет просматривать выражения целиком (без прокрутки).
Элементы выражений
Элементами выражения могут быть операторы, идентификаторы, функции, литералы и константы.
Оператор =, <, &, And, Or, Like Определяет операцию, выполняемую над одним или несколькими элементами.
Идентификатор Формы![Заказы]![Заказ] или Отчеты![Счет].ВыводНаЭкран Задает ссылку на значение поля элемента управления или свойства.
Функции Например, Date, Sum, Dlookup, Dmax и др. Возвращают значения, найденные в результате расчета или другой операции. Access Basic предоставляет пользователю возможность создавать собственные функции.
Литерал 100, #1-янв-94#, "New York" Представляет значение, например, число, строку или дату, которое используется в Microsoft Access, именно в том виде, как оно записано. Даты заключаются в символы номера (#), а строки в прямые кавычки (").
Константа True, False, Да, Нет, Null Представляет значение, остающееся неизменным.
Замечание. Если в выражении имеется идентификатор, не являющийся именем какого-либо поля исходных таблиц или запросов, а также именем стандартной функции Access, то при выполнении запроса это приведет к появлению диалогового окна для ввода некоторого значения (параметра), подставляемого в выражение вместо этого идентификатора.
Задание 1. Создать простой запрос для выборки сведений из базы данных, включающий следующие поля:
- наименование факультета
- N группы
- наименование специальности
- N зачетной книжки
- ФИО
Технология
1. Щелкните в окне База данных по объекту Запросы.
2. В окне Запросы щелкните по кнопке Создать.
3. В окне Новый запрос выберите Конструктор и нажмите кнопку Ok.
4. В окне Добавить таблицу добавьте все четыре таблицы и закройте окно.
5. Отрегулируйте размеры и расположение окон с таблицами на схеме данных.
6. Перетащите соответствующие названия полей из окон таблиц в бланк запроса, расположенный под схемой данных, соблюдая заданный их порядок. Используйте для каждого поля, которое должно содержаться в выборке, один столбец бланка.
Примечание. Вместо перетаскивания названия поля можно использовать двойной щелчок левой клавишей мыши по соответствующей строке в окне таблицы на схеме данных. То же самое можно получить, если использовать кнопку, разворачивающую список полей таблиц. Эта кнопка появляется при щелчке по ячейке в первой строке бланка.
7. Просмотрите выборку, выполнив команду ВИД/Режим таблицы или щелкнув по кнопке инструментальной панели Вид.
8. Вернитесь в режим конструктора запросов в случае, если выборка содержит ошибки, и откорректируйте запрос.
9. Закройте запрос. Появится диалоговое окно, в котором необходимо подтвердить необходимость его сохранения. Присвойте запросу имя Выборка 1.
Задание 2. Создайте простой запрос для выборки сведений из базы данных, включающий те же поля, что и предыдущий запрос, но содержащий сведения только о студентах, обучающихся на коммерческой основе. Такой запрос называется запросом по условию.
Технология
1. В окне База данных скопируйте запрос Выборка 1 путем перетаскивания значка запроса при нажатой клавиши Ctrl.
2. Переименуйте запрос, дав ему имя Выборка по коммерческим. Для этого щелкните по имени запроса правой клавишей мыши и выберите в контекстном меню пункт Переименовать.
3. Откройте запрос в режиме конструктора. Добавьте в запрос поле Коммерческий.
4. Введите в строку Условие отбора поля Коммерческий значение Да.
5. Отмените вывод на экран при выполнении запроса значения поля Коммерческий. Для этого выключите флажок вывода на экран для этого поля.
6. Просмотрите выборку, щелкнув по кнопке Запуск на инструментальной панели.
7. Закройте запрос с сохранением макета запроса.
Задание 3. Создайте запрос на выборку, с помощью которого найдите фамилию и номер зачетной книжки самого молодого студента в одной из групп.
При конструировании запроса используйте стандартную функцию Access:
DMax("[Дата рождения]";"Студент";”Критерий”).
Функция имеет три аргумента, которые задаются текстовыми строками. Здесь первый аргумент функции определяет поле, по которому ведется поиск, второй аргумент - имя таблицы (запроса), в которой ведется поиск, а третий аргумент ограничивает область поиска заданным условием, этот аргумент не является обязательным. (см. Справку по языку Visual Basic Microsoft Access. Раздел Функции).
Технология
1. В окне База данных щелкните по кнопке Создать и выберите вариант Конструктор.
2. В окне Добавление таблицы выберите таблицу Студент. Вставьте в бланк запроса все поля этой таблицы. Для этого выделите сначала все поля на схеме данных с использованием клавиши Shift, а затем перетащите в первую строку бланка описания запроса.
3. Введите в строку Условие отбора поля Дата рождения формульное выражение в соответствии с заданием. Используйте инструментальное средство Access Построитель выражений. Для этого установите курсор в соответствующую ячейку таблицы описания запроса и щелкните по кнопке инструментальной панели Построить.
4. В окне Построитель выражений введите имя функции DMax. Для этого раскройте список Функции в левом подокне построителя и выберите Встроенные функции. Далее в среднем подокне выберите категорию функций По подмножеству, а в правом подокне – функцию DMax(). Соответствующая функция появится в главном окне построителя с обозначением ее аргументов.
5. Удалите первый аргумент функции и вставьте вместо него имя поля Дата рождения либо непосредственным вводом с клавиатуры, либо путем раскрытия щелчком мышки списка Таблицы в левом подокне, а затем, выбрав таблицу Студент, а в ней – поле. В последнем случае нужно удалить неиспользуемую часть строки Выражение. Далее введите значения остальных аргументов функции, таким образом, чтобы функция приняла следующий окончательный вид:
DMax("[Дата рождения]";"Студент";"[N группы]=851")
6. Для записи функции в ячейку таблицы описания запроса щелкните по кнопке Ok. Закройте запрос сохранением макета и присвойте ему имя Выборка самого молодого студента. Просмотрите результат выполнения запроса двойным щелчком мыши по его имени в окне базы данных.
Задание 4. Создайте запрос для подсчета количества коммерческих студентов в каждой группе.
Технология
1. Создайте новый запрос с использованием таблиц Факультет, Группа, Студент.
2. Введите в 1-ый столбец бланка запроса поле Наименование факультета, во 2-ой столбец – поле N группы, в 3-ий столбец – поле Коммерческий.
3. Установите в качестве условия выборки для 3-го столбца – значение Да.
4. Установите для 1-го и 2-го столбцов бланка сортировку по возрастанию.
5. Отключите вывод на экран данных 3-го столбца.
6. Введите в 4-ый столбец поле Коммерческий и замените название столбца на Количество коммерческих. Для этого ячейка с названием поля должна содержать: