
Access 2007
.pdf
Примечание
Любой точечный рисунок (BMP-файл) подходит в качестве рисунка для кнопки, если он достаточно мал, чтобы уместиться на ней. Годятся также пиктограммы, файлы JPEG и GIF.
5. Введите какой-либо текст и выберите рисунок. Затем щелкните мышью кнопку Далее.
Эти данные потом можно изменить, корректируя свойства Подпись (Caption) и Рисунок (Picture) (которые выводятся на вкладке Макет).
6. Задайте имя кнопки.
Имя выводится в списке Окна свойств. Чем лучше выбрано имя, тем легче найти кнопку. А если вы пишете код, работающий с кнопками (см. главу 16), чем лучше имя, тем легче другим читать и понимать ваш код.
7. Щелкните мышью кнопку Готово.
Для испытания кнопки перейдите в Режим формы и щелкните кнопку мышью.
Формы и связанные таблицы
Как вы узнали в главе 5, немногие таблицы по-настоящему независимы. Большинство из них связано с другими таблицами паутиной отношений. Формы могут воспользоваться этими отношениями для отображения связанной информации. Можно применить одну форму для отображения (и редактирования) данных о клиентах и их заказах. Или можно просматривать товары и их категории. Такой свободы нет на листе данных.
Примечание
Профессиональные разработчики Access применяют запросы с объединением (см. разд. "Запросы и связанные таблицы" главы 6) для отображения информации из нескольких таблиц. Но в запросе с операцией объединения нельзя редактировать связанные данные. В хорошо спроектированной форме такого ограничения нет — можно корректировать данные как в родительской, так и в дочерней записях.
Связи таблиц и простые формы
Программа Access достаточно сообразительна, чтобы заметить связи во время создания новой формы для родительской таблицы. Для того чтобы понять, что это значит на практике, выделите таблицу-родитель для другой таблицы. Можно воспользоваться таблицей ProductCategories в БД Boutique Fudge, поскольку каждая категория служит родительской записью, связанной с одной или несколькими записями-потомками в таблице Products. (Можно также использовать таблицу Customers, поскольку клиенты связаны с заказами, или таблицу Orders, т. к. заказы связаны с конкретными компонентами заказа. Для практической проверки примените БД Boutique Fudge для данной главы, содержащую загружаемые из Интернета данные.)
На рис. 13.20 показано, что произойдет, если выделить таблицу ProductCategories, а затем выбрать на ленте Создание → Формы → Форма. Программа Access создает форму, которая выводит ожидаемые записи (категории) и связанные записи из таблицы-потомка (в данном случае товары).
461

Примечание
Не выбирайте для создания Разделенную форму или форму типа Несколько элементов, Access игнорирует связи, когда создаются формы этих типов.
Рис. 13.20. Эта форма позволяет просматривать разные категории товаров. При каждом переходе к новой категории мини-лист данных на форме отображает связанные записи о товарах. С помощью такой формы можно редактировать данные о товарах и о категории товаров
Если таблица — родитель для нескольких потомков, программа Access отображает записи только из одной таблицы. Она выбирает первую найденную связь. Если это не та связь, которая вам нужна, не беспокойтесь — это легко исправить, если знать, как работает элемент управления Подчиненная форма.
Элемент управления Подчиненная форма
Программа выводит связанные записи с помощью элемента управления Подчиненная форма. Этот элемент можно добавить на любую форму для отображения связанных записей. Он доступен в группе ленты Инструменты конструктора форм | Конструктор → Элементы управления наряду с другими элементами управления. Если добавить его вручную, Access попросит выбрать таблицу, которую следует отображать.
462

