Формы
227
Рис. 5.13. Разделенная форма
ТОВАР
Расположение таблицы в верхней или нижней части окна разделенной формы оп-
ределяется в свойстве формы
Ориентация разделенной формы
(Split Form
Orientation). Свойство может принимать значения
Таблица сверху
(Datasheet on
Top),
Таблица снизу
(Datasheet on Bottom),
Таблица слева
(Datasheet on Left) и
Таблица справа
(Datasheet on Right). Изменить значение этого свойства можно
только в режиме конструктора.
Вычисления в форме
Вычисления в форме могут осуществляться как в каждой записи формы,
так и для
группы записей при формировании итоговых величин. Вычисляемые величины
228
Глава 5
отображаются в поле формы, но, в отличие от создаваемых в таблице вычисляемых
полей, не сохраняются в таблице. Для сохранения результатов вычислений в табли-
це базы данных требуется подготовка макроса или процедуры на VBA (Visual Basic
for Applications). Примеры макросов, обеспечивающих обновление поля таблицы
значениями, вычисленными в форме, будут рассмотрены в
главе 9
.
Вычисления в каждой записи формы
Чтобы произвести вычисления на основе данных каждой записи формы, необходи-
мо
создать элемент управления
вычисляемое поле
, источником данных которого яв-
ляется выражение для расчета. Для создания такого элемента управления откройте
форму в режиме макета или конструктора. Оба режима на ленте конструктора
имеют в группе
Элементы
управления
(Controls) кнопку
Поле
(Text Box). Нажми-
те ее и поместите вычисляемое поле в нужном месте области данных. Затем введи-
те выражение в элемент, называемый
Свободный
(Unbound). Выражение должно
начинаться со знака равенства (
=
). В качестве операндов выражения чаще всего
используются имена полей и константы, а в качестве операторов — знаки арифме-
тических операций.
Пусть необходимо подсчитать и отобразить в форме
величину НДС каждого товара
в денежном выражении. Откройте созданную ранее простую форму ТОВАР в ре-
жиме конструктора. Создайте вычисляемый элемент управления и запишите в него
выражение:
=[ЦЕНА]*[СТАВКА_НДС]
В связанную с полем надпись запишите:
Стоимость НДС
.
Выражение будет введено в свойство созданного элемента управления
Данные
(Control Source), размещенное на вкладке
Данные
(Data). В режиме макета выра-
жение нужно записать непосредственно в это свойство. Добавить вычисляемое по-
ле в имеющийся в форме макет значительно проще в режиме макета.
Измените формат поля, выбрав на вкладке
Макет
(Format) в списке свойства
Фор-
мат поля
(Format) значение
Денежный
(Currency).
Используйте
Формат по образцу
(Format Painter) для оформления нового элемента
в стиле всех других элементов.
Форма в режиме конструктора и
режиме просмотра, полученная после создания
вычисляемого поля, приведена на рис. 5.14 и 5.15.
Создание вычисляемого поля в форме аналогично созданию такого поля в запросе.
Вычисление итоговых значений
Вычисление итоговых значений в форме выполняется в примечании формы с по-
мощью встроенных статистических функций, записываемых в выражениях в вы-
числяемых элементах управления.
Откройте форму ТОВАР в режиме конструктора. Чтобы поместить вычисляемое
поле в область примечания формы, расширьте ее, установив курсор на границе, так
230
Глава 5
чтобы он принял
вид двунаправленной стрелки, и перетащив границу вниз. Затем
щелкните на кнопке
Поле
(Text Box) в группе
Элементы управления
(Controls) и
в области примечания вычертите вычисляемый элемент управления.
Для расчета среднего значения цены всех товаров запишите в вычисляемый эле-
мент управления выражение:
= Avg ([ЦЕНА])
и в надпись:
Средняя цена товара
(рис. 5.16). Измените формат поля на
Денежный
(Currency).
Рис. 5.16.
Примечание формы в режиме конструктора с полем для вычисления итогов
После перехода в режим просмотра в форме отображается результат расчета
(рис. 5.17).
Рис. 5.17.
Форма в режиме просмотра с расчетным полем для итоговых значений
Многотабличные формы
Многотабличная форма создается для работы с данными
нескольких взаимосвязан-
ных таблиц. Источником данных такой формы является многотабличный запрос.
При этом форма также может быть простой, отображающей одну запись в столбик,
или ленточной, отображающей все записи в табличном виде с надписями в заго-
ловке формы. Для создания такой формы могут быть использованы команды
Фор-
ма
(Form) или
Несколько элементов
(Multiple Items). Форма, построенная на мно-
готабличном запросе, может быть названа
одиночной
.
Многотабличная форма может быть составной: состоять из главной формы и одной
или нескольких подчиненных включаемых форм. Подчиненная форма, как правило,
строится на основе таблицы, подчиненной таблице-источнику
записей главной
формы, т. е. находится с ней в отношении 1 : М. Подчиненная форма отображает
данные из всех записей подчиненной таблицы, которые связаны с записью, ото-
бражаемой в главной форме. Для разработки такой формы можно воспользоваться
следующими средствами:
1.
На основе главной таблицы создать командой
Форма
простую форму с макетом
в столбик.
Формы
231
2.
На основе подчиненной таблицы командой
Несколько элементов
создать лен-
точную форму — это многозаписевая форма.
3.
Закрыть вторую форму, оставив первую открытой в режиме макета.
4.
Перетащить вторую форму из области навигации в первую форму, она отобра-
зится в
элементе управления
Подчиненная форма/отчет
(Subform/
Subreport).
5.
Если не установилась связь между формами, следует в главной форме открыть
свойства элемента управления
Подчиненная форма/отчет
и на вкладке
Данные
(Data) заполнить строки
Основные поля
(Link Master Fields) и
Подчиненные
поля
(Link Child Fields). Это можно сделать с помощью построителя, вызывае-
мого в строке свойства
Основные поля
.
Воспользовавшись приведенным алгоритмом, несложно создать составную форму
на основе таблиц НАКЛАДНАЯ и ОТГРУЗКА (рис. 5.18). Связь этих форм осуще-
ствляется по составному ключу связи
НОМ_НАКЛ
и
КОД_СК
. В
строке свойств они запи-
сываются через точку с запятой.
Рис. 5.18.
Составная форма в режиме макета
Очевидно, для разработки полноценной формы для работы с накладными необхо-
димо дополнить главную форму данными из таблиц ДОГОВОР и ПОКУПАТЕЛЬ, а
подчиненную форму — данными из таблицы ТОВАР.