Главная страница

Формы


Скачать 2.21 Mb.
НазваниеФормы
Дата16.10.2022
Размер2.21 Mb.
Формат файлаdocx
Имя файла3_3_Formy_3.docx
ТипЛекции
#736755
страница9 из 11
1   2   3   4   5   6   7   8   9   10   11

Доработка интерфейса


Чтобы подготовить более удобный интерфейс для работы с документом "Дого- вор", соответствующий макету формы, отредактируйте созданную мастером форму средствами конструктора.

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

В основной форме переместите и отредактируйте поля, как показано на рис. 5.46.

Уточните текст надписей полей, шрифт и размеры полей и надписей.
Чтобы увеличить рабочее пространство, уберите с экрана область переходов, щелкнув на кнопке Открыть/закрыть границу области переходов (Shutter Bar Open/Close Button) в ее правом верхнем углу. Для редактирования внешнего вида элементов формы переключайтесь в режим макета, т. к. в этом режиме можно сразу видеть результаты выполнения многих операций.

Учтите, что все элементы управления основной формы включены в один макет. Для перемещения макета выделите его, щелкнув в левом верхнем углу области ма- кета или выполните команду Выбрать макет (Select Layout) на вкладке ленты Упорядочить (Arrange) в группе Строки и столбцы (Rows & Colomns), после это- го макет можно перетащить в нужное место. Изменение отдельного элемента тре- бует удаления его из макета. Выделите нужный элемент вместе с надписью и вы- полните команду Макет | Удалить макет (Layout | Remove Layout) в контекстном меню. Для образования нового макета из удаленных элементов управления следует выделить их и выполнить команду В столбик (Stacked) или Табличный (Tabular).

Для придания элементам одинакового вида удобно копировать форматирование одного элемента и применять его к другим элементам. Это позволяет сделать команда Формат по образцу (Format Painter), размещенная на вкладках Главная (Home) или Формат (Format) в группе Шрифт (Font). Если на значке команды Формат по образцу щелкнуть дважды, скопированный формат можно применять несколько раз. Закончив выполнение форматирования по образцу, повторно щелк- ните на значке команды.

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

Удалите надпись подчиненной формы. Для этого выделите надпись и сначала удалите ее из макета, выполнив в контекстном меню команду Макет | Удалить макет (Layout | Remove Layout), затем в контекстном меню выполните команду Удалить (Delete).

Просмотрите источник записей основной формы. Для этого откройте свойства формы, выполнив соответствующую команду в контекстном меню. Открыть свой- ства формы также можно, выбрав в окне свойств в списке поля Тип выделенного элемента (Selection Type) строку Форма (Form). На вкладке Данные (Data) в стро- ке Источник записей (Record Source) представлена инструкция SQL, записанная мастером в качестве источника записей основной формы. Чтобы просмотреть ин- струкцию SQL в режиме конструктора запросов, нажмите значок построителя в конце строки. Соответствующий запрос в режиме конструктора показан на рис. 5.43.

Аналогичным образом просмотрите, какая таблица является источником запи- сей подчиненной формы. Инструкция SQL в режиме конструктора запросов, яв- ляющаяся источником записей подчиненной формы, показана на рис. 5.44.

Если в основную или подчиненную форму необходимо добавить поля, пред- ставленные в источнике записей, установите курсор на соответствующей форме,
нажмите кнопку Добавить поля (Add Existing Fields) на вкладке ленты Конструк- тор (Design) и из открывшегося списка перетащите нужное поле в форму. В список полей включены только те поля таблиц, которые были выбраны в запросе.




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



Рис. 5.44. Запрос — источник записей подчиненной формы ПЛАН ПОСТАВОК
Для добавления недостающих полей в источник записей основной или подчи- ненной формы можно изменить просмотренные запросы (см. рис. 5.43 и 5.44).

Однако проще щелкнуть в области Список полей (Field List) на значке Пока- зать все таблицы (Show All tables). В разделе Поля доступные в данном пред- ставлении (Fields available for this view) отобразятся все поля таблиц, включенных в подсхему данных формы (основной или подчиненной). Кроме того, в других раз- делах отобразятся остальные таблицы базы данных. Перетаскивая поля из любого
раздела области, вы автоматически меняете запрос источника записей формы. Для отображения этого запроса в графическом виде также можно не открывать окно свойств и затем построитель запросов. Достаточно выполнить команду Изменение источника записи (Edit Record Source) в контекстном меню области Список по- лей (Field List).

