Уроки 32 · 1 урок · Н. И. Тайлаков (общий редактор), А. Б. Ахмедов, М. Д. Пардаева, А. А. Абдуганиев, У. М. Мирсанов. Информатика и информационные технологии, 10 класс, 1-е издание. «Extremum-Press», Ташкент, 2017
32
Выполнение математических операций в MS Access
Учебник: с. 71–75
ЦельСоздаёт вычисляемое поле в запросе, использует арифметические операции и функции Sqr, Abs, Int, Log и IIf и вычисляет итоги по группам.
Новые слова
вычисляемое поле: столбец запроса, значение которого вычисляется по другим полям · hisoblanadigan maydonвыражение: операнды, операторы и функции, дающие одно значение · ifodaIIf: функция Access, выбирающая одно из двух значений по условию · IIfГруппировка (Group By): параметр итогов, образующий группы одинаковых значений · Group By
Объяснение
В запросе Access можно вычислить новое значение по полям таблицы: в строке «Поле» запишите «Имя: выражение», например Total: [Price]*[Qty], причём имена полей заключены в квадратные скобки. Арифметические операции: + – * /, степень ^, целочисленное деление \ и остаток Mod; среди функций: Sqr(x) – квадратный корень, Abs(x) – абсолютная величина, Int(x) – целая часть (округление вниз), Sin, Cos, Tan и Log(x). Обратите внимание: в Access функция Log даёт натуральный логарифм (по основанию e ≈ 2,718), а не десятичный; поэтому Log(1) = 0. Чтобы выбрать по условию, используйте IIf(condition, value1, value2), например IIf([Mark]>=3,"Pass","Fail"); в зависимости от региональных настроек аргументы разделяются запятой или точкой с запятой. Для вычислений по группам нажмите Σ «Итоги» в конструкторе запросов, выберите Group By для поля группировки и Sum, Avg, Min, Max или Count для вычисляемого поля. Поскольку десятичный разделитель зависит от настроек, для процентов удобна запись вида [Price]*12/100.
Примеры
Таблица Orders: Item, Price (сумов), Qty. В тетради: Price = 5000, Qty = 6; Total: [Price]*[Qty] = 30000. С НДС 12%: Total2: [Price]*[Qty]*112/100 = 30000*112/100 = 33600. Price и Qty в таблице не изменяются: Total – это только вычисление в запросе.
По оценкам из таблицы Students: у 10A – 5, 3, 5, 4, 5 (сумма 22, Avg = 4,4); у 10B – 4, 5, 3 (сумма 12, Avg = 4). В запросе с итогами, где Class – Group By, а Mark – Avg, появляются две строки. IIf([Mark]>=4,"good","low") даёт good, low, good, good, good для 5, 3, 5, 4, 5.
Работа в классе
«Запрос магазина»: пара строит таблицу из 5 товаров, вычисляет Total и сумму с НДС, добавляет столбец «дешёвый/дорогой» с помощью IIf и проверяет результаты на калькуляторе.
Упражнения
1
Если цена равна 12000, а количество – 3, чему равно Total: [Price]*[Qty]?
36000
2
Если к этой сумме добавить НДС 12%, чему равен итог?
40320
3
Запишите значения Sqr(144) и Log(1).
12 и 0
4
Почему вычисляемое поле Total не изменяет Price и Qty в таблице?
Запрос только отображает результат; данные в таблице остаются без изменений.