Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
313
Добавлен:
02.04.2015
Размер:
893.44 Кб
Скачать

7.4.1. Примеры макросов с односторонним ветвлением

Пример23. Пусть при открытии таблицыДеталикнопкойДеталив формеПросмотртаблиц, рассмотренной в примере 22, будет запрашиваться пароль. Если введен правильный пароль, таблица будет открыта, если - неправильный, то будет выдано сообщение на повторный ввод пароля. Для этого нужно выполнить следующую последовательность действий.

  • Придумать пароль, например ффф.

  • Создать форму (без источника данных) по имени фпароль, в которой будет запрашиваться пароль. Такая форма будет содержать надписьВведитепарольи единственный ЭУПоле. Задайте в окне свойств для поля имя, например,ппароль(вкладкаДругие). Задайте свойствуМаскаввода(вкладкаДанные) значениеПароль(введите из списка и, если средство не установлено, то напишите с помощью клавиатуры). В этом случае при вводе пароля вместо вводимых символов будет отображаться символ*. Сохраните форму и дайте ей имяфпароль.

  • Отредактировать групповой макрос Открытиеследующим образом:

  • открыть макрос Открытиев режиме конструктора (вкладкаМакросы, выделить макросОткрытие, кн.Конструкторв окне БД)

  • дописать строку, в которой в столбце ИмямакросанаписатьОткрытьпароль, а в столбцеМакрокомандавыбрать из списка макрокомандуОткрытьФорму, указав в аргументах имя открываемой формыфпароль

  • закрыть групповой макрос, сохранив результаты редакции.

  • Связать событие Нажатиекнопкидля кнопкиДеталив формеПросмотртаблицс макросомОткрытие.Открыть пароль. Тогда при попытке открыть таблицуДетали(по кн.Деталив формеОткрытиетаблиц) сначала откроется формафпароль, которая запросит ввод пароля.

  • Создать макрос по имени мпароль, который будет анализировать правильность ввода пароля:

  • вкладка Макросы

  • кн. Создатьв окне БД

  • добавить столбец условий: Вид/Условия

  • сконструировать следующий макрос:

Условие

Макрокоманда

Примечание

Not Forms![фпароль]![ппароль]=“ффф”

Сообщение

(Сообщение: неверно, повторите ввод пароля)

Forms![фпароль]![ппароль]=“ффф”

ОткрытьТаблицу

(Имя таблицы: Детали,

Режим данных: Только чтение)

Пароль введен верно. Выполнится данная макрокоманда и все следующие макрокоманды с троеточием в столбце Условие.

...

СдвигРазмер

(От верхнего края: 4см)

...

Сообщение

(Сообщение: ОК после просмотра)

Приостановка выполнения макроса для просмотра данных.

...

Закрыть

(Тип объекта: Форма,

Имя объекта: фпароль)

...

Закрыть

(Тип объекта: Таблица,

Имя объекта: Детали)

  • сохранить макрос, задав ему имя мпарольи закрыть окно конструктора макросов

  • Связать событие Послеобновленияполяппарольв формефпарольс макросоммпароль. Закрыть формуфпароль, сохранив результаты редакции.

  • Открыть форму Просмотртаблицв режиме формы и убедиться в том, что таблицаДеталиоткрывается только при правильном вводе пароля.

Пример 24. Пусть требуется показать детали, которые поставляет поставщик с заданным номером. Эту задачу можно решить разными способами. Укажем один из них.

Создадим форму по имени Выбордеталей, в которой создадим поле со списком для ввода номера поставщика из таблицыПоставщики. Создадим на форме кнопку, припо которой будем открывать в виде таблицы все сведения о деталях выбранного поставщика.

Последовательность действий будет такой.

  • Создать форму (без источника данных) . На форме создать ЭУ Кнопка, на которой написатьДетали, и ЭУПолесосписком. Исправить присоединенную к полю надпись на текстВведитеномерпоставщика. Для поля со списком определить свойства данных:Типисточникастрок:  Таблица/ЗапросИсточникстрок: SELECT  DISTINCT  номерп  FROM  Поставщики; СвойствуИмяэлементауправления(вкладкаДругие) для поля со списком задать значениепоставщик(написать с помощью клавиатуры).

  • Закрыть созданную форму, сохранив результаты редакции и задав форме имя Выбордеталей.

  • Создать условный макрос:

Условие

Макрокоманда

Примечание

ВыводНаЭкран

(Включен вывод: Нет,

Сообщение: Ждите. Выполняется макрос)

(Forms![Выбор деталей]![поставщик] IsNull

Сообщение

(Сообщение: Выберите номер поставщика и нажмите кн. Детали)

...

ОстановитьМакрос

Макрос прекратит выполнение, если не выбран из списка поставщик.

ОткрытьФорму

(Имя формы: Поставки,

Режим: Таблица,

Условие отбора:

[номерп]=Forms![Выбор деталей]![поставщик])

Эта и следующая макрокоманды выполнятся, если выбран из списка поставщик.

СдвигРазмер

(По правому краю: 10см,

От верхнего края: 2см)

В этом макросе макрокоманда ВыводНаЭкраниспользуется для того, чтобы в процессе выполнения макроса не менялось изображение на экране, т. е. результаты выполнения макроса не отображались на экране. АргументСообщениев этой макрокоманде отображает сообщение в строке состояния (внизу экрана). МакрокомандаОстановитьМакросвыполняется, если указанное условие истинно, т. е. когда пользовательпо кн.Деталидо того, как сделал выбор номера поставщика из списка. Это - простейший способ перехвата ошибок в процессе выполнения макроса. МакрокомандыОткрытьФормуиСдвигРазмервыполняются, когда указанное условие ложно, т. е. пользователь сначала выбрал из списка номер поставщика, а затемпо кн.Детали. При открытии формы (для удобства она открывается в режиме таблицы) на данные накладывается фильтр, указанный в аргументеУсловиеотбора.

  • Закрыть окно конструктора макроса, сохранив макрос и задав ему имя Длявыборадеталей.

  • Связать кн. Деталив формеВыбордеталейс макросомДлявыборадеталей.

  • Открыть форму Выбордеталейи убедиться в правильности решения поставленной задачи.

Соседние файлы в папке Материалы для лабораторных Базы данных