Формы
Скачать 2.21 Mb.
|
Создание и редактирование формы в режиме конструктораСредствами конструктора форм можно создать любую форму с нуля. Ранее раз- работанную любыми средствами форму можно в любой момент отредактировать в режиме конструктора. При создании и редактировании формы может выполняться: определение источника данных формы, добавление новых полей и надписей, вклю- чение полей со списком, создание кнопок, добавление подчиненных форм, внедрение объектов из других приложений, например рисунков, диаграмм и т. п. Наиболее точная и полная настройка структуры и внешнего вида всех разделов и элементов формы производится в режиме конструктора. Ряд элементов управле- ния доступен только в режиме конструктора. Создание новой формы конструкторомКонструирование формы начинается выполнением команды Конструктор форм (Form Design) на вкладке ленты Создать (Create) в группе Формы (Forms). В результате выполнения команды открывается окно пустой формы в режиме кон- структора с именем формы по умолчанию — Форма1 (Form1). В пустой форме конструктора представлен только один раздел — Область данных (Detail). Начать конструирование формы следует с определения ее источника данных. Источник данных может быть создан различными способами. Можно открыть свойства формы и на вкладке Данные (Data) в строке Источник записей (Record Source) открыть список и выбрать таблицу или запрос. Здесь же, воспользовавшись услугами построителя запросов, можно создать запрос в режиме конструктора, а соответствующая инструкция SQL будет записана в строку свойства. Наиболее простым способом определения источника записей является использование облас- ти Список полей (Field List), в которой отображаются поля всех таблицы базы данных. При перетаскивании нужных полей в форму автоматически строится за- прос на выборку — источник записей формы. Для отображения списка полей щелкните на кнопке Добавить поля (Add Existing Fields) на вкладке ленты Конст- руктор (Design) в группе Сервис (Tools ). Создайте форму для работы с накладными, в которой будет представлена ин- формация об отгруженных товарах. Очевидно, что такая форма должна строиться на основе главной таблицы НАКЛАДНАЯ с общими данными о накладных, и подчиненной таблицы ОТГРУЗКА со сведениями об отгруженных по накладным товарах. Соответственно должны быть построены две формы. Для создания главной формы достаточно перетащить поля из списка таблицы НАКЛАДНАЯ в нужное место области данных пустой формы. Как только вы пере- тащили первое поле в форму, в области списка полей появляется новый раздел По- ля, доступные в данном представлении (Fields Available for this View), в который перемещается таблица НАКЛАДНАЯ. Построенный на этой таблице запрос на вы- борку, называемый представлением, будет автоматически определен в качестве базового источника данных формы. Если необходимо дополнить запись таблицы НАКЛАДНАЯ более подробными сведениями о договоре и/или покупателе, пере- тащите в область данных недостающие поля соответствующих таблиц. Автомати- чески откорректируется источник данных формы. В результате перетаскивания поля в форме появляется элемент управления, в котором отобразится имя поля таблицы. В присоединенной надписи будет исполь- зовано значение из свойства поля Подпись (Caption), определенное при конструи- ровании таблицы. Добавление подчиненной формыДля добавления подчиненной формы в режиме конструктора воспользуйтесь элементом управления Подчиненная форма/отчет (Subform/Subreport) на вкладке ленты Конструктор (Design) и поместите его в нужном месте формы, растянув курсором до нужного размера. Чтобы подключился к работе мастер, в группе Эле- менты управления (Controls) должна быть включена кнопка Использовать мас- тера (Use Control Wizards). Мастер помогает включить в качестве подчиненной ранее созданную форму или построить новую на основе таблицы или запроса. В окне мастера выберите форму ОТГРУЗКА, построенную ранее с помощью команды Несколько элементов (Multiple Items) (рис. 5.30). В следующем окне мастера выберите из предложенных вариант связи главной и подчиненной форм: НОМ_НАКЛ (номер накладной), КОД_СК (код склада) (рис. 5.31). Проверьте правильность установленной связи в свойствах элемента Подчиненная форма/отчет (Subform/Subreport) на вкладке Данные (Data). Для установления связи источник данных встраиваемой формы должен содержать поля связи, хотя они могут и не отображаться в форме. В окне мастера подчиненных форм, хотя и предлагается выбор из имеющихся таблиц или запросов, отображаются только формы. При возможности переклю- читься в режим Имеющиеся таблицы или запросы (Use existing Tables and Queries) можно выбрать таблицу или запрос и поля, необходимые в подчиненной форме. Выбор таблицы или запроса приводит к созданию подчиненной формы, отображаемой в режиме таблицы. Макет элементов управления этой подчиненной формы — в столбик — приводит к установлению в свойстве Режим по умолча- нию (Default View) значения Одиночная форма (Single Form). Рис. 5.30. Окно мастера для включения формы в качестве подчиненной Рис. 5.31. Окно мастера для определения поля связи с подчиненной формой При изменении значения на Ленточные формы (Continuous Form) отобразятся все записи, но поля каждой из них будут представлены в столбик, а подписи полей будут повторяться в каждой записи. Это связано с тем, что макеты в столбик всегда содержатся внутри одного раздела формы. Очевидно, такое размещение полей не всегда удобно при работе с записями. Для получения многострочного отображения записей в подчиненной форме измените макет в столбик на табличный. Выделите все поля подчиненной формы (макет) и нажмите Табличный (Tabular) в группе Макет элемента управления (Control Layout) на вкладке ленты Упорядочить (Arrange). Поля разместятся в одну строку, а надписи переместятся в заголовок формы. Единственное, что после этого надо сделать, — сократить область данных. Удалите из подчиненной формы поля, повторяющие значения главной формы: НОМ_НАКЛ, КОД_СК. В Access 2007 после удаления некоторого поля оставшиеся в форме поля автоматически сдвигаются влево, не оставляя пустых мест. Если необходимо, измените размер элемента Подчиненная форма/отчет (Subform/Subreport), получивший имя Отгрузка. Добавьте в форму заголовок и примечание, щелкнув на соответствующей кноп- ке на вкладке ленты Упорядочить (Arrange) в группе Отображение (Show/Hide). Перетащите в заголовок формы элемент управления Надпись (Label). Введите в элемент нужный заголовок формы. Выделите элемент и измените его шрифт, ис- пользуя средства вкладки ленты Конструктор (Design) или Главная (Home) в группе Шрифт (Font). Еще проще выполнить эти действия, используя элемент управления Заголовок (Title). Щелчком на этом элементе выполняется вставка в форму заголовка и при- мечания, а также вставка в заголовок элемента управления Надпись (Label) с тек- стом, соответствующим имени формы. Если в заголовке нужно отображать номер накладной, добавьте в форму области заголовка и примечания, но не вставляйте элемент Надпись (Label), а просто пере- тащите поле НОМ_НАКЛ в область заголовка и измените его надпись и формат. Удобным средством настройки внешнего вида является группировка/разгруп- пировка элементов формы. Выделите, удерживая нажатой клавишу Для улучшения дизайна формы можно, используя свойства формы, на вкладке Макет (Format) убрать область выделения записи (слева), полосу прокрутки, кноп- ки перехода по записям, разделительные линии между областью заголовка, данных и примечаний и т. д. Форма в режиме конструктора и просмотра, полученная после включения под- чиненной формы мастером, приведена на рис. 5.32 и 5.33. Если не использовать мастера подчиненных форм, то, вставив элемент управ- ления Подчиненная форма/отчет (Subform/Subreport), получим в форме Свобод- ный (Unbound) элемент подчиненной формы с именем ВнедренныйN (ChildN). Для определения источника данных подчиненной формы следует в окне свойств Подчиненная форма/отчет (Subform/Subreport) перейти на вкладку Данные (Data). В строке Объект-источник (Source Object) выбрать из списка имен форму, которая будет подчиненной. В данном примере — форму ОТГРУЗКА. После этого в рамке подчиненной формы отобразится выбранная форма в режиме конструктора. Рис. 5.32. Форма в режиме конструктора после включения подчиненной формы мастером Рис. 5.33. Форма в режиме просмотра Если ранее в схеме данных была определена связь таблиц, соответствующих формам, связь между основной и подчиненной формой устанавливается автомати- чески (достаточно щелкнуть на значке в конце строки свойства Подчиненные по- ля (Link Child Fields) или Основные поля (Link Master Fields)). Если связи между таблицами не определены, то в окне свойств в строках Подчиненные поля (Link Child Fields) и Основные поля (Link Master Fields) следует ввести имена полей, по которым связываются таблицы. В рассмотренном примере связь реализуется поля- ми НОМ_НАКЛ (номер накладной) и КОД_СК (код склада) (рис. 5.34). Имена по- лей в строке свойств разделяются точкой с запятой. Аналогичным образом можно вместо формы вставить таблицу ОТГРУЗКА. Рис. 5.34. Окно свойств подчиненной формы Самый простой способ — создание подчиненной формы путем перетаскивания одной формы в другую. Откройте в режиме конструктора форму, которая должна быть главной. Перетащите форму или таблицу, на основе которой нужно создать подчиненную форму, из области переходов в главную форму. Вычисление итогового значения в подчиненной форме и вывод его в текущей записи основной формыВычисление на основе данных каждой записи формы, а также вычисление ито- говых значений в форме с помощью встроенных статистических функций было рассмотрено в предыдущих разделах главы. Теперь рассмотрим, как итоговые зна- чения, вычисленные в подчиненной форме, отобразить или использовать в даль- нейших расчетах в основной форме. Если главная форма и ее подчиненная форма построены на основе таблиц, ме- жду которыми установлена связь типа с 1 : М, в основной форме выводится одна текущая запись, а в подчиненной форме — связанные с ней записи. Пусть необходимо подсчитать, на какую сумму заключил договоры каждый из покупателей, и отобразить ее в форме. Откройте созданную ранее форму ПОКУПАТЕЛЬ (см. рис. 5.25), включающую одну подчиненную форму ДОГОВОР, в режиме конструктора. Рассчитайте общую сумму по договорам одного покупателя в подчиненной форме. Для этого в примечании подчиненной формы ДОГОВОР создайте вычисляемый элемент управления и запишите в него выражение (рис. 5.35): =Sum([СУММА_ДОГ]) Рис. 5.35. Вычисление итогового значения в подчиненной форме и отображение его в главной форме Для отображения результата вычисления в главной форме создайте там вычис- ляемый элемент управления и запишите в него выражение (см. рис. 5.35): =[ДОГОВОР подчиненная форма].[Form]![Поле9] Это выражение является ссылкой на элемент управления Поле9 в примечании подчиненной формы, содержащий общую стоимость договоров. Общий формат такой ссылки имеет вид: =[Имя подчиненной формы].[Form]![Имя поля в подчиненной форме] В надпись вычисляемого элемента управления введите: Общая стоимость дого- воров покупателя. В свойстве Формат поля (Format) на вкладке Макет (Format) измените значение на Денежный (Currency). Чтобы не отображалось примечание подчиненной формы, установите для его свойства Вывод на экран (Display When) значение Нет (No). Форма с вычисляемым элементом управления, отображающим в основной форме общую стоимость договоров покупателя, рассчитанную в подчиненной форме, представлена на рис. 5.36. Рис. 5.36. Отображение итогового значения в главной форме, вычисленного в подчиненной форме Ограничения доступа к данным через формуЗащита данных поля от измененийДля защиты данных поля от изменения используется свойство Блокировка (Locked). Блокировка может быть установлена для любого поля формы. Чтобы за- щитить поле, надо открыть форму в режиме макета или конструктора, установить курсор в его рамке и с помощью контекстно-зависимого меню вызвать свойства поля. В окне свойств на вкладке Данные (Data) в строке Блокировка (Locked) вы- брать Да (Yes). По умолчанию для всех полей в свойстве Блокировка (Locked) устанавливается значение Нет (No). После установки этого свойства поле доступно только для чтения. Установка ограничений на корректировку записей через формуДля того чтобы при работе через форму записи были доступны только для чте- ния, следует в свойствах формы на вкладке Данные (Data) (рис. 5.37) в строках Разрешить добавление (Allow Additions), Разрешить удаление (Allow Deletions) и Разрешить изменение (Allow Edits) задать значения Нет (No). Сделать записи доступными только для чтения можно также, выбрав для свойства Тип набора записей (Recordset Type) значение Статический набор (Snapshot). Указанные свойства могут устанавливаться независимо друг от друга. Например, при запрете на изменение записей может быть разрешено добавление и удаление записей. Рис. 5.37. Установка ограничений на корректировку записей ЗАМЕЧАНИЕ Свойство формы Блокировка записей (Record Locks) определяет способы блокировки записей при попытке двух пользователей одновременно изменить записи в некотором наборе записей сетевой базы данных. Когда один пользователь изменяет запись, авто- матически может блокироваться только изменяемая запись или все записи набора. При этом другие пользователи не могут изменять или только одну запись, или весь набор до завершения работы с ней первого пользователя. Свойство Ввод данных (Data Entry) при значении Да (Yes) определяет режим формы, при котором разрешен только ввод новых записей, просмотр существую- щих записей при этом не доступен. При открытии формы выводится пустая запись, с которой можно начать ввод новых записей. С вновь введенными записями можно выполнять все разрешенные действия: удалять, изменять их. При новом открытии формы снова делается доступным только режим ввода новых записей. Защита данныхподчиненной формы от изменений Защитить содержимое всех полей подчиненной формы, сделав его доступным только для чтения, позволяет свойство Блокировка (Locked), установленное для подчиненной формы. Чтобы защитить данные подчиненной формы от изменений надо выделить со- ответствующий элемент, открыть его свойства. В окне свойств выбрать вкладку Данные (Data). В строке Блокировка (Locked) выбрать Да (Yes). При этом станет невозможным изменение, добавление и удаление данных в полях подчиненной формы. Кроме того, станет невозможным добавление новых записей. Установка для свойства Доступ (Enabled) значения Нет (No) приводит не толь- ко к запрету на любые изменения, но и невозможности перемещаться по записям, просматривать записи за пределами рамки подчиненной формы. |