Добавление в форму вычисляемых полей

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

Некоторые полезные функции:

 

§ IIf(expr;truepart;falsepart)–условная операция «если» (аналогичная операции ЕСЛИ в Excel) с тремя аргументами:

1) условие - логическое выражение (expr). Формируется чаще всего на основе операций сравнения и может содержать связки OR (или), And (и), Imp (следует), Not (не), Eqv (эквивалентно).

2) операция, выполняемая, если условие истинно (truepart);

3) операция, выполняемая, если условие ложно (falsepart).

 

§ Now()–текущие дата и время; обновить эти данные можно, выбрав в меню Записи (в режиме Формы, не в конструкторе) команду Обновить.

 

§ Date() – текущая дата; формат выводимой на форму даты можно настроить, выделив поле с этим выражением (в режиме Конструктора), затем выбрав Свойства в контекстном меню, вкладку Макет, свойство Формат поляи нужный формат из предлагаемого списка.

 

§ Avg(expr), Sum(expr), Max(expr), Min(expr) – функции, вычисляющие среднее, суммарное, максимальное и минимальное значения выражения expr, составляемого по правилам для выражений в Access. В частности, это может быть название поля открытой формы, например, Sum([Начислено]).

Для использования вычисляемых полей на форму в режиме Конструктора добавляется новое поле, в которое и заносится выражение (формула), начинающееся всегда со знака равенства =, например, =Now() или =Min([Начислено]). В режиме Формы в этом поле отображается значение выражения, вычисленное на основе текущих данных БД. Надпись к полю формируется как отдельный независимый элемент.

 

Пример 14.Добавить на форму «МоиСотрудники» вычисляемое поле «Премия», рассчитываемое следующим образом: для инженеров она составляет 30% от зарплаты, для остальных – 20%.

Шаги выполнения:

1. Откройте форму «МоиСотрудники» в режиме Конструктора. Добавьте на форму элемент Поле: щелкните мышью по этому элементу - кнопка ab| на панели элементов формы (если панели нет в поле зрения, выведите ее из менюВид ® Панели инструментов ® Панель элементов), затем очертите мышью местоположение этого поля на форме. Поле появляется вместе со стандартной надписью.

2. Отформатируйте надпись: замените стандартную надпись «поле N» на «Премия». Задайте для нее нужные размер и вид шрифта.

3. В само поле вместо слова «Свободный» введите выражение (без пробелов!):

=IIf([Должность]=’Инженер’; [Начислено]*0,3;[Начислено]*0,2)

 

Здесь [Должность]=’Инженер’ – условие (логическое выражение); [Начислено]*0,3 – операция, выполняемая, если условие окажется истинным; [Начислено]*0,2 – операция, выполняемая, если условие окажется ложным.

 

4. Перейдите в режим Формы и просмотрите записи.

Если условие усложнить, например, премия инженеров – 30%, бухгалтеров – 20%, а остальных – 10 %, то можно использовать «вложенный» IIf, в котором falsepart (операция, если условие ложно) – вновь будет IIf:

 

= IIf([Должность]=’Инженер’; [Начислено]*0,3;IIf([Должность]=’Бухгалтер’; [Начислено]*0,2; [Начислено]*0,1))

 

Читается эта операция так: Вычисляемое значение равно

Если [Должность]=’Инженер’, то [Начислено]*0,3, иначе: если [Должность]=’Бухгалтер’, то [Начислено]*0,2, иначе: [Начислено]*0,1

 

Задания

40. Создайте 3 формы по таблице «Отделы» тремя способами: с помощью Мастера, конструктора и Автоформы (ленточная). Отредактируйте первую из них, увеличив шрифты для надписей и полей, изменив их цвет, залить цветом поля, отформатируйте поле Фото по размеру рамки. Компактно разместите поля на форме.

41. Создайте форму по запросу: выдать названия отделов и среднюю зарплату в каждом отделе.

42. Выведите на форму поля с текущими Датой и Датой/Временем; для даты задайте «Длинный формат даты» (используйте Свойства этого поля, Макет Формат поля).

43. Выведите на форму поле «Штраф» в размере 5% от зарплаты для сотрудников 1-го и 2-го отделов за несоблюдение правил пожарной безопасности.

44. Выведите на форму поле «Налог»: для зарплат, не больших 3000, он составляет 10% от средней зарплаты; не больших 10000 – 20%, больших – 40%.