- •Санкт-Петербургский
- •Оглавление
- •5. Формы 25
- •3. Таблицы
- •3.1. Создание структуры таблицы
- •3.2. Загрузка таблицы данными
- •3.3. Модификация структуры таблицы
- •3.4. Работа с макетом таблицы
- •3.5. Схема данных
- •3.6. Печать таблицы
- •4. Запросы
- •4.1.Типы запросов
- •4.2.Создание qbe-запроса
- •4.3. Заполнение бланка запроса
- •4.4. Работа с построителем выражений
- •4.5. Редактирование запроса
- •4.6. Печать динамического набора данных
- •4.7. Примеры запросов
- •4.7.1. Запрос на выборку данных
- •4.7.2.Запрос с параметром (параметрический запрос)
- •4.7.3. Запрос на создание таблицы
- •4.7.4. Запросы на изменение данных
- •4.7.4.1. На добавление записей
- •Insert into Детали (номерд, имяд, цена )
- •Insert into Детали (номерд, имяд, цена )
- •Values ( 15, “ролик”,150);
- •Insert into Новая ( [номер поставщика], [номер детали], [имя детали], [город] )
- •4.7.4.2. Запрос на удаление записей
- •4.7.4.3. Запрос на обновление (корректировку) данных
- •4.7.5. Группирование данных в запросе
- •4.7.6. Перекрестный запрос
- •4.7.7. Подчиненные (вложенные) запросы
- •4.8.Фильтрация данных
- •5. Формы
- •5.1. Создание однотабличной формы
- •5.2. Редактирование формы
- •5.3. Часто используемые свойства формы
- •5.4. Элементы управления и их свойства
- •6. Отчеты
- •6.1. Создание отчета
- •6.2. Работа с отчетом в режиме конструктора
- •6.3. Сортировка и группировка данных
- •7. Макросы
- •7.1. Создание макросов
- •7.2. Краткая характеристика макрокоманд
- •7.3. Групповые макросы
- •7.4. Реализация ветвлений в макросах
- •7.4.1. Примеры макросов с односторонним ветвлением
- •7.4.2. Пример макроса с двусторонним ветвлением
- •7.5. Реализация циклов в макросах
- •8. Основы создания пользовательского интерфейса
- •8. 1. Взаимодействие форм
- •Интерфейс.Открыть просмотр
- •Интерфейс.Открыть редактирование
- •Интерфейс.Закрыть просмотр
- •8. 2. Создание кнопочных меню с помощью диспетчера кнопочных форм
- •8. 3. Создание пользовательских меню
- •8. 3.1. Создание пользовательских меню с помощью макросов
- •8. 3.2. Создание пользовательских меню с помощью своей панели инструментов
7.4.1. Примеры макросов с односторонним ветвлением
Пример23. Пусть при открытии таблицыДеталикнопкойДеталив формеПросмотртаблиц, рассмотренной в примере 22, будет запрашиваться пароль. Если введен правильный пароль, таблица будет открыта, если - неправильный, то будет выдано сообщение на повторный ввод пароля. Для этого нужно выполнить следующую последовательность действий.
Придумать пароль, например ффф.
Создать форму (без источника данных) по имени фпароль, в которой будет запрашиваться пароль. Такая форма будет содержать надписьВведитепарольи единственный ЭУПоле. Задайте в окне свойств для поля имя, например,ппароль(вкладкаДругие). Задайте свойствуМаскаввода(вкладкаДанные) значениеПароль(введите из списка и, если средство не установлено, то напишите с помощью клавиатуры). В этом случае при вводе пароля вместо вводимых символов будет отображаться символ*. Сохраните форму и дайте ей имяфпароль.
Отредактировать групповой макрос Открытиеследующим образом:
открыть макрос Открытиев режиме конструктора (вкладкаМакросы, выделить макросОткрытие, кн.Конструкторв окне БД)
дописать строку, в которой в столбце ИмямакросанаписатьОткрытьпароль, а в столбцеМакрокомандавыбрать из списка макрокомандуОткрытьФорму, указав в аргументах имя открываемой формыфпароль
закрыть групповой макрос, сохранив результаты редакции.
Связать событие Нажатиекнопкидля кнопкиДеталив формеПросмотртаблицс макросомОткрытие.Открыть пароль. Тогда при попытке открыть таблицуДетали(1спо кн.Деталив формеОткрытиетаблиц) сначала откроется формафпароль, которая запросит ввод пароля.
Создать макрос по имени мпароль, который будет анализировать правильность ввода пароля:
вкладка Макросы
кн. Создатьв окне БД
добавить столбец условий: Вид/Условия
сконструировать следующий макрос:
|
Условие |
Макрокоманда |
Примечание |
|
Not Forms![фпароль]![ппароль]=“ффф” |
Сообщение (Сообщение: неверно, повторите ввод пароля) |
|
|
Forms![фпароль]![ппароль]=“ффф” |
ОткрытьТаблицу (Имя таблицы: Детали, Режим данных: Только чтение) |
Пароль введен верно. Выполнится данная макрокоманда и все следующие макрокоманды с троеточием в столбце Условие. |
|
... |
СдвигРазмер (От верхнего края: 4см) |
|
|
... |
Сообщение (Сообщение: ОК после просмотра) |
Приостановка выполнения макроса для просмотра данных. |
|
... |
Закрыть (Тип объекта: Форма, Имя объекта: фпароль) |
|
|
... |
Закрыть (Тип объекта: Таблица, Имя объекта: Детали) |
|
сохранить макрос, задав ему имя мпарольи закрыть окно конструктора макросов
Связать событие Послеобновленияполяппарольв формефпарольс макросоммпароль. Закрыть формуфпароль, сохранив результаты редакции.
Открыть форму Просмотртаблицв режиме формы и убедиться в том, что таблицаДеталиоткрывается только при правильном вводе пароля.
Пример 24. Пусть требуется показать детали, которые поставляет поставщик с заданным номером. Эту задачу можно решить разными способами. Укажем один из них.
Создадим форму по имени Выбордеталей, в которой создадим поле со списком для ввода номера поставщика из таблицыПоставщики. Создадим на форме кнопку, при1спо которой будем открывать в виде таблицы все сведения о деталях выбранного поставщика.
Последовательность действий будет такой.
Создать форму (без источника данных) . На форме создать ЭУ Кнопка, на которой написатьДетали, и ЭУПолесосписком. Исправить присоединенную к полю надпись на текстВведитеномерпоставщика. Для поля со списком определить свойства данных:Типисточникастрок: Таблица/ЗапросИсточникстрок: SELECT DISTINCT номерп FROM Поставщики; СвойствуИмяэлементауправления(вкладкаДругие) для поля со списком задать значениепоставщик(написать с помощью клавиатуры).
Закрыть созданную форму, сохранив результаты редакции и задав форме имя Выбордеталей.
Создать условный макрос:
|
Условие |
Макрокоманда |
Примечание |
|
|
ВыводНаЭкран (Включен вывод: Нет, Сообщение: Ждите. Выполняется макрос) |
|
|
(Forms![Выбор деталей]![поставщик] IsNull |
Сообщение (Сообщение: Выберите номер поставщика и нажмите кн. Детали) |
|
|
... |
ОстановитьМакрос |
Макрос прекратит выполнение, если не выбран из списка поставщик. |
|
|
ОткрытьФорму (Имя формы: Поставки, Режим: Таблица, Условие отбора: [номерп]=Forms![Выбор деталей]![поставщик]) |
Эта и следующая макрокоманды выполнятся, если выбран из списка поставщик. |
|
|
СдвигРазмер (По правому краю: 10см, От верхнего края: 2см) |
|
В этом макросе макрокоманда ВыводНаЭкраниспользуется для того, чтобы в процессе выполнения макроса не менялось изображение на экране, т. е. результаты выполнения макроса не отображались на экране. АргументСообщениев этой макрокоманде отображает сообщение в строке состояния (внизу экрана). МакрокомандаОстановитьМакросвыполняется, если указанное условие истинно, т. е. когда пользователь1с по кн.Деталидо того, как сделал выбор номера поставщика из списка. Это - простейший способ перехвата ошибок в процессе выполнения макроса. МакрокомандыОткрытьФормуиСдвигРазмервыполняются, когда указанное условие ложно, т. е. пользователь сначала выбрал из списка номер поставщика, а затем1спо кн.Детали. При открытии формы (для удобства она открывается в режиме таблицы) на данные накладывается фильтр, указанный в аргументеУсловиеотбора.
Закрыть окно конструктора макроса, сохранив макрос и задав ему имя Длявыборадеталей.
Связать кн. Деталив формеВыбордеталейс макросомДлявыборадеталей.
Открыть форму Выбордеталейи убедиться в правильности решения поставленной задачи.
