Использование триггеров и хранимых процедур
Проверка удовлетворения введенных значений заданному условию
В данном примере определим условие проверки достоверности ввода данных для таблицы ordsaied, содержащей информацию о заказе. Например, при формировании накладной отпуска товара в кредит необходимо сравнивать итоговую сумму заказываемых товаров с максимально допустимым кредитом для данного клиента, содержащимся в таблице customer. Проверку будем осуществлять при вводе каждой позиции заказа.
- Откройте окно проекта sales.
- Выберите в окне проекта таблицу ordsaied и нажмите кнопку Modify (Модифицировать).
- Для определения свойств таблицы перейдите на вкладку Table (Таблица).
- В поле ввода Rule (Условие) области Record validation (Проверка правильности ввода записи) задайте вызов функции checkMaxCredit (), которая сравнивает итоговую сумму заказа с максимально допустимым кредитом клиента.
- В поле Message (Сообщение) области Record validation введите текст сообщения (рис. 14.5) Превышена допустимая сумма кредита клиента.
Рис. 14.5. Определение условия достоверности данных
- Определим функцию CheckMaxCredit как свойство базы данных, поэтому создадим ее в виде хранимой процедуры.
Для создания хранимой процедуры checkMaxCredit в окне редактирования хранимых процедур, которое содержит ранее созданные программы. введите следующий текст:
procedure CheckMaxCredit nCdOrder=Ordsaled.icdOrder ыь номер текущего заказа *вычисляем сумму всех введенных позиций заказа SELECT SUM(Ordsaled.nQuant*Ordsaled.nUnitPrice); FROM Ordsalem, Ordsaied; WHERE Ordsalem.icdOrder = Ordsaied.icdOrder; AND Ordsaied.icdOrder=nCdOrder; INTO ARRAY nSum *определяем максимальный кредит клиента из таблицы Customer SELECT Customer SEEK Ordsalem.icdCustomer *если запись о данном покупателе в таблице Customer есть, возвращаем *результат сравнения суммы заказа с максимальным кредитом IF FOUND() RETURN nSum(l) < CUSTOMER.yCreditLimit ELSE RETURN.F. ENDIF RETURN