Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

2_Access2007_Формы

.pdf
Скачиваний:
33
Добавлен:
02.04.2015
Размер:
2.34 Mб
Скачать

Рис. 41. Окно выбора поля источника значений для поля формы

В следующем окне (рис. 42) отметьте переключатель Сохранить в поле

(Store that value in this field) и выберите поле формы КОД_ПОК (поле таблицы ДОГОВОР), в которое будут вводиться значения из списка.

Рис. 42. Выбор поля формы, в которое вводится значение из списка

Далее введите надпись поля со списком — Код покупателя (рис. 43).

Рис. 43. Определение подписи поля со списком

Нажмите Готово (Finish). В результате будет создано новое поле со списком КОД_ПОК. Замените поле с кодом покупателя на созданное мастером поле со списком. Использование поля со списком покупателей в режиме формы иллюстрирует рис. 36. Если потребуется настройка ширины столбцов списка, в окне свойств поля со списком в строках

Ширина списка (List Width) и Ширина столбцов (Column Width)

задайте подходящие значения.

Вычисления в документе

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

Рассчитайте в форме ДОГОВОРЫ С ПОКУПАТЕЛЯМИ значения стоимости заказанного товара в каждой строке подчиненной формы, а также общую стоимость заказанного в договоре товара. Разместите соответствующие вычисляемые поля, как предусмотрено в макете формы.

Замечание

Если в форме отображается поле СУММА_ПОСТ из таблицы ПОСТАВКА_ПЛАН, разместите вычисляемое поле рядом. Сравните введенные в поле СУММА_ПОСТ данные с расчетными и при необходимости подправьте. Если поле СУММА_ПОСТ пусто, скопируйте в него рассчитанное значение, и оно сохранится в поле таблицы.

Чтобы произвести вычисления на основе данных одной записи создайте в подчиненной форме вычисляемое поле и запишите туда выражение =КОЛ_ПОСТ*ЦЕНА. Для этого откройте подчиненную форму в режиме конструктора и, нажав на вкладке ленты Конструктор (Design) в группе

Элементы управления (Controls) кнопку Поле (Text Box), разместите этот свободный элемент управления, не связанный с источником данных, в конце строки данных.

Для того чтобы надпись переместилась в заголовок щелкните на кнопке

Табличный (Tabular) в группе Макет элемента управления (Control Layout) на вкладке ленты Упорядочить (Arrange). Если нужно независимо изменять размеры или перемещать элементы, щелкните на кнопке Удалить (Remove) из макета.

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

Выражение может быть введено в строку Данные (Control Source) на одноименной вкладке в окне свойств элемента управления. При этом можно воспользоваться построителем выражений. Откройте свойства элемента и убедитесь, что выражение внесено в строку Данные (Control Source).

Вычисление итоговых значений для группы записей подчиненной формы может быть выполнено с помощью встроенных статистических функций только в области примечания подчиненной формы. Для подсчета общей стоимости договора создайте в этой области свободный элемент управления и запишите туда выражение, содержащее статистическую функцию подсчета суммарной стоимости товаров =Sum(КОЛ_ПОСТ*ЦЕНА). В качестве аргумента статистической функции нельзя использовать имена других вычисляемых элементов управления формы. Ссылаться можно только на имена полей, т. к. они являются источником данных.

Для отображения результата вычисления в главной форме создайте там вычисляемый элемент управления и запишите выражение:

=[ПЛАН ПОСТАВОК].Form]![Поле8]

Это выражение является ссылкой на элемент управления Поле8 в примечании подчиненной формы с именем ПЛАН ПОСТАВОК, содержащий общую стоимость товаров в договоре. Общий формат такой ссылки имеет вид:

=[Имя подчиненной формы].[Form]![Имя поля в подчиненной форме]

Чтобы элементы управления из области примечаний подчиненной формы не отображались при просмотре формы, установите в свойстве примечания Вывод на экран (Visible) значение Нет.

Перейдите в режим просмотра в форме и убедитесь, что результаты расчетов отображаются правильно.

Работа с документами

Форма ДОГОВОРЫ С ПОКУПАТЕЛЯМИ предназначена для ввода, просмотра, корректировки и удаления данных о договорах. В главной форме отображаются данные из одной записи таблицы ДОГОВОР,

дополненные данными из таблицы ПОКУПАТЕЛЬ. В подчиненной форме выводятся связанные с договором записи из таблицы ПОСТАВКА_ПЛАН. Эти записи дополнены данными из таблицы ТОВАР.

Чтобы начать работу с формой, выберите ее в области переходов и в контекстном меню выполните команду Открыть (Open).

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

При большом числе записей используйте команду поиска нужной записи. Для этого установите курсор на поле с номером договора и нажмите кнопку Найти (Find) в соответствующей группе вкладки

Главная (Home). В диалоговом окне Поиск и замена (Find and Replace)

задайте номер нужного договора. После нажатия в этом окне кнопки Найти далее (Find Next) в форме отобразятся данные о заданном договоре.

Внимание

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

Для просмотра договоров в порядке возрастания или убывания его номеров, установите курсор на поле с номером договора и нажмите кнопку Сортировка по возрастанию (Sort Ascending) или Сортировка по убыванию (Sort Descending) в группе Сортировка и фильтрация

(Sort & Filter) на вкладке ленты Главная (Home).

Рассмотрим ввод в базу данных нового документа "Договор". Для загрузки данных о новом договоре через форму ДОГОВОРЫ С ПОКУПАТЕЛЯМИ нажмите на нижней панели кнопок перехода по записям кнопку Новая запись (New (blank) record) . Текущей становится пустая запись источника главной формы — таблицы ДОГОВОР и пустая запись источника подчиненной формы — таблицы ПОСТАВКА_ПЛАН.