Проверьте связь подчиненной формы с главной. Для этого откройте свойства подчиненной формы, предварительно выделив ее рамку. В свойствах Подчинен- ная форма/отчет (Subform/Subreport) на вкладке Данные (Data) в строке Подчи- ненные поля (Link Child Fields) указано имя поля связи НОМ_ДОГ из подчинен- ной таблицы ПОСТАВКА_ПЛАН, в строке Основные поля (Link Master Fields) указано имя поля связи, в данном примере тоже НОМ_ДОГ из главной таблицы ДОГОВОР.

Создание кнопок

Дополните форму новыми элементами управления — кнопками. Создайте в об- ласти заголовка основной формы кнопки для перехода к следующему и предыду- щему договору (т. е. для перехода к другой записи источника основной формы таб- лицы ДОГОВОР).

В режим конструктора нажмите в группе Элементы управления (Controls) кнопку Использовать мастера (Use Control Wizards), а затем Кнопка (Button). Не отпуская курсора, перенесите кнопку в нужное место и вычертите ее рамку. Запус- тится мастер создания кнопок (Command Button Wizard) (рис. 5.45).




Рис. 5.45. Окно мастера создания кнопок
В окне мастера создания кнопок в группе Категории (Categories) выберите строку Переходы по записям (Record Navigation), в группе Действия (Actions) —
действие, которое должно выполняться при нажатии кнопки: Предыдущая запись (Go to Previous Record). В следующем диалоговом окне мастера выберите вид кнопки с текстом на ней Текст (Text) или с рисунком Рисунок (Picture) и выберите рисунок из списка. После завершения работы мастера кнопка с выбранным текстом или рисунком встраивается в форму. Аналогичные действия произведите для встраивания кнопки перехода к следующей записи, выбрав соответственно в облас- ти Действия (Actions) — Следующая запись (Go to Next Record). Размер и надпи- си кнопок редактируются, как и другие элементы.

Создайте кнопку для закрытия формы.

Отредактированная форма в режиме просмотра приведена на рис. 5.46.




Рис. 5.46. Отредактированная форма документа "Договор" в режиме просмотра

Ограничение доступа к данным таблиц базы

Поля таблиц справочной информации ПОКУПАТЕЛЬ и ТОВАР должны ис- пользоваться только для отображения. Поэтому целесообразно защитить их от не- произвольных изменений при работе с формой. В основной форме такая защита нужна для полей таблицы ПОКУПАТЕЛЬ (НАИМ_ПОК, ИНН, АДРЕС и др.), в подчиненной форме для полей таблицы ТОВАР (НАИМ_ТОВ, ЦЕНА, ЕИ).

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

Создание полей со списком

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

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

Создайте с помощью мастера поле со списком для ввода в таблицу ДОГОВОР только тех значений кода покупателя КОД_ПОК (рис. 5.47), которые есть в табли- це ПОКУПАТЕЛЬ. Так как сразу после ввода кода покупателя через поле со спи- ском в форме отобразятся все реквизиты покупателя, проверьте соответствие кода и наименования покупателя в документе "Договор".



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

В открытой в режиме макета или конструктора форме нажмите в группе Эле- менты управления (Controls) кнопку Использовать мастера (Use Control Wizards), а затем кнопку Поле со списком (Combo Box), переместите курсор в нужное ме- сто, нажмите кнопку мыши и, не отпуская ее, вычертите рамку элемента. После отпускания кнопки мыши запустится мастер и откроется диалоговое окно Созда- ние полей со списком (Combo Box Wizard).

В окне мастера определите способ, которым список поля получает свои значе- ния. Для формирования списка из связанной таблицы выберите — Объект "поле со списком" получит значения из другой таблицы или другого запроса (I want the combo box to look up the values in a table or query) (рис. 5.48).




Рис. 5.48. Выбор способа формирования списка
В следующем окне выберите таблицу ПОКУПАТЕЛЬ, которая будет постав- лять значения в список поля (рис. 5.49).

