Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Ссылки на подчиненные формы и отчеты



На подчиненную форму или отчет можно ссылаться так же, как и на любой другой элемент упраапения, т. к. подчиненная форма и подчиненный отчет являются одним из типов элементов управления. Например:

Forms ! Заказы ! ПсдформаТовары

Здесь ПодформаТовары — это имя элемента управления в форме Заказы, который предстаааяет собой подчиненную форму.

А вот ссылка на элемент управления в подчиненной форме или отчете имеет особую структуру: после имени элемента упраапения, который яачяется подчиненной формой, нужно сначала указать специальное свойство: Form — для форм или Report — для отчетов, а затем имя элемента упраапения, на который выполняется ссылка:

Forms ! Заказы ! ТоварыПодформа . Form ![ Код Товара]

Фильтрация записей в формах, отчетах, таблицах

Перейдем к примерам использования макрокоманд Access. Дня отбора записей в формах, отчетах, таблицах применяется макрокоманда ПрименитьФильтр (ApplyFilter). Задать фильтр можно двумя способами: либо указав имя созданного фильтра зара­нее в аргументе Имя фильтра (Filter Name), либо непосредственно задав условие выборки в аргументе Условие отбора (Where Condition). Если фильтр нужно применить сразу при открытии формы, тогда с событием Открытие (On Open) формы необходимо связать макрос, содержащий макрокоманду ПрименитьФильтр (ApplyFilter). Если нужно менять набор отображаемых записей в открытой форме динамически, поступают следующим образом:

  • создают в этой форме набор полей, в которых можно задать условия отбора;
  • создают кнопку Применить фильтр, с которой связывают макрос, содержащий макрокоманду ПрименитьФильтр (ApplyFilter). В качестве значения аргумента Условие отбора (Where Condition) для этой макрокоманды указывают выражение, содержащее ссылки на эти поля.

Пример такого решения приведен на рис. 16. На нем представлена форма товары (Products), позволяющая просматривать товары с выборкой по различным критериям.

Рис. 16. Форма для отбора записей по заданным критериям

Эта форма построена на основе таблицы товары (Products) с помощью Мастера автоматической генерации ленточных форм. Затем в режиме Конструктора форм к ней добавлены поля для определения критериев выбора и кнопки для применения и отмены фильтра. Соответствующие макросы, связанные с событием Нажатие кнопки (On Click), приведены на рис. 17. Для отмены фильтра используется макрокоманда

 ПоказатьВсеЗаписи ( ShowAllRecords).

В диалоговом окне Область ввода (Zoom) отображено значение аргумента Условие отбора (Where Condition) макрокоманды ПрименитьФильтр (ApplyFilter). Обратите внимание, условие получилось довольно сложным, а длина поля Условие отбора (Where Condition) ограничена 255 символами. Поэтому, если бы мы включили в условия отбора еще одно поле, например Поставки прекращены, нам пришлось бы отдельно создать специальный фильтр и задать его имя в аргументе Имя фильтра (Filter Name).

В макросе ОтменитьФильтр, кроме макрокоманды

ПоказатьВсеЗаписи(ShowAllRecords),

нужны еше две макрокоманды, чтобы очистить поля ВыборПоставщика и ВыборТипа, т. е. присвоить им значение Null. Это делается с помощью макрокоманды ЗадатьЗначение (SetValue).

Рис. 17. Макросы для установки и отмены фильтра в форме Товары

Перемещение по данным

Эта группа макрокоманд связана с перемещением по записям и элементам упраапения. В качестве примера использования макрокоманд этой группы рассмотрим ситуацию, когда пользователь работает с формой клиенты (Customers) и хочет найти заказ текущего клиента, номер которого ему известен. Во-первых, создали в форме Клиенты (Customers) кнопку Заказы клиента для отображения заказов выбранного клиента. Попробуем усовершенствовать эти формы. Если номер заказа известен пользователю, он может ввести его в текстовое поле Поиск заказа, которое можно добавить в форму Клиенты (Customers). Тогда в открываемой форме Заказы (Orders) следует сразу показать запись, содержащую соответствующий счет. Добавим поле Поиск заказа в заголовок формы и сделаем так, чтобы при открытии формы Заказы (Orders) проверялось значение этого поля и, если оно не пустое, производился бы поиск счета с указанным номером и выполнялся переход на соответствующую запись. В противном случае текущей становилась бы первая запись из отфильтрованного набора записей. На рис. 18 показана форма клиенты (Customers) с новым полем и макрос поиск заказа, который связан с событием Загрузка (On Load) формы Заказы (Orders).

Рис. 18. Пример макроса для перемещения по данным

Поскольку добавленный макрос обработки события ссылается на элемент yпрaвлeния в форме Клиенты (Customers), он должен выполняться только в том случае, если эта форма открыта, и, кроме того, поиск должен производиться только тогда, когда поле поиск заказа не пусто. Исходя из этого, формируются условия макроса. Прежде чем производить поиск записи по образцу в одном из полей, необходимо активизировать это поле, для чего используется макрокоманда КЭлементуУправления (GoToControl). С ее помощью устанавливается фокус на поле КодЗаказа (Orderld).

Но это поле в форме Заказы (Orders) недоступно, поэтому сначала нужно изменить значение свойства Доступ (Enabled) данного поля. В противном случае выполнение макрокоманды КэлементуУправления (GoToControl) приведет к возникновению ошибки.

Макрокоманда КэлементуУправления (GoToControl) используется, как правило, если требуется изменить стандартный порядок перехода между полями в форме. Обычно переход между полями выполняется с помощью клавиши <ТаЬ>, однако иногда требуется пропустить ряд полей и переместить фокус к определенному элементу управления. Это может зависеть от каких-либо условий, например от значения поля. В таком случае на событие После обновления (After Update) для данного поля назначается макрос, который перемещает фокус на нужный элемент управления в форме. В качестве аргумента для макрокоманды необходимо указать короткое имя элемента управления. В случае излишне длинного имени переход к элементу управления не произойдет и отобразится сообщение об ошибке.


Поделиться:



Последнее изменение этой страницы: 2019-04-19; Просмотров: 218; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.01 с.)
Главная | Случайная страница | Обратная связь