Отображение всех форм в списке

Это последнее средство может оказаться полезным при разработке пульта управления пере­ходами. Вместо создания кнопок для всех форм, которые хотите использовать, можно создать


элемент управления Список,включающий их все. Когда пользователь, работающий с БД, выбирает форму из списка, программа Access переходит к этой форме. Такой подход очень удобен при большом количестве форм, способных сделать кнопочный метод непопра­вимо запутанным.

 

 

Примечание

Этот метод работает так же хорошо с отчетами, как и с формами.

 

 

Первый шаг — включение в список имен форм. Программа Access позволяет сделать это тремя способами.

Ввод имен вручную. Просто поместите на форму элемент управления Поле со списком.Когда запустится мастер создания элемента управления, выберите переключатель Будет введен фиксированный набор значенийи затем введите имена форм в соответствующем порядке.

 

 

Примечание

См. более подробную информацию о мастере создания списка в разд. "Переходы с помощью спи­сков" главы 13. Только помните о том, что в конце работы мастера нужно выбрать вариант За­помнить значение.Ваш список применяется для переходов, а не для редактирования записей.

 

 

Извлечение имен из пользовательской таблицы, созданной вами. Создайте новую таблицу и заполните ее именами форм, которые хотите включить в список. Затем в процессе создания Поля со спискомвыберите переключатель Объект "поле со списком" будет использовать значения из таблицы или запросаи задайте вашу пользовательскую таблицу. Этот метод концептуально подобен методу функционирования кнопочной формы, создаваемой программой Access.

Извлечение имен из системной таблицы. В качестве действительно эффективного средства можно получить полный список форм прямо из вашей БД без дополнительных усилий. Суть в использовании одной из скрытых системных таблиц. Системные таблицы — это таблицы, которые программа Access применяет для отслеживания объектов БД. У каждой БД, созданной Access, есть такие таблицы, скрытые от глаз.

Первые два варианта просты. Третий — более впечатляющий, но требует немного больше работы. Обычно системные таблицы скрыты от глаз. Отобразить их можно (рис. 14.16), ус­тановив флажок Показывать системные объектыв окне Параметры переходов.Надолго оставлять их видимыми не стоит, т. к. любое изменение в них может повредить вашу БД и озадачить программу Access.

Системные таблицы можно использовать и не выводя на экран. Самая интересная сис­темная таблица — MsysObjects,в которой перечислены все объекты БД. Можно получить список всех форм вашей БД, создав запрос к этой таблице с помощью SQL-команды (см. в разд. "Режим SQL" главы 6 информацию об использовании в запросах языка SQL). Поле Name содержит имена объектов БД, поле Туре— числовой код, обозначающий тип объекта. В табл. 14.1 приведены типы, которые могут вас заинтересовать.

 

 

Таблица 14.1. Коды полезных типов

 

Объект Тип Объект Тип
Таблица (Table) Форма (Form) -32 768
Запрос (Query) Отчет (Report) -32 764

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

На основе этих данных можно получить список форм — извлечь поле Name,а затем ото­брать записи со значением типа -32 768.

Легче всего реализовать описанную логику в элементе управления Список,добавив спи­сок на форму и пропустив мастер создания списка (нажмите клавишу <Esc>, когда мастер запустится). Затем элемент управления можно настроить с помощью Окна свойств.На вкладке Данные найдите свойство Источник строки введите следующую SQL-команду, которая выполнит нужный запрос:

SELECT Name FROM MSysObjects WHERE MSysObjects.Type=-327 68

Теперь у вас есть список, отображающий все формы вашей БД. Можно заменить число -32 764 числом -32 768 и получить все отчеты. На рис. 14.17 показан результат.

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

Оказывается, это решение немного сложнее примеров, виденных вами до сих пор. Для того чтобы заставить его работать, придется изменить макрос. (Макрос — это перечень не­скольких инструкций, хранящийся как объект БД, который можно использовать в любое время.)


Рис. 14.17. В данной форме отображен список всех доступных отчетов

 

 

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

1. Поместите кнопку на вашу форму.

Расположите ее рядом с элементом управления Поле со списком.Запустится Мастер кнопок.

2. Выберите категорию Работа с отчетамии действие Открыть отчет,а затем щелкните мышью кнопку Далее.

Если вы отображаете список форм, выберите категорию Работа с формамии действие Открыть форму.

3. Выберите любой отчет или форму и щелкните мышью кнопку Далее.
Неважно, какой объект вы выберите, поскольку эту часть вы измените позже.

4. Завершите мастер.

Убедитесь, что у кнопки подходящий заголовок, например "Выполнить", "Открыть фор­му" или "Вывести отчет".

Когда мастер завершил работу, самое время внимательнее взглянуть на кнопку в Окне свойств.

5. ВОкне свойстввыделите вновь созданную кнопку и перейдите на вкладку События
(Event).

События — это действия или явления, которые запускают ваш макрос. Например, у всех кнопок есть событие Нажатие кнопки(OnClick), которое возникает, когда вы щелкаете кнопку мышью.

6. Найдите событие Нажатие кнопки(OnClick) и щелкните мышью в поле свойства, в котором выводится строка [Внедренный макрос]([Embedded Macro]).

В углу поля появляется кнопка с многоточием (...).


7. Щелкните мышью многоточие для редактирования макроса.

На экран выводится окно редактирования макроса (рис. 14.18). В нижней части окна нахо­дится раздел Аргументы макрокоманды,позволяющий корректировать работу макроса.

Рис. 14.18.Вы узнаете об этом окне гораздо больше в главе 15. Сейчас вам нужно знать лишь то, что у данного макроса единственная макрокоманда (представленная одной строкой в табличной сетке). Эта макрокоманда открывает отчет (на что указывает значение ОткрытьОтчетв столбце Макрокоманда)

 

8. В разделе Аргументы макрокомандынайдите свойство Имя отчета(или Имя формы).

Замените его значение выражением =MyList.Value.

Это выражение находит поле со списком и извлекает выделенное в данный момент зна­чение. Предполагается, что поле со списком названо My List.Если нет, измените выра­жение соответствующим образом. (Если вы не помните имени вашего поля со списком, выделите элемент щелчком кнопки мыши и посмотрите, какое имя выводится в рас­крывающемся списке в верхней части Окна свойств.)

9. Закройте окно макроса и ответьте Да на предложение сохранить изменения.
Вы вернетесь в окно Конструктораформы.

10. Перейдите в Режим формыи проверьте магические свойства вашего нового списка.

У вас появится возможность выделить форму в списке и затем щелкнуть мышью кноп­ку для открытия выбранной формы.