Использование Delphi для создания приложений баз данных. Устюгова В.Н. - 24 стр.

UptoLike

Составители: 

24
Существует и другой подход, ориентированный на записи. Он состоит в том, что в
структуре таблицы при ее определении описываются ограничения на значения, которые может
принимать данное поле. В этом случае контроль правильности ведется автоматически.
Пример обработчика события OnValidate. Запретим полю Table2Company содержать
символ «#». Обратите внимание на то, как формируется имя обработчика события для компонента
TField, к имени компонента добавляется имя события без начального «On».
procedure TForml.Table2CompanyValidate(Sender: TField);
begin
IF POS('#',Table2Company.AsString) > 0 THEN
begin
ShowMessage('Обнаружен символ #!');
Abort;
end;
end;
Или
procedure TForml. Table2CompanyValidate (Sender: TField);
begin
IF POS ('#',Table2Company.AsString) > 0 THEN
raise Exception.Create( 'Неверное значение');
end;
Если символ «#» содержится в значении, присвоенном полю, метод Abort или
принудительно возбужденная исключительная ситуация не позволят выполниться методу
Post и запись с неверным полем не будет физически записана в базу данных. Набор
данных не изменится.
Для проверки введенного значения может быть использовано и другое событие,
OnSetText. Подобно событию OnValidate, оно возникает при изменении значения поля.
Однако на момент события новое значение полю не присвоено и, если этого не сделать
программно в обработчике события, сделано никогда не будет.
Пусть в поле Table2PRICE типа TFloatField было изменено значение с 10 на 360. Если
новое значение не должно превышать 150. Тогда обработчик события будет выглядеть так:
procedure TForml.Table2PRICESetText(Sender: TField; const Text: String);
var Tmp : Real;
begin
Tmp :.= StrToFloat(Text) ;
IF Tmp > 150 THEN
ShowMessage('Ошибочное значение')
ELSE
Table2PRiCE.Value := Tmp;
end;
Для этого примера обработчик события OnValidate будет выглядеть так:
procedure TForml.Table2PRICEValidate(Sender: TField);
begin
IF Table2PRICE.Value > 150 THEN
begin ShowMessage('Ошибочное значение'); Abort;
end;
end;
     Существует и другой подход, ориентированный на записи. Он состоит в том, что в
структуре таблицы при ее определении описываются ограничения на значения, которые может
принимать данное поле. В этом случае контроль правильности ведется автоматически.
     Пример обработчика события OnValidate. Запретим полю Table2Company содержать
символ «#». Обратите внимание на то, как формируется имя обработчика события для компонента
TField, к имени компонента добавляется имя события без начального «On».

procedure TForml.Table2CompanyValidate(Sender: TField);
begin
IF POS('#',Table2Company.AsString) > 0 THEN
begin
   ShowMessage('Обнаружен символ #!');
   Abort;
   end;
end;
Или
procedure TForml. Table2CompanyValidate (Sender: TField);
begin
IF POS ('#',Table2Company.AsString) > 0 THEN
raise Exception.Create( 'Неверное значение');
end;

     Если символ «#» содержится в значении, присвоенном полю, метод Abort или
  принудительно возбужденная исключительная ситуация не позволят выполниться методу
  Post и запись с неверным полем не будет физически записана в базу данных. Набор
  данных не изменится.
     Для проверки введенного значения может быть использовано и другое событие,
  OnSetText. Подобно событию OnValidate, оно возникает при изменении значения поля.
  Однако на момент события новое значение полю не присвоено и, если этого не сделать
  программно в обработчике события, сделано никогда не будет.

      Пусть в поле Table2PRICE типа TFloatField было изменено значение с 10 на 360. Если
новое значение не должно превышать 150. Тогда обработчик события будет выглядеть так:
procedure TForml.Table2PRICESetText(Sender: TField; const Text: String);
var Tmp : Real;
begin
Tmp :.= StrToFloat(Text) ;
IF Tmp > 150 THEN
ShowMessage('Ошибочное значение')
ELSE
Table2PRiCE.Value := Tmp;
end;

 Для этого примера обработчик события OnValidate будет выглядеть так:
procedure TForml.Table2PRICEValidate(Sender: TField);
 begin
      IF Table2PRICE.Value > 150 THEN
      begin ShowMessage('Ошибочное значение'); Abort;
     end;
end;


                                            24