Основы создания многотабличных форм для ввода и редактирования данных

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

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

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

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

Явное включение подчиненной формы

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

Вызов связанной формы нажатием кнопки

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

Многотабличная форма без подчиненных и связанных форм

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

Многотабличная форма на основе запроса

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

Создание многотабличной формы в режиме конструктора и ее редактирование

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

Вычисления в каждой записи формы

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

Пример вычисляемого поля

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

= [НАГРУЗКА]/[ЧИСЛОПРЕП]

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

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

Вычисление итоговых значений

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

= Sum ([НАГРУЗКА])

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

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

Защита данных поля от изменений

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

Установка ограничений на корректировку записей через форму

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

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

Защита данных подчиненной формы от изменений

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