На данном примере мы рассмотрим общий механизм работы и создания форм с починенными формами. Несколько ценных советов, которые были использованы в этой форме ...
Следующей формой, которую мы разберем, будет форма для заполнения курсов валют. Посмотреть на готовый файл базы можно, закачав с сайта файл: Sklad_3.zip (если Вы его еще раньше не скачивали). Справочник курсов валют состоит из двух форм: - Основная ("КурсыВалют")
- Подчиненная ("КурсыВалют_")
На данном примере мы рассмотрим общий механизм работы и создания форм с починенными формами. Вспомним связь, которую мы установили в схеме данных, между таблицами "Валюты" и "КурсыВалют". Нам надо сделать форму, в которой при выборе определенной валюты, мы видели и могли редактировать только ее курсы валют. Заходим в конструктор новой формы и вставляем элемент "поле со списком" из "панели элементов" в форму: Источник данных формы у нас остается пустой и соответственно свойство "Данные" поля со списком будет не определен. Но при этом для свойства поля "Источник строк" мы сделаем запрос из таблицы "Валюты", что бы в этом поле светился список всех валют, и мы могли выбирать одну из них. Нажимаем на кнопку построителя запросов для источника строк поля и делаем запрос. С построением простейших запросов мы уже сталкивались при использовании вкладки Подстановка в таблицах, поэтому трудностей быть не должно. На рисунке выделены стрелочками основные моменты в свойствах поля со списком Валют. После того, как это все сделано, можно открыть форму в рабочем режиме и посмотреть, как в списке мы увидим наши валюты. Пока сохраним и закроем нашу форму "КурсыВалют". Создаем новую форму, которая будет являться подчиненной. Она делается по аналогии со справочником валют, только ее свойство "режим по умолчанию" будет "Таблица". Называем ее "КурсыВалют_" и сохраняем. Я в свое время не знал как сделать мельче шрифт в форме, которая открывается в режиме таблицы, а ларчик просто открывается - смотри рисунок. На следующем этапе, нам необходимо сделать ее подчиненной для основной формы "КурсыВалют". Для этого откроем рядом окно базы данных и основной формы в режиме конструктора и перетянем мышкой нашу подчиненную форму на главную. Но это еще не все, необходимо верно задать свойства созданного элемента "Подчиненная форма/отчет". Самое главное в свойствах этого элемента задать значения "Основные поля" и "Подчиненные поля" и для этого напротив этих свойств есть кнопочки для вызова построителя связи, но в нашем случае он выдаст сообщение, что мол невозможно создать связь между свободными формами. И здесь есть хитрость, до которой я совершенно недавно дошел. Она заключается в том, что на практике Access сам себе противоречит, говоря что невозможно создать связь. Возможно, только не прибегая к услугам построителя связи. Ручками пишем имена поля основной формы и поля таблицы подчиненной формы, по которым происходит связь и все прекрасно работает ! Вешаем пару кнопок на форму, которые легко создаются мастером и полный порядок. Единственная мелочь только осталась, которая заключается в следующем: когда у нас открыта наша форма редактирования курсов валют и из нее по кнопке запускаем справочник валют, в котором добавляем новую валюту, то возвращаясь в форму курсов валют видим, что добавленной валюты НЕТ в списке?! Это и понятно, ведь наш список сформировался в результате выполнения запроса для элемента формы в момент открытия формы. И этот элемент понятия не имеет, что пока он здесь висит, в этот момент кто-то зашел и добавил новую валюту в таблицу. Для устранения этого, на событие формы "Активизация" пишем на VBA следующую строку: Private Sub Form_Activate() Me!ВыборВалюты.Requery End Sub | Этот код будет срабатывать, когда форма становится вновь активной. Ну а теперь полный порядок. Вот так выглядит наша форма: Просмотров: 10179
Ваш коментарий будет первым | | |