- •Министерство образования и науки Российской Федерации
- •Содержание
- •Лабораторная работа №1-2 анализ поведения системы с использованием контекстных диаграмм йордана – де марко
- •Лабораторная работа №3 анализ данных. Построение инфологической модели данных бд
- •Задание 1
- •Задание 3
- •Задание 5
- •Задание 6
- •Задание 7
- •Задание 9
- •Лабораторная работа №4 преобразование инфологической модели данных в реляционную на основе правил преобразования
- •Лабораторная работа №5 построение реляционной моедли бд с использованием метода нормальных форм
- •Лабораторная работа №6 Проект как средство объединения элементов приложения. Создание базы данных в состве проекта visual foxpro
- •Лабораторная работа №7 создание базы данных в составе проекта vfp
- •Лабораторная работа №8 создание форм как средства работы с таблицами
- •Форма как средство ввода и редактирования данных
- •Создание формы с помощью конструктора форм
- •Окно конструктора форм
- •2. Создание формы
- •3. Настройка параметров формы
- •4. Среда окружения формы
- •6. Размещение объектов в форме
- •6.1. Размещение полей таблиц и надписей к ним с использованием построителя формы
- •6.2. Текстовая информация
- •6.3. Поле ввода
- •6.4. Использование построителя для создания формы
- •6.5. Поле редактирования
- •6.6. Кнопки управления
- •6.6.1. Размещение одиночных кнопок
- •6.6.2. Редактирование составных объектов Создание группы кнопок
- •7. Создание формы с помощью мастера
- •Лабораторная работа № 9-10 Запросы к базе данных
- •I. Создание однотабличного запроса:
- •II. Создание многотабличного запроса:
- •III. Группировка полей запроса
- •IV. Подзапросы
- •Использование представлений данных
- •Создание представления данных
- •Просмотр представления данных
- •Сохранение созданного представления данных
- •Параметры представления данных
- •Редактирование данных
- •Установка редактируемых полей
- •Лабораторная работа № 11-12 Создание и печать отчетов
- •2.2. Типы полос окна конструктора отчета
- •Лабораторная работа №13 Хранимые процедуры и триггеры
- •1. Условия достоверности, хранимые процедуры, триггеры
- •Хранимые процедуры
- •Условия достоверности ввода данных на уровне поля таблицы
- •Условия достоверности ввода данных на уровне записей
- •Триггеры
- •Использование триггеров и хранимых процедур
- •Использование триггеров при определении ссылочной целостности
- •Определение значения поля при добавлении новой записи
- •Проверка удовлетворения введенных значений заданному условию
- •Лабораторная работа № 14 Создание меню приложения
- •Лабораторная работа № 15 Генерация приложения
- •Построение проекта и генерация приложения
- •Установка основной программы проекта
- •Использование опции Exclude
- •Очистка проекта от удаленных файлов
- •Построение проекта
- •1. Последовательность действий при настройке параметров формы
- •Форматы данных
- •2. Поле ввода
- •Коды шаблонов picture
- •3. Использование построителя при создании поля ввода
- •Назначение флажков вкладки format
- •Назначение параметров вкладки style
- •4. Поле редактирования
- •5. Кнопки управления
- •5.1. Размещение одиночных кнопок
- •5.2. Создание группы кнопок
- •Расширенные средства ввода данных
- •1. Отображение данных в форме в табличном виде
- •2. Использование построителя
- •Назначение вкладок окна Grid Builder
- •3. Свойства, определяющие объект Grid
- •3.1. Свойства объекта Column
- •Свойства объекта Header
- •3.3. Свойства объекта Text
- •4. Создание многотабличных форм для таблиц, имеющих отношение "один-ко-многим"
- •4.1. Создание многотабличной формы с помощью мастера
- •Варианты продолжения работы с формой
- •4.2. Создание объекта Grid с помощью конструктора форм
- •Создание формы, содержащей объект Grid
- •Создание формы, содержащей три объекта Grid
- •5. Создание формы с вкладками
- •6. Набор форм
- •7. Таймер
- •Назначение свойств объекта Timer
- •7.1. Создание формы с использованием таймера
- •8. Добавление данных в список
- •Рекомендации по созданию отчета
- •Создание отчета с помощью конструктора отчетов
- •1. Окно конструктора отчетов
- •2. Типы полос окна конструктора отчета
- •3. Использование команды Quick Report для размещения полей
- •4. Установка среды окружения отчета
- •5. Размещение объектов в отчете
- •5.1.Размещение в отчете текстовой информации
- •5.2. Добавление в отчет областей заголовка и итогов
- •5.3. Создание простого отчета
- •5.4. Размещение полей
- •5.5. Формирование выражения поля
- •5.6. Задание формата данных
- •5.7. Задание условий печати
- •5.8. Расположение поля в полосе
- •5.9. Размещение итогового поля
- •5.10. Размещение в отчете линий и прямоугольников
- •5.11. Панель инструментов Color Palette
- •5.12. Размещение в отчете рисунков
- •6. Создание отчета в свободной форме
- •7. Создание табличного отчета
- •8. Группировка данных в отчете
- •8.1. Использование группировки в отчете
- •9. Использование в отчете переменных
- •10. Разметка страницы отчета
- •11. Создание многоколоночного отчета
Условия достоверности ввода данных на уровне поля таблицы
Правила для поля текущей записи таблицы начинают работать в случае модификации соответствующего поля.
Для определения условия достоверности ввода данных на уровне поля таблицы используется область Field validation (Проверка правильности ввода) вкладки Fields (Поля) окна конструктора таблиц. В поле Rule (Условие) задается логическое выражение, а в поле Message (Сообщение) — сообщение, отображаемое на экране, если логическое выражение возвращает значение False (Ложь).
Задача: Определить условие достоверности данных для поля nquant, содержащего количество купленного товара, таблицы ordsaied. При вводе количества товара необходимо автоматически проверять его фактическое количество на складе.
Для определения данного условия достоверности данных необходимо выполнить следующие действия:
Открыть проект sales.
Перейти на вкладку Data (Данные).
В разделе Tables (Таблицы) выбрать таблицу ordsaied и нажмите кнопку Modify (Модифицировать).
В окне конструктора таблицы выбрать поле nquant.
В поле ввода Rule (Условие) области Field validation (Проверка правильности ввода) ввести вызов функции checkQuant ().
В поле ввода Message (Сообщение) ввести текст сообщения: "Заказанное количество товара превышает его фактическое количество.
Открыть окно редактирования хранимых процедур и добавить в него новую процедуру CheckQuant:
procedure CheckQuant
nCdGoods = Ordsaied.iCdGoods
* определяем фактическое количество товара
SELECT nFactQuant;
FROM Goods;
WHERE iCdGoods = nCdGoods;
INTO ARRAY nQuant
* сравниваем заказанное количество с имеющимся на складе
RETURN Ordsaied.nQuant(1) <= nQuant(1)
Условия достоверности ввода данных на уровне записей
Условия достоверности позволяют контролировать ввод данных средствами сервера на уровне записей и полей таблицы. В первом случае условие определяется в окне ввода свойств таблицы, а во втором — в окне свойств полей таблицы. Проверка на уровне записи обычно используется, если необходима проверка при добавлении или удалении записи, а также, если условие проверки изменения записи требует анализа более одного поля.
Для определения свойств таблицы необходимо открыть окно конструктора для выбранной таблицы и перейти на вкладку Table (Таблица) (рис.3).
Рис.3 Определение свойств таблицы
Для определения достоверности ввода данных могут использоваться триггеры добавления и изменения и поля ввода Rule (Условие) и Message (Сообщение) области Record validation (Проверка правильности ввода записей). В поле Rule (Условие) вводится логическое выражение, которое может содержать вызов хранимой процедуры. Если значение этого выражения равно True (Истина), то считается, что введены допустимые данные и разрешается переход на другую запись или закрытие таблицы. В противном случае выводится сообщение об ошибке, которое было задано в поле Message (Сообщение).
Триггеры
Триггер – это выражение, значение которого вычисляется при наступлении определенного события. Это значение может быть только логического типа (.N. или .F.)
В Visual FoxPro для таблиц, входящих в состав базы данных, можно определить триггеры, приведенные в табл.1.
Таблица 1
Триггеры
Триггер |
Описание |
Insert (Вставить) |
Определяет действия, которые будут выполняться после добавления новой записи в таблицу |
Update (Обновить) |
Определяет действия, которые будут выполняться после изменения записи таблицы |
Delete (Удалить) |
Определяет действия, которые будут выполняться после удаления записи из таблицы |
Для определения триггеров необходимо ввести в поля ввода Insert trigger (триггер Вставить), Update trigger (триггер Обновить) или Delete trigger (триггер Удалить) вкладки Table (Таблица) окна конструктора выбранной таблицы операторы сравнения, вызов хранимой процедуры или любое логическое выражение. Если результат вычисления выражения равен True (Истина), то считается, что введены допустимые значения. В противном случае сохранения введенных данных не происходит и формируется сообщение об ошибке. При использовании хранимых процедур можно не только проверить условие достоверности ввода данных, но и задать действия, выполняемые при добавлении, удалении и изменении данных.
Вызов триггера Delete (Удалить) осуществляется:
при выполнении команды DELETE;
при пометке записи на удаление в режиме Browse (Обзор) или Edit (Правка).
Вызов триггера Insert (Вставить) осуществляется:
при выполнении команд APPEND FROM, APPEND FROM ARRAY,-APPEND BLANK;
при добавлении в таблицу новой записи в режиме Browse (Обзор) или Edit (Правка);
при выполнении команд IMPORT, INSERT SQL, RECALL;
при снятии метки об удалении записи в режиме Browse (Обзор) или Edit (Правка).
Вызов триггеар Update (Обновить) осуществляется:
при наступлении любого события, которое приводит к модификации записи (например, при изменении значения поля);
при выполении команд GATHER, REPLACE, REPLACE FROM ARRAY, UPDATE SQL.
Если выражение триггера вернет истину, то сделанные модификации принимаются и записываются в БД. Иначе модификации отвергаются и генерируется ошибка с кодом 1539 (ошибка триггера). Уточнить, какой именно вид триггера вызвал ошибку, можно, использую функцию ARERROR().
Триггер является последним этапом проверки корректности введенных данных. После него уже идет собственно модификация данных без еще каких-либо проверок. Причем триггер реагирует только на окончательную (физическую) модификацию данных. Функции триггеров хранятся в хранимых процедурах, т.к. это действия, которые напрямую связаны с данными и не должны зависеть от приложения.
При использовании триггеров необходимо учитывать ограничения, имеющиеся в Visual FoxPro.
При модификации записей, помеченных для удаления, и выполнении команды PACK триггеры не вызываются.
Выполнение команды ZAP не вызывает триггер Delete (Удалить).
При использовании буферизации ввода триггер update (Обновить) вызывается только при вызове функции TABLEUPDATE ().
Для удаления триггера в окне конструктора необходимо перейти на вкладку Table (Таблица) и очистить поле ввода выражения для триггера или использовать команду DELETE TRIGGER.
Контрольные вопросы:
Что такое ограничение целостности?
В чем важность задания ограничения целостности?
Какие виды ограничений целостности существуют?
Какие способы задания ограничений целостности существуют?
Объясните роль триггеров для контроля целостности данных?
Для чего используются хранимые процедуры?