То, что отображает подчиненная форма, определяется тремя свойствами. Первое свойство Объект-источник (Source Object) задает объект БД, имеющий связанные записи. Можно выбрать существующие таблицу, запрос или форму.
Следующие два свойства — Основные поля (Link Master Fields) и Подчиненные поля (Link Child Fields) — позволяют определить способ связи двух таблиц. Основное поле — это поле в форме, а подчиненное поле — это поле в объекте-источнике. В примере с категориями товаров основное поле — ID (в таблице ProductCategories) и подчиненное поле — поле ProductID (в таблице Products). После того как эта связь определена, программа Access знает, как фильтровать подчиненную форму. Она просматривает основное поле и отображает только те записи, у которых то же значение в подчиненном поле. На рис. 13.20 Access отображает товары текущей категории.
Обычно основное поле относится к родительской таблице, а подчиненное поле — к таб- лице-потомку. Но это отношение можно изменить на обратное. Можно создать форму с товарами, которая включает подчиненную форму, отображающую категорию, соответствующую каждому товару. Если применяется подобный подход, подчиненная форма включает только одну запись (т. к. только один родитель связан с каждой записью).
Теперь разобравшись с принципами работы элемента управления Подчиненная форма, можно вставлять ее в формы с одержимостью. Ничто не мешает вам добавить несколько подчиненных форм для одновременного отображения целой коллекции связанных данных. Если создается форма для таблицы Customers, можно вывести на экран две подчиненные формы — одну для заказов, сделанных клиентом, а другую для платежей. Вам просто нужны два элемента управления Подчиненная форма с разными источниками данных.
Подсказка
Если в форму включена подчиненная форма, подумайте об использовании средств привязки, описанных в разд. "Привязка: автоматическое изменение размеров элементов управления" ранее в этой главе, так чтобы подчиненная форма увеличивалась за счет доступного свободного пространства, появляющегося при изменении размера формы.
Создание настроенных подчиненных форм
Если в свойстве Объект-источник задана таблица или запрос, программа Access всегда отображает связанные записи на мини-листе данных. Если вы намерены настраивать каждый новый фрагмент формы, возможно, вас не устроит такое отображение. Интересно, что программа Access позволяет управлять способом отображения связанных записей, если потрудиться немного больше.
Хитрость заключается в задании в свойстве Объект-источник формы, которую хотите отобразить в элементе управления Подчиненная форма. Форма появится в режиме вывода по умолчанию в соответствии со значением в свойстве Режим по умолчанию. Можно выводить связанные записи в табличном макете или макете в столбец. На рис. 13.21 показан пример.
Возможно, для получения эффекта, которого вы стараетесь добиться, уже есть подходящая форма, лежащая под рукой и готовая к применению. Если проектируется форма для таблицы ProductCategories, можно использовать форму, созданную для таблицы Products в элементе управления Подчиненная форма. Но часто хочется иметь отдельную форму, чтобы настраивать ее так, как заблагорассудится. В примере с таблицей товаров может появиться желание в подчиненной форме отображать товары совершенно иначе, чем в их
463

собственной специализированной форме. Помимо всего прочего, когда применяется элемент управления Подчиненная форма, у вас гораздо меньше места на ней, поэтому можно выбрать более компактный формат и вовсе пропустить заголовок формы.
Рис.13.21. Благодаря магии подчиненных форм в этом окне на самом деле одновременно отображаются две формы: ProductCategories_WithSubform и ProductslnCategory_Subform.
В данном примере подчиненная форма использует макет Ленточная форма и, таким образом, отображает список всех отобранных товаров. Для отображения остальных товаров необходимо использовать второй набор кнопок перехода (обведены)
Подсказка
Если вы решили создать специализированную форму, использующую элемент управления
Подчиненная форма, отразите ее роль в названии. Название ProductslnCategory Subform
(Подчиненная форма для товаров из данной категории) подразумевает форму, спроектированную для применения в качестве подчиненной формы.
Предпринимайте разные попытки, поскольку не существует способа разместить все на небольшом пространстве подчиненной формы, включенной в форму. В этом случае у вас есть две возможности: попытаться создать более компактную подчиненную форму или использовать две отдельные формы. В главе 14 показано, как применять переходы и фильтр для отображения связанных записей в отдельной форме.
464

Глава 14
Создание системы переходов
На протяжении 13 глав вы накапливали составляющие первоклассной БД. Но если нет хорошего способа собрать их вместе, они — просто груда разрозненных фрагментов.
В лучшие БД Access обязательно включено какое-либо средство перехода пользователей от одной части БД к другой. Главная цель — сделать удобнее и легче работу с БД. Вместо того чтобы заставлять вас выискивать нужный объект в области переходов, такие БД начинают с формы, содержащей меню того или иного вида и позволяющей сформировать свой способ перехода от одной задачи к другой щелчком мышью удобных кнопок. Такого рода проект БД — находка для пользователей, не знакомых с хитростями и уловками Access. Если система переходов тщательно разработана, таким пользователям не нужно знать ничего о программе Access — они могут начать вводить данные, не осваивая ничего нового.
Вы уже знаете все, что необходимо для создания первоклассной системы переходов. Теперь вам нужен новый взгляд на БД, такой, чтобы БД могли (и стали) вести себя как обычные Windows-программы, а не как устрашающие форты данных. В этой главе вы узнаете о разных способах добавления средств переходов D БД, настроенных дружески по отношению к пользователям. Вы научитесь создавать кнопочные формы (формы, перенаправляющие пользователей к другим формам), стартовые формы, появляющиеся при первом открытии БД, и отображать связанную информацию в отдельных формах. Но, прежде всего, начнем с более близкого знакомства с областью переходов, чтобы научиться управлять переходами, не создавая ничего нового.
Освоение области переходов
Область переходов была описана в главе 1, и с тех пор вы пользовались ею для перемещения по объектам БД. Но по мере роста БД область переходов становится все более загруженной, При наличии примерно 20 объектов БД, точное число зависит от размера вашего монитора, все они не помещаются на экране одновременно. В результате приходится пользоваться прокруткой сверху вниз для поиска нужного объекта, что может стать причиной мучительной боли в лучевом суставе.
Один из методов борьбы с этим затруднением — проектирование собственных кнопочных форм, позволяющих перемещаться в БД. Но прежде чем перейти к этому решению, стоит рассмотреть некоторые средства, встроенные непосредственно в область переходов. Они могут решить проблему с меньшими затратами.
465

