- •Создание запросов sql
- •Зарезервированные слова Jet sql
- •Функции и операторы Access, используемые вместо ключевых слов ansi sql
- •Зарезервированные слова Jet sql и функции, не входящие в ansi sql
- •Эквивалентные типы данных Jet sql и ansi sql
- •Подстановочные знаки при сравнении строк
- •Зарезервированные слова distinctrow и distinct
- •Использование разделителей и символов sql
- •Создание запросов на объединение записей
- •Создание запроса к серверу
- •Управляющие запросы
- •Создание подчиненных запросов
- •Глава 9 .
- •Панель элементов
- •Разновидности элементов управления по типу содержимого
- •Элемент управления Надпись
- •Элемент управления Поле
- •Элементы управления выбора: Выключатель, Переключатель, Флажок и Группа
- •Элемент управления Список
- •Элемент управления Поле со списком
- •Элемент управления Кнопка
- •Элементы управления Свободная рамка объекта и Присоединенная рамка объекта
- •Элемент управления Рисунок
- •Элемент управления Разрыв страницы
- •Элемент управления Набор вкладок
- •Элемент управления Подчиненная форма/отчет
- •Элементы управления Линиям Прямоугольник
- •Преобразование одного элемента управления в другой
- •Создание многотабличных форм
- •Использование Мастера форм для создания главной и подчиненной форм
- •Добавление подчиненной формы в главную форму
- •Синхронизация данных в элементах формы
- •Создание многостраничных форм
- •Добавление и удаление страниц в наборе вкладок
- •Изменение порядка следования страниц
- •Свойства элемента управления Набор вкладок
- •Всплывающие формы и диалоговые окна
- •Вычисления в формах
Использование Мастера форм для создания главной и подчиненной форм
Составную форму с подчиненными формами можно создать также с помощью Мастера форм. Это несколько сложнее, чем использование Мастера автоформ, но зато дает возможность поместить в формы не все поля, а только те, что требуется.
Рассмотрим создание такой формы для таблиц "Сотрудники" (Employees) и "Заказы" (Orders). Снова обратимся к схеме данных (см. рис. 9.30) и убедимся, что таблица "Сотрудники" (Employees) связана с таблицей "Заказы" (Orders) отношением "один-ко-многим":
Нажмите стрелку справа от кнопки Новый объект (New Object) на панели инструментов и выберите в списке команду Форма (Form) или нажмите кнопку Создать (New) на странице Формы (Forms) окна База данных (Database).
В диалоговом окне Новая форма (New Form) выделите элемент списка Мастер форм (Form Wizard), выберите в поле со списком таблицу для главной формы — "Сотрудники" (Employees) — и нажмите кнопку ОК (см. также разд. "Создание формы с помощью мастера"гл. 5).
Рис. 9.32. Первое диалоговое окно Мастера форм
В первом диалоговом окне Мастера форм (рис. 9.32) в списке Доступные поля (Available Fields) выберите те поля, которые вы хотите включить в главную форму. Затем в этом же окне в поле со списком Таблицы и запросы (Tables/Queries) "выберите запрос "Запрос Заказы" (Orders Qry), который содержит данные из двух таблиц: "Заказы" (Orders) и "Клиенты" (Customers). В списке Доступные поля (Available Fields) из этого запроса выберите поля, которые необходимо включить в подчиненную форму. Нажмите кнопку Далее (Next).
Рис. 9.33. Второе диалоговое окно Мастера форм
Рис. 9.34. Составная форма, созданная Мастером форм
В следующем окне Мастера (рис. 9,33) предлагается выбрать, какая из двух таблиц будет главной (по умолчанию устанавливается первая таблица, поля из которой мы выбирали). Переключатель, определяющий вид представления иерархии форм, по умолчанию установлен в значение Подчиненные формы (Form with subform(s)). Это то, что нам нужно. Нажимаем кнопку Далее (Next).
В остальных диалоговых окнах нужно выбрать вид подчиненной формы (ленточный или табличный), стиль и задать имена для главной и подчиненной форм. После нажатия кнопки Готово (Finish) создается форма, содержащая одну подчиненную форму, которая выглядит примерно так, как на показано рис. 9.34.
Теперь можно открыть эту форму в режиме Конструктора и настроить ее нужным образом.
Добавление подчиненной формы в главную форму
Подчиненная форма является элементом управления и, как и все остальные элементы, может быть добавлена в главную форму с помощью Мастера подчиненных форм. При этом ее можно создать заранее, и тогда мастеру нужно будет только указать имя добавляемой формы. Если подчиненная форма еще не создана, мастер поможет ее создать.
В качестве примера добавим в форму "Поставщики" (Suppliers) подчиненную форму, которая будет содержать список товаров текущего-поставщика (в исходной версии базы данных "Борей" товары поставщика отображаются в отдельной связанной форме при нажатии кнопки Просмотр товаров (Review Products)):
Откройте форму "Поставщики" в режиме Конструктора и отобразите на экране панель элементов, если ее не видно.
При нажатой кнопке Мастера (Control Wizards) перетащите с панели элементов в область данных формы элемент управления Подчиненная форма/отчет (Subform/ Subreport), поместив ее под всеми остальными элементами. Перед этим можно увеличить высоту области данных, но это необязательно, т. к. она увеличится автоматически после вставки нового элемента.
В первом диалоговом окне мастера выберите переключатель Имеющиеся таблицы и запросы (Use existing Tables and Queries) и нажмите кнопку Далее (Next).
Во втором диалоговом окне Мастера подчиненных форм в раскрывающемся списке Таблицы и запросы (Tables/Queries) выберите таблицу "Товары" (Products). В списке Доступные поля (Available Fields) выберите поля для включения в форму (рис. 9.35) и нажмите кнопку Далее (Next).
В третьем диалоговом окне нужно определить поля, по которым связываются главная и подчиненная формы (рис. 9.36). Можно выбрать их из списка или задать самостоятельно. Так как таблицы "Поставщики" (Suppliers) и "Товары" (Products) связаны, в списке отображается нужная связь. Выберите ее и нажмите кнопку Далее (Next).
В последнем диалоговом окне нужно задать имя подчиненной формы. По умолчанию предлагается имя "подчиненная форма Товары" (Products subform). Можно оставить-это имя и нажать кнопку Готово.
Рис. 9.35. Второе диалоговое окно Мастера подчиненных форм
Рис. 9.36. Третье диалоговое окно Мастера подчиненных форм
Результат работы мастера представлен на рис. 9.37.
Мастер подчиненных форм удобен тогда, когда подчиненная форма еще не создана. Если подчиненная форма уже существует, можно просто разместить рядом окно базы данных с раскрытой страницей Формы (Forms) и главную форму, открытую в режиме Конструктора и просто перетащить мышью нужную форму из окна базы данных в главную форму. При этом главная становится подчиненной формой и автоматически устанавливается связь между формами.
Рис. 9.37. Подчиненная форма "Товары" внутри формы "Поставщики"
Связывание главной и подчиненной форм
Связывание главной и подчиненной форм осуществляется с помощью свойств Основные поля (Link Master Fields) и Подчиненные поля (Link Child Fields) элемента управления Подчиненная форма/отчет (Subform/Subreport). Как мы уже сказали, мастера форм автоматически заполняют эти свойства, основываясь на связях между таблицами. Если связи не заданы, то связующими полями считаются поля в таблицах, которые имеют одинаковые имена и совместимые типы данных. При этом связующее поле в базовой таблице для главной формы должно быть ключевым.
Если при разработке иерархической формы данные в главной и подчиненной формах окажутся не синхронизированными, следует проверить значение свойств Основные поля (Link Master Fields) и Подчиненные поля (Link Child Fields) и ввести или откорректировать их значения:
Откройте главную форму в режиме Конструктора.
Выделите элемент управления Подчиненная форма/отчет (Subform/Subreport) (проще всего сделать это, описав с помощью мыши прямоугольник вокруг или пересекая этот элемент управления) и откройте окно Свойства (Properties) для этого элемента.
В ячейку свойства Подчиненные поля (Link Child Fields) следует ввести имя связующего поля из таблицы или запроса, на котором базируется подчиненная форма.
В ячейку свойства Основные поля (Link Master Fields) необходимо ввести имя связующего поля из таблицы или запроса, на котором базируется главная форма.
Если вы не помните имена полей в базовых таблицах или запросах, можно воспользоваться Построителем для связывания полей. Нажмите кнопку Построителя справа от любого из упомянутых свойств, и на экране появится диалоговое окно (рис. 9.38).
Рис. 9.38. Определение связей между главной и подчиненной формами
В левой части окна расположены раскрывающиеся списки для выбора связующих полей в главной форме, в правой — для выбора связующих полей в подчиненной форме. Связь может задаваться с помощью нескольких полей. Это может быть, если ключевое поле в главной таблице составное. Построитель позволяет задать максимум три поля и, как правило, этого хватает. В противном случае нужно просто вписать недостающие поля в значения свойств, разделив их точкой с запятой. Важно только, чтобы поля в каждом из данных свойств перечислялись в одинаковом порядке.
В предложенных списках содержатся все поля базовых таблиц или запросов. Это означает, что связующие поля необязательно должны присутствовать в формах, они обязаны присутствовать в источнике данных формы.
