FoxPro8
938aad90

Условия достоверности ввода данных на уровне записей


В реляционных базах данных, к которым относится и Visual FoxPro, для управления данными могут использоваться не только прикладные программы, но и непосредственно сервер базы данных. Данная возможность реализуется с помощью условий достоверности ввода данных, триггеров и хранимых процедур, которые являются неотъемлемой частью базы данных. Удобным средством просмотра хранящейся в базе данных информации являются представления данных, которые содержат результат выборки из одной или нескольких таблиц, удовлетворяющих заданному условию. Представления данных имеют много общего с запросами и таблицами. Так же, как и для запросов, вы можете связывать несколько таблиц, указывать отображаемые поля, задавать условие выборки. Просмотр представления данных осуществляется аналогично просмотру таблицы Visual FoxPro.

Условия достоверности позволяют контролировать ввод данных средствами сервера на уровне записей и полей таблицы. В первом случае условие определяется в окне ввода свойств таблицы, а во втором — в окне свойств поля таблицы. Проверка на уровне записи обычно используется, если необходима проверка при добавлении или удалении записи, а также если условие проверки изменения записи требует анализа более одного поля.

При определении условий достоверности ввода данных используются триггеры и хранимые процедуры. Триггеры задают действия, выполняемые при добавлении, удалении или изменении записей таблицы. Хранимые процедуры содержат наиболее часто используемые процедуры, выполняемые сервером базы данных. Если вы определили условия достоверности ввода данных, их проверка осуществляется независимо от способа изменения данных в таблице.

Для определения свойств таблицы откройте окно конструктора для выбранной таблицы и перейдите на вкладку Table (Таблица) (рис. 14.1).

Рис. 14.1. Определение свойств таблицы

Для определения достоверности ввода данных могут использоваться триггеры добавления и изменения и поля ввода Rule (Условие) и Message (Сообщение) области Record validation (Проверка правильности ввода записей). В поле Rule (Условие) вводится логическое выражение, которое может содержать вызов хранимой процедуры. Если значение этого выражения равно True (Истина), то считается, что введены допустимые данные и разрешается переход на другую запись или закрытие таблицы. В противном случае выводится сообщение об ошибке, которое было задано в поле Message (Сообщение).


Для определения условия достоверности ввода данных на уровне поля таблицы используется область Field validation (Проверка правильности ввода) вкладки Fields (Поля) окна конструктора таблиц. В поле Rule (Условие) задается логическое выражение, а в поле Message (Сообщение) — сообщение, отображаемое на экране, если логическое выражение возвращает значение False.

Определим условие достоверности данных для поля nQuant, содержащего количество купленного товара, таблицы ordsaled. При вводе количества товара необходимо автоматически проверять его фактическое количество на складе.

Для определения данного условия достоверности данных выполните следующие действия:

  • Откройте проект sales.
  • Перейдите на вкладку Data (Данные).


  • В разделе Tables (Таблицы) выберите таблицу ordsaled и нажмите кнопку Modify (Модифицировать).
  • В окне конструктора таблицы выберите поле nQuant.
  • В поле ввода Rule (Условие) области Field validation (Проверка правильности ввода) введите вызов функции CheckQuant ( ) .
  • В поле ввода Message (Сообщение) введите текст сообщения: "Заказанное количество товара превышает его фактическое количество"(рис. 14.6).
  • Откройте окно редактирования хранимых процедур и добавьте в него новую процедуру CheckQuant:
  • procedure CheckQuant

    nCdGoods = Ordsaled.iCdGoods

    * определяем фактическое количество товара

    SELECT nFactQuant;

    FROM Goods;

    WHERE iCdGoods = nCdGoods;

    INTO ARRAY nQuant

    * сравниваем заказанное количество с имеющимся на складе

    RETURN Ordsaled.nQuant(1) <= nQuant(1)

    Рис. 14.6. Определение условия достоверности для поля nQuant



    Содержание раздела