В главной форме заполните обязательные поля: номер договора (ключ таблицы ДОГОВОР) и код покупателя (поле связи с таблицей

ПОКУПАТЕЛЬ), а также поле даты, загружаемой в таблицу ДОГОВОР. Справочные поля из таблицы ПОКУПАТЕЛЬ автоматически отобразятся после ввода кода покупателя.

В Access 2007 с полем типа данных Дата/время (Date/Time)

связывается календарь. В форме при выборе поля с датой заключения договора справа от него отображается значок календаря. Выбранная в календаре дата вводится в поле ДАТА_ДОГ. Однако если для поля определена маска ввода, календарь недоступен для использования. Если маска ввода была задана в свойствах таблицы, она автоматически наследуется полем в форме. Если после создания формы удалить маску в поле таблицы, она сохранится в поле формы. Для удаления маски в поле формы откройте свойства поля и очистите соответствующую строку на вкладке Данные (Data).

Замечание

При наличии календаря сохраняется возможность ручного ввода даты в поле.

Сформированная запись автоматически сохранится в таблице ДОГОВОР при переходе в подчиненную форму.

Поле суммы по договору может быть рассчитано и введено в таблицу ДОГОВОР после ввода данных в подчиненной форме.

Замечание

Сохранить новую запись можно, выполнив команду Сохранить (Save) в группе Записи (Records) на вкладке ленты Главная (Home) или просто щелкнув мышью на области выделения записи.

Перейдите к формированию записей в подчиненной форме. В каждой новой записи введите значения обязательных полей — кода товара (ключевое), месяца поставки (ключевое), а также полей — минимальная партия поставки и количество. После ввода кода товара справочные данные — наименование, единица измерения и цена из таблицы ТОВАР — отобразятся автоматически. Сформированная запись сохранится в таблице ПОСТАВКА_ПЛАН при переходе к другой записи.

Если в строке подчиненной формы создано вычисляемое поле для расчета стоимости поставки по каждому товару, значение стоимости будет автоматически вычислено после заполнения полей цена и количество.

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

Замечание

Для расчета стоимостей с сохранением результата в соответствующих полях таблиц ПОСТАВКА_ПЛАН и ДОГОВОР должны быть подготовлены макросы или процедуры обработки событий на VBA.

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

Выборка документа по его идентификатору

Рассмотрим организацию выборки нужного договора по заданному номеру. Предусмотрим возможность ввода номера договора в диалоге с пользователем.

Для этого в источнике записей главной формы ДОГОВОРЫ С ПОКУПАТЕЛЯМИ — запросе на выборку из записей двух взаимосвязанных таблиц — в поле номера договора НОМ_ДОГ определим параметр запроса [Номер договора] (рис. 44). Представленное на рисунке окно построителя запросов открывается при щелчке на соответствующем значке в строке свойства формы Источник записей (Record Source).

Рис. 44. Источник записей главной формы ДОГОВОРЫ С ПОКУПАТЕЛЯМИ

Теперь при открытии формы будет выводиться диалоговое окно (рис. 45) для ввода значения параметра запроса (номер договора).

Рис. 45. Диалоговое окно ввода значения параметра запроса

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

Чтобы задать новое условие отбора — значение параметра, не открывая форму заново, можно использовать команду Изменить фильтр (Filter By Form), а затем Применить фильтр (Toggle Filter) из списка кнопки

Дополнительно, размещенной в группе Сортировка и фильтр (Sort & Filter) на вкладке ленты Главная (Home). Тем не менее, остается еще необходимость помнить номера договоров.

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

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

Создадим пустую форму (без источника записей), воспользовавшись командой Конструктор форм (Form Design) в группе Формы (Forms)

на вкладке ленты Создание (Create), и присвоим ей имя Выборка договоров. Создадим в форме, открытой в режиме конструктора, с помощью мастера элемент управления — поле со списком. Выберем в качестве источника формирования значений списка таблицу ДОГОВОР и ее поле — номер договора. Полю со списком в его свойствах дадим имя, совпадающее с названием параметра запроса — Номер договора (рис. 61). В надписи поля запишем обращение к пользователю "Введите номер договора". Перетащим из окна базы данных форму ДОГОВОРЫ С ПОКУПАТЕЛЯМИ в область данных формы Выборка договоров. Полученная составная форма в режиме конструктора приведена на рис. 46.

Рис. 46. Форма для выборки договора по задаваемому в диалоге номеру в режиме конструктора

Удалите надпись встроенной формы ДОГОВОРЫ С ПОКУПАТЕЛЯМИ, в свойствах макета формы Выборка договоров

Область выделения (Record Selectors), Кнопки перехода (Navigation Buttons), Полосы прокрутки (Scroll Bars) выберите значение Нет.

В режиме формы при выборе из списка номера нужного договора он отобразится во встроенной форме ДОГОВОРЫ С ПОКУПАТЕЛЯМИ

(рис. 47).

Рис. 47. Интерфейс, обеспечивающий выборку нужного договора в поле со списком

Выборка документа по диапазону дат

Для формы с именем ДОГОВОРЫ С ПКУПАТЕЛЯМИ предусмотрим возможность ввода пользователем диапазона дат заключения договоров и выборки соответствующих договоров. Для этого подготовим интерфейс, обеспечивающий выборку документов по диапазону дат, по аналогии с подготовкой интерфейса, рассмотренной в предыдущем примере.

В запросе — источнике записей главной формы (см. рис. 44) удалим ранее заданный параметр запроса [Номер договора] и зададим в поле даты заключения договора ДАТА_ДОГ два параметра запроса. Параметры определим в выражении Between [ДатаНачальная] And [ДатаКонечная], записанном в условии отбора.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]