Глава 6
Рис. 6.14.
Окно для оформления столбцов списка
Рис. 6.15.
Окно выбора поля источника значений для поля формы
Далее введите надпись поля со списком —
Код покупателя
(рис. 6.17).
Нажмите кнопку
Готово
(Finish). В результате будет создано новое поле со спи-
ском
КОД_ПОК
. Замените поле с кодом покупателя на созданное мастером поле со
списком. Использование поля со списком покупателей в режиме формы иллюстри-
рует рис. 6.10. Если потребуется настройка ширины столбцов списка, в окне
свойств поля со списком в строках
Ширина списка
(List Width) и
Ширина
столб-
цов
(Column Width) задайте подходящие значения.
Разработка интерфейса для ввода, просмотра и корректировки документов
273
Рис. 6.16.
Выбор поля формы, в которое вводится значение из списка
Рис. 6.17.
Определение подписи поля со списком
Создание поля со списком в режиме конструктора
Мастер создает новое поле со списком. В режиме конструктора можно преобразо-
вать существующее поле в поле со списком.
В подчиненной форме ПЛАН ПОСТАВОК преобразуйте поле
КОД_ТОВ
(код товара)
в поле со списком. Для этого выберите в контекстном меню этого поля команду
Преобразовать элемент в
(Change To) и далее строку —
Поле со списком
(Combo
Box).
274
Глава 6
Затем откройте свойства поля (рис. 6.18). На вкладке
Данные
(Data) в строке
Дан-
ные
(Control Source) будет указано поле, которое будет заполняться в форме —
КОД_ТОВ
. Выбором в строке
Источник строк
(Row Source) таблицы ТОВАР указы-
вается, что из ее записей надо формировать список. В строке
Тип источника строк
(Row Source Type) автоматически появляется
Таблица или запрос
(Table/Query), а
в строке
Присоединенный столбец
(Bound Column) — 1. Таким образом, чтобы
сформировать поле со списком, может оказаться достаточным преобразовать обыч-
ное поле и выбрать его источник строк.
О
БРАТИТЕ ВНИМАНИЕ
Список поля будет включать значения первого указанного в структуре таблицы столб-
ца. В приведенном примере таким полем является поле
КОД_ТОВ
(код товара) — ключ
таблицы ТОВАР, поэтому список поля будет построен правильно. Если же на первом
месте в структуре таблицы окажется другое поле, список будет содержать неверные
значения. В таком случае нельзя в качестве источника строк выбирать таблицу. Нужно
с помощью построителя запросов или вручную записать в качестве источника строк
инструкцию SQL, выбирающую из таблицы нужное поле — в данном случае поле с ко-
дом товара.
Рис. 6.18.
Определение свойств
создаваемого поля со списком
без использования мастера
Если в списке необходимо отображать два столбца — код товара и наименование,
в конце строки свойства
Источник строк
(Row Source) щелкните на кнопке
Построитель запросов
(Query Builder). Добавьте в бланк запроса таблицу ТОВАР
и включите в запрос ее поля
КОД_ТОВ
и
НАИМ_ТОВ
. Закройте окно построителя выра-
жений, подтвердив сохранение инструкции SQL созданного запроса и обновление
свойства. Теперь в строке
Источник строк
будет записана инструкция SQL:
SELECT ТОВАР.КОД_ТОВ, ТОВАР.НАИМ_ТОВ FROM ТОВАР;
Разработка интерфейса для ввода, просмотра и корректировки документов
275
В окне свойств поля на вкладке
Макет
(Format) замените значение свойства поля
Число
столбцов
(Column Count) с
1
на
2
. Кроме того, установите ширину столбцов
и ширину списка, указав, например, 2 см, 5 см и 7 см соответственно.
Для создания нового поля со списком без помощи мастера надо перетащить в фор-
му элемент управления
Поле со списком
(Combo Box), когда кнопка
Использо-
вать
мастера
(Use Control Wizards) не активна.
Вычисления в документе
Вычисления в форме могут осуществляться как в каждой записи формы, так и для
группы записей, при формировании итоговых величин. Расчетные величины только
отображаются в вычисляемых полях формы. Для сохранения результатов в таблице
базы данных может быть использован макрос или процедура на VBA.
Рассчитайте в форме ДОГОВОРЫ С ПОКУПАТЕЛЯМИ значения стоимости зака-
занного товара в каждой строке подчиненной формы, а также общую стоимость
заказанного в договоре товара. Разместите соответствующие вычисляемые поля,
как предусмотрено в макете формы.
З
АМЕЧАНИЕ
Если в форме отображается поле
СУММА_ПОСТ
из таблицы ПОСТАВКА_ПЛАН, помес-
тите вычисляемое поле рядом. Сравните введенные в поле
СУММА_ПОСТ
данные с рас-
четными и при необходимости подправьте. Если поле
СУММА_ПОСТ
пусто, скопируйте
в него рассчитанное значение, и оно сохранится в поле таблицы.
Чтобы произвести вычисления на основе данных одной записи, создайте в подчи-
ненной форме вычисляемое поле и запишите туда выражение
=КОЛ_ПОСТ*ЦЕНА
. Для
этого откройте подчиненную форму в режиме макета и, нажав на вкладке ленты
Конструктор
(Design) в группе
Элементы управления
(Controls) кнопку
Поле
(Text Box), поместите этот свободный элемент управления, не связанный с источ-
ником данных, в конце строки данных. Проследите, чтобы при вставке элемента в
конец строки данных рядом с существующим полем появилась желтая вертикаль-
ная линия. Это позволит вставить новый столбец непосредственно в макет формы.
Откройте свойства нового поля и в строку
Данные
(Control Source) на одноимен-
ной вкладке запишите выражение. При этом можно воспользоваться построителем
выражений. Можно переключиться в режим конструктора и ввести выражение не-
посредственно в элемент управления
Свободный
(Unbound). Выражение должно
начинаться со знака равенства. В качестве операндов выражения чаще всего ис-
пользуются имена полей, константы, а в качестве операторов — знаки арифметиче-
ских операций.
Вычисление итоговых значений для группы записей подчиненной формы может
быть выполнено с помощью встроенных статистических функций только в области
примечания подчиненной формы. Для подсчета общей стоимости договора создай-
те в этой области свободный элемент управления и запишите туда выражение, со-
держащее статистическую функцию подсчета суммарной стоимости товаров
=Sum(КОЛ_ПОСТ*ЦЕНА)
. В качестве аргумента статистической функции нельзя исполь-
276
Глава 6
зовать имена других вычисляемых элементов управления формы. Ссылаться можно
только на имена полей, т. к. они являются источником данных.
Для отображения результата вычисления в основной форме создайте там вычис-
ляемый элемент управления и запишите выражение
=[ПЛАН ПОСТАВОК].Form![Поле8]
Это выражение является ссылкой на элемент управления
Поле8
в подчиненной
форме, содержащий общую стоимость товаров. Общий формат такой ссылки при-
веден выше.
Чтобы элементы управления из области примечаний подчиненной формы не ото-
бражались при просмотре формы, установите в свойстве примечания
Вывод
на эк-
ран
(Visible) значение
Нет
.
Перейдите в режим просмотра в форме и убедитесь, что результаты расчетов ото-
бражаются правильно.
Работа с документами
Форма ДОГОВОРЫ С ПОКУПАТЕЛЯМИ
предназначена для ввода, просмотра,
корректировки и удаления данных о договорах. В основной форме отображаются
данные из одной записи таблицы ДОГОВОР, дополненные данными из таблицы
ПОКУПАТЕЛЬ. В подчиненной форме выводятся связанные с договором записи из
таблицы ПОСТАВКА_ПЛАН. Эти записи дополнены данными из таблицы ТОВАР.
Чтобы начать работу с формой, выберите ее в области навигации и в контекстном
меню выполните команду
Открыть
(Open).
Для просмотра и корректировки данных конкретного договора сделайте нужную
запись текущей. Для этого воспользуйтесь созданными в форме кнопками
Преды-
дущий договор
и
Следующий
договор
или стандартными кнопками перехода по
записям, предусмотренными как для основной, так и для подчиненной формы.
При большом числе записей используйте команду поиска нужной записи. Для этого
установите курсор на поле с номером договора и нажмите кнопку
Найти
(Find)
в соответствующей группе вкладки
Главная
(Home). В диалоговом окне
Поиск и
замена
(Find and Replace) задайте номер нужного договора. После нажатия в этом
окне кнопки
Найти далее
(Find Next) в форме отобразятся данные о заданном до-
говоре.
В
НИМАНИЕ
!
Грубой ошибкой является попытка перейти к нужной записи путем ввода нового зна-
чения в поле идентификации текущей записи — например, нового значения номера
договора в форме ДОГОВОР. Такие действия могут привести лишь к изменению зна-
чения идентификатора в текущей записи.
Для просмотра договоров в порядке возрастания или убывания его номеров устано-
вите курсор на поле с номером договора и нажмите кнопку
Сортировка по воз-
растанию
(Sort Ascending)
или
Сортировка по убыванию
(Sort Descending)
Разработка интерфейса для ввода, просмотра и корректировки документов
277
в группе
Сортировка и фильтрация
(Sort & Filter) на вкладке ленты
Главная
(Home).
Рассмотрим ввод в базу данных нового документа "Договор". Для загрузки данных
о новом договоре через форму ДОГОВОРЫ С ПОКУПАТЕЛЯМИ нажмите на
нижней панели кнопок перехода по записям кнопку
Новая
запись
(New (blank)
record)
. Текущей становится пустая запись источника основной формы — таб-
лицы ДОГОВОР и пустая запись источника подчиненной формы — таблицы
ПОСТАВКА_ПЛАН.
В главной форме заполните обязательные поля: номер договора (ключ таблицы
ДОГОВОР) и код покупателя (поле связи с таблицей ПОКУПАТЕЛЬ), а также поле
даты, загружаемой в таблицу ДОГОВОР. Справочные поля из таблицы
ПОКУПАТЕЛЬ автоматически отобразятся после ввода кода покупателя.
С полем типа данных
Дата/время
(Date/Time) связывается календарь. В форме при
выборе поля с датой заключения договора справа от него отображается значок ка-
лендаря. Выбранная в календаре дата вводится в поле
ДАТА_ДОГ
. Однако если для
поля определена маска ввода, календарь недоступен для использования. Если маска
ввода была задана в свойствах таблицы, она автоматически наследуется полем в
форме. Если после создания формы удалить маску в поле таблицы, она сохранится
в поле формы. Для удаления маски в поле формы откройте свойства поля и очисти-
те соответствующую строку на вкладке
Данные
(Data).
З
АМЕЧАНИЕ
При наличии календаря сохраняется возможность ручного ввода даты в поле.
Сформированная запись автоматически сохранится в таблице ДОГОВОР при пере-
ходе в подчиненную форму.
Поле суммы по договору может быть рассчитано и введено в таблицу ДОГОВОР
после ввода данных в подчиненной форме.
З
АМЕЧАНИЕ
Сохранить новую запись можно, выполнив команду
Сохранить
(Save) в группе
Запи-
си
(Records) на вкладке ленты
Главная
(Home) или просто щелкнув мышью на облас-
ти выделения записи.
Перейдите к формированию записей в подчиненной форме. В каждой новой записи
введите значения обязательных полей — кода товара (ключевое), месяца поставки
(ключевое), а также полей — минимальная партия поставки и количество. После
ввода кода товара справочные данные — наименование, единица измерения и цена
из таблицы ТОВАР — отобразятся автоматически. Сформированная запись сохра-
нится в таблице ПОСТАВКА_ПЛАН при переходе к другой записи.
Если в строке подчиненной формы создано вычисляемое поле для расчета стоимо-
сти поставки по каждому товару, значение стоимости будет автоматически вычис-
лено после заполнения полей Цена и Количество.
Если в примечании подчиненной формы создано вычисляемое поле для расчета
общей стоимости поставки, и на него сделана ссылка в вычисляемом поле основной
278
Глава 6
части формы, после сохранения записи в подчиненной форме в главной форме ото-
бразится общая сумма по договору.
З
АМЕЧАНИЕ
Для расчета стоимостей с сохранением результата в соответствующих полях таблиц
ПОСТАВКА_ПЛАН и ДОГОВОР должны быть подготовлены процедуры обработки со-
бытий на VBA.
Рассмотренные ранее способы перехода по записям формы не обеспечивают поль-
зователя достаточно удобным интерфейсом для выборки нужных документов. При
работе с формами — электронными аналогами документов — пользователю часто
необходимо иметь средства, обеспечивающие быстрый поиск нужного документа
по заданным условиям отбора. Например, могут задаваться условия отбора для вы-
борки документа по его номеру или по заданному временному диапазону дат.
В общем случае целесообразно предусмотреть выборку по заданному идентифика-
тору объекта (товара, покупателя, склада, договора и т. п.) или по диапазону коли-
чественных показателей.
Выборка документа по его идентификатору
Рассмотрим организацию выборки нужного договора по заданному номеру. Преду-
смотрим возможность ввода номера договора в диалоге с пользователем.
Для этого в источнике записей главной формы ДОГОВОРЫ С ПОКУПА-
ТЕЛЯМИ — запросе на выборку из записей двух взаимосвязанных таблиц — в по-
ле номера договора
НОМ_ДОГ
определим параметр запроса
[Номер договора]
(рис. 6.19). Представленное на рисунке окно построителя запросов открывается при
Рис. 6.19.
Источник записей главной формы ДОГОВОРЫ С ПОКУПАТЕЛЯМИ
Разработка интерфейса для ввода, просмотра и корректировки документов
279
щелчке на соответствующем значке в строке свойства формы
Источник записей
(Record Source).
Теперь при открытии формы будет выводиться диалоговое окно (рис. 6.20) для
ввода значения параметра запроса (
Номер договора
).
Рис. 6.20.
Диалоговое окно ввода значения параметра запроса
После ввода нужного номера договора в форме будут доступны данные соответст-
вующего договора. Однако для перехода к просмотру другого договора потребует-
ся заново открыть форму.
Для удобства пользователя желательно создание такого интерфейса, который обес-
печит возможность выбора документа при постоянно открытой форме. Для этих
Рис. 6.21.
Форма для выборки договора по выбираемому из списка номеру в режиме конструктора
280
Глава 6
целей может быть подготовлена форма интерфейса, в которую встраивается форма
документа. Форма интерфейса должна включать элемент управления, который
обеспечивает ввод значения параметра запроса.
Создадим пустую форму (без источника записей), воспользовавшись командой
Конструктор
форм
(Form Design) в группе
Формы
(Forms) на вкладке ленты
Соз-
дание
(Create), и присвоим ей имя
Выборка договоров
. Создадим в форме, открытой
в режиме конструктора, с помощью мастера элемент управления — поле со спи-
ском. Выберем в качестве источника формирования значений списка таблицу
ДОГОВОР и ее поле — номер договора. Полю со списком в его свойствах дадим
имя, совпадающее с названием параметра запроса, —
Номер договора
(см. рис. 6.19).
В надписи поля запишем обращение к пользователю:
Введите номер договора
. Пе-
ретащим из окна базы данных форму ДОГОВОРЫ С ПОКУПАТЕЛЯМИ в область
данных формы
Выборка договоров
. Полученная составная форма в режиме конст-
руктора приведена на рис. 6.21.
Удалите надпись встроенной формы ДОГОВОРЫ С ПОКУПАТЕЛЯМИ. В свойст-
вах макета формы
Выборка договоров
Область выделения
(Record Selectors),
Поло-
сы прокрутки
(Scroll Bars),
Кнопки перехода
(Navigation Buttons)
выберите зна-
чение
Нет
.
В режиме формы при выборе из списка номера нужного договора он отобразится
во встроенной форме ДОГОВОРЫ С ПОКУПАТЕЛЯМИ (рис. 6.22).
Рис. 6.22.
Интерфейс, обеспечивающий выборку нужного договора в поле со списком
Разработка интерфейса для ввода, просмотра и корректировки документов
281
Выборка документа по диапазону дат
Для формы с именем ДОГОВОРЫ С ПОКУПАТЕЛЯМИ предусмотрим возмож-
ность ввода пользователем диапазона дат заключения договоров и выборки соот-
ветствующих договоров. Для этого подготовим интерфейс, обеспечивающий вы-
борку документов по диапазону дат, по аналогии с подготовкой интерфейса, рас-
смотренной в предыдущем примере.
В запросе — источнике записей главной формы (см. рис. 6.19) удалим ранее задан-
ный параметр запроса
[Номер договора]
и зададим в поле даты заключения догово-
ра
ДАТА_ДОГ
два параметра запроса. Параметры определим в выражении
Between
[ДатаНачальная] And [ДатаКонечная]
, записанном в условии отбора.
Как в предыдущем примере, создадим форму без источника записей, в которой
разместим два свободных поля, не связанных с каким-либо источником данных.
В свойствах одному полю дадим имя параметра
ДатаНачальная
, второму —
Да-
таКонечная
. Надписи полей изменим на
Дата начала периода
и
Дата окончания
периода
соответственно. Перетащим из окна базы данных форму ДОГОВОРЫ
С ПОКУПАТЕЛЯМИ в область данных формы.
Рис. 6.23.
Интерфейс, обеспечивающий выборку документов по диапазону дат
282
Глава 6
Для связи календаря с полями ввода дат диапазона выберите для каждого поля
в свойстве
Формат поля
(Format) на вкладке
Макет
(Format) нужный формат, на-
пример
Краткий формат даты
(Short Date).
В режиме формы при вводе дат начала и конца диапазона во встроенной форме
отобразятся выбранные договоры (рис. 6.23).
Выборка документов с помощью фильтрации
Используйте фильтры для выборки различных сведений из договоров. В открытой
для работы с договорами форме установите курсор на поле с номером договора.
Щелкните на кнопке
Фильтр
(Filter) в группе
Сортировка и фильтр
(Sort & Filter)
ленты
Главная
(Home). В открывшемся окне откройте список
Текстовые фильт-
ры
(Text Filters). Для поля доступны эти фильтры, потому что поле имеет тексто-
вый тип данных. В списке щелкните на опции
Содержит
(Contains) — откроется
настраиваемый фильтр (рис. 6.24). Введите нужный номер договора и нажмите
кнопку
ОK
. В форме отобразится выбранный договор. Открыть список
Текстовые
фильтры
можно также воспользовавшись контекстным меню поля.
Рис. 6.24.
Диалоговое окно задания условия отбора для фильтра
Чтобы снять фильтр с формы, используйте команду контекстного меню поля
Снять фильтр с Номер договора
(Clear filter from НОМ_ДОГ). Если необходимо,
задайте новые условия отбора по полю с номером договора.
Чтобы отобрать договоры за заданный период, в контекстном меню поля с датой
заключения договора откройте
Фильтры
дат
(Date Filters). Список фильтров для
дат позволяет осуществить выборку по самым разным критериям (рис. 6.25).
О
БРАТИТЕ ВНИМАНИЕ
Итоговые данные по договору подсчитываются только для выбранных в результате
фильтрации данных.
Для отбора в договорах сведений только о заданном товаре используйте текстовый
фильтр по полям с наименованием товара. Для отбора заданного товара, заказанно-
го в заданном месяце, не снимая фильтра с наименования товара, выполните
фильтрацию по полю
СРОК_ПОСТ
(срок поставки). Числовой фильтр по полю
СРОК_ПОСТ
позволит отобрать данные в любом заданном интервале. При использо-
вании фильтров легко проверить запланированные поставки заданного товара в до-
говорах и, если необходимо, откорректировать или дополнить их новыми строками.
Таким образом, использование фильтра позволит просматривать данные в различ-
ном представлении.
Разработка интерфейса для ввода, просмотра и корректировки документов
283
Рис. 6.25.
Фильтры для выборки
записей по полю с типом данных
Дата/Время
Задание 6.1. Создание интерфейса для работы с документом "Накладная"
Создайте многотабличную форму для ввода и корректировки в базе данных
накладных на отгрузку товаров.
Подсхема для такой формы приведена на рис. 6.26. В результате загрузки в базу
данных по накладным должны создаваться только записи таблиц НАКЛАДНАЯ
и ОТГРУЗКА.
1.
Осуществите проектирование интерфейса для загрузки данных документа
НАКЛАДНАЯ:
•
определите общую структуру составной формы в соответствии с подсхемой
данных для формы, приведенной на рис. 6.26;
•
разместите реквизиты в проекте формы так, чтобы обеспечить удобный ввод
данных с документа, а также отображение справочной информации по дого-
вору, покупателю и товару.
2.
Выполните конструирование экранной формы, через которую будет осуще-
ствляться ввод, добавление и изменение записей таблиц НАКЛАДНАЯ и
ОТГРУЗКА.
3.
Загрузите данные с документа НАКЛАДНАЯ
через построенную форму.
284
Do'stlaringiz bilan baham: |