Настройка списка области переходов
Для начала рассмотрим применение фильтрации для сокращения объема информации, отображаемой в области переходов. Возможно, у вас есть БД с тремя десятками объектов, из которых вы регулярно пользуетесь только 10. В этом случае незачем выводить на экран объекты, которые не пользуются.
По существу программа Access предоставляет два решения, касающиеся области переходов:
■можно выбрать способ упорядочивания объектов в области переходов. Этот процесс называют систематизацией объектов БД;
■можно не отображать некоторые объекты. Этот процесс называют фильтрацией объектов БД.
Смутить может то, что выбор обоих вариантов делается в одном и том же меню. Для того чтобы открыть это меню, щелкните направленную вниз стрелку в зоне заголовка области переходов. На рис. 14.1 показано это меню.
Рис. 14.1. Когда вы готовы сообщить программе Access о способе организации объектов в области переходов, выделите верхнюю порцию меню (Переход в категорию). Текущий вариант — Тип объекта — группирует таблицы, запросы, формы и отчеты в отдельные разделы. Для выбора отображаемых объектов выберите вариант в нижней части меню (Фильтр по группам)
466

Систематизировать область переходов можно пятью способами.
■Таблицы и связанные представления (Tables and Related Views) группируют объекты БД на основе используемой ими таблицы. Если созданы две формы, три запроса и отчет для таблицы Students, вы увидите все эти объекты собранными вместе, в одной группе (под заголовком "Students"). Связанная с этим вариантом проблема заключается в трудности различения объектов разных типов, особенно если у них схожие имена. Придется внимательно рассматривать пиктограмму, чтобы определить, является ли данный объект формой, отчетом или чем-то еще. Таблицы и связанные представления
— вариант систематизации, с которого начинает программа Access.
Подсказка
Многие объекты БД используют несколько таблиц. Если создается запрос, применяющий операцию объединения для отображения товаров с информацией об их категории, в этом запросе используются таблицы Products и ProductCategories. В режиме Таблицы и связанные представления вы увидите этот запрос в двух местах — под заголовком
Products и под заголовком ProductCategories.
Когда выбран режим Таблицы и связанные представления, раздел меню Фильтр по
группам включает все таблицы БД. Если выбрать конкретную таблицу, то будут выводиться только объекты, связанные с этой таблицей. Можно также выбрать вариант Несвязанные объекты (Unrelated Objects), чтобы увидеть любые объекты определенных категорий, не связанные ни с одной таблицей, например, файлы с кодом.
■Тип объекта (Object Type) группирует объекты БД на основе их типа. Этот вариант четко отделяет таблицы от форм, отчетов и объектов других типов. Многие специалисты Access предпочитают этот режим при просмотре завершенной БД, поскольку он укрощает самую неуправляемую БД. Данный вариант очень хорош, если вы забыли точное имя нужного объекта. Если известно, что нужно напечатать отчет со списком классов, можно сразу перейти в группу Отчеты.
Когда применяется режим Тип объекта, список вариантов фильтра позволяет увидеть объекты одного типа. Если вы создали формы для каждой нужной задачи, выберите вариант Формы, чтобы увидеть на экране только формы.
■Дата создания (Created Date) группирует объекты БД на основе времени их создания. Программа Access создает группу для Сегодня, группирует по остальным дням недели (Понедельник, Воскресенье и т. д.) и по более длительным периодам (Прошлая неделя, Две недели назад и т. д.). Эта категория может не использоваться регулярно, поскольку по истечении времени объекты переходят из одной группы в другую. Но она очень удобна для отображения последних результатов работы.
Когда применяется категория Дата создания, варианты фильтрации позволяют отобрать те объекты, которые созданы сегодня, вчера, на прошлой неделе, в прошлом месяце и т. д. (как показано на рис. 14.2). Если вы помните, когда были созданы важные форма или отчет, но забыли их имена, такая возможность сэкономит время.
■Дата изменения (Modified Date) действует так же, как вариант Дата создания за исключением того, что этот вариант позволяет отобрать объекты БД, измененные в последнее время. Он удобен, если вы хотите игнорировать таблицы и другие объекты, которые используются редко.
467