Затем выберите ключевое поле КОД_ПОК, а также поле НАИМ_ПОК для ото- бражения кода и наименования в строках списка (рис. 5.50).

В следующем окне мастера, если необходимо, выберите порядок сортировки и далее настройте ширину столбцов списка и вариант с отображением ключевого столбца (рис. 5.51).

Далее выберите поле списка КОД_ПОК, являющееся ключом связанной табли- цы ПОКУПАТЕЛЬ. Из этого поля будет выбираться значение для ввода в поле формы и сохранения его в записи таблицы ДОГОВОР (рис. 5.52).

Рис. 5.49. Выбор источника данных для формирования списка


Рис. 5.50. Выбор полей для формирования записи списка

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

Рис. 5.51. Окно для оформления столбцов списка


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

Далее введите надпись поля со списком — Код покупателя (рис. 5.54). Нажмите Готово (Finish). В результате будет создано новое поле со списком

КОД_ПОК. Замените поле с кодом покупателя на созданное мастером поле со спи-
ском. Использование поля со списком покупателей в режиме формы иллюстрирует рис. 5.47. Если потребуется настройка ширины столбцов списка, в окне свойств поля со списком в строках Ширина списка (List Width) и Ширина столбцов (Column Width) задайте подходящие значения.




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




Рис. 5.54. Определение подписи поля со списком
Создание поля со списком в режиме конструктора

Мастер создает новое поле со списком. В режиме конструктора можно преоб- разовать существующее поле в поле со списком.

В подчиненной форме ПЛАН ПОСТАВОК преобразуйте поле КОД_ТОВ (код товара) в поле со списком. Для этого выберите в контекстном меню этого поля команду Преобразовать элемент в (Change To) и далее строку — Поле со спи- ском (Combo Box).

Затем откройте свойства поля (рис. 5.55). На вкладке Данные (Data) в строке Данные (Control Source) будет указано поле, которое будет заполняться в форме — КОД_ТОВ. Выбором в строке Источник строк (Row Source) таблицы ТОВАР ука- зывается, что из ее записей надо формировать список. В строке Тип источника строк (Row Source Type) автоматически появляется Таблица или запрос (Table/Query), а в строке Присоединенный столбец (Bound Column) — 1. Таким образом, чтобы сформировать поле со списком, может оказаться достаточным пре- образовать обычное поле и выбрать его источник строк.

ВНИМАНИЕ!

Список поля будет включать значения первого указанного в структуре таблицы столбца. В приведенном примере таким полем является поле КОД_ТОВ (код товара) — ключ таб- лицы ТОВАР, поэтому список поля будет построен правильно. Если же на первом месте в структуре таблицы окажется другое поле, список будет содержать неверные значения. В таком случае нельзя в качестве источника строк выбирать таблицу. Нужно с помощью построителя запросов или вручную записать в качестве источника строк инструкцию SQL, выбирающую из таблицы нужное поле, в данном случае поле с кодом товара.





Рис. 5.55. Определение свойств создаваемого поля со списком без использования мастера


Если в списке необходимо отображать два столбца — код товара и наименова- ние, в конце строки свойства Источник строк (Row Source) щелкните на кнопке Построитель запросов (Query Builder). Добавьте в бланк запроса таблицу ТОВАР и включите в запрос ее поля КОД_ТОВ и НАИМ_ТОВ. Закройте окно построителя выражений, подтвердив сохранение инструкции SQL созданного запроса и обнов- ление свойства. Теперь в строке Источник строк (Row Source) будет записана ин- струкция SQL:

SELECT ТОВАР.КОД_ТОВ, ТОВАР.НАИМ_ТОВ FROM ТОВАР;

В окне свойств поля на вкладке Макет (Format) замените значение свойства поля Число столбцов (Column Count) с 1 на 2. Кроме того, установите ширину столбцов и ширину списка, указав, например, 2 см.;5 см., и 7 см. соответственно.

Для создания нового поля со списком без помощи мастера надо перетащить в форму элемент управления Поле со списком (Combo Box), когда кнопка Исполь- зовать мастера (Use Control Wizards) не активна.

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

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

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

ЗАМЕЧАНИЕ

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

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

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

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

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

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

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

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

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

1   2   3   4   5   6   7   8   9   10   11


написать администратору сайта