Когда применяется группировка по дате изменения, доступны те же варианты фильтрации, что и для варианта Дата создания.
Рис. 14.2. При выборе группировки Дата создания отображаются группы, в которых объекты упорядочены на основе даты создания
■Вариант Custom позволяет выбрать точно, какие объекты отображать, а какие скрыть. Он хорош, если у вас есть определенные, часто используемые объекты и объекты, которые следует скрыть.
Подсказка
Можно быстро задать условие отбора. Щелкните правой кнопкой мыши заголовок группы и выберите Показать только [Имя_группы]. Для отображения только таблиц при группировке Тип объекта щелкните правой кнопкой мыши группу Таблицы и выберите Показать только таблицы. Для удаления фильтра снова щелкните правой кнопкой мыши область переходов и выберите Показать все группы (Show All Groups).
Когда в области переходов применяется фильтр, программа Access полностью скрывает то, что вы не хотите видеть. Но как вы, вероятно, уже знаете, Access предоставляет еще один вариант. Можно щелкнуть кнопкой мыши стрелки сворачивания (collapse arrows), расположенные рядом с конкретным разделом для сворачивания его до отображаемого заголовка (рис. 14.3). Когда раздел вам понадобится, вы сможете снова развернуть его.
468

Рис. 14.3. Щелкните кнопкой мыши стрелки сворачивания для быстрого скрытия объектов в конкретной группе. В данном примере аккуратно скрыта группа запросов
Рис. 14.4. До сих пор вы пользовались режимом списка в области переходов, обеспечивающим наиболее компактное представление. Но программа Access позволяет применять режим немного более крупных значков (слева) или режим отображения с подробностями, включающий сведения о датах создания и изменения объекта (справа)
469

Малоизвестная или недооцененная возможность. Варианты сортировки и просмотра в области переходов
У области переходов есть много тщательно спрятанных параметров, которые можно настраивать. Например, если вам не нравится порядок отображения элементов в каждой группе, у вас есть несколько вариантов их сортировки. Для того чтобы увидеть все возможные варианты, щелкните правой кнопкой мыши полосу заголовка области переходов и выберите подменю Сортировка (Sort By).
Как вы увидите, можно применить сортировку по возрастанию или убыванию к любому из следующих критериев:
•Имя (Name) сортирует в соответствии с именем объекта БД;
•Тип (Туре) сортирует в соответствии с типом объекта (форма, отчет, таблица и т. д.). Этот вариант не оказывает влияния, если данные уже сгруппированы по типу объекта;
•Дата создания и Дата изменения сортируют так, что более поздние или более ранние объекты выводятся первыми.
Можно также изменить внешний вид области переходов, щелкнув правой кнопкой мыши заголовок области переходов и выбрав вариант из меню Просмотр (View By). На рис. 14.4 сравниваются разные параметры отображения.
Улучшенная фильтрация
У системы фильтрации есть одно ограничение — она позволяет в каждый момент времени выбрать только одну категорию. Если выбрать Таблицы и связанные представления, можно отфильтровать список объектов, связанных с одной таблицей. Но нельзя включить в условие отбора две или несколько групп таблиц. Аналогично, если выбирается Тип объекта, можно отобразить все формы или все отчеты в вашей БД, но нельзя показать формы и отчеты, не включив всего остального (хотя прием сворачивания, показанный на рис. 14.3, помогает высвободить большую часть пространства).
Это ограничение можно легко обойти. Для более полного управления условиями отбора выполните следующие действия.
1.Щелкните правой кнопкой мыши полосу заголовка области переходов и затем выберите команду Параметры переходов (Navigation Options).
На экране появится одноименное диалоговое окно (рис. 14.5).
2.Выберите категорию, которую хотите настраивать — либо Таблицы и связанные представления, либо Тип объекта.
Список справа отобразит все группы в этой категории.
3.Если вы не хотите отображать группу в списке области переходов, сбросьте флажок рядом с ней.
Если вы хотите показывать в области переходов только отчеты и формы, выберите категорию Тип объекта и сбросьте флажки рядом с группами Таблицы, Запросы, Макросы и
Модули.
4.Если вы настраиваете категорию Таблицы и связанные представления, можно изменить порядок групп, как показано на рис. 14.6.
470