Delphi 3 и создание приложений баз данных

       

Компонент TUpdateSQL: выполнение SQL-операторов


Существует два способа выполнения SQL-операторов, определенных в компоненте TUpdateSQL.

Автоматическое выполнение SQL-операторов компонента TUpdateSQL

При использовании одного компонента TUpdateSQL для занесения подтвержденных изменений в ТБД следует использовать автоматический способ. Он заключается в том, что применение метода TDatabase. Apply Updates для каждой подтвержденной записи приводит к автоматическому выбору и выполнению соответствующего SQL-оператора из компонента TUpdateSQL, ассоциированного с одним из изменяемых НД.

В этом случае не нужно кодировать вызов SQL-операторов из компонента TUpdateSQL.

Использование обработчика события OnUpdateRecord для вызова SQL-операторов компонента TUpdateSQL

Если с НД связано несколько компонентов TUpdateSQL, вызов SQL-оператора из нужного компонента TUpdateSQL производят в обработчике события OnUpdateRecord. Параметры обработчика OnUpdateRecord идентичны параметрам рассмотренного выше обработчика события On UpdateError за исключением отсутствующего параметра Е:

procedure TFormI.QuerylUpdateRecord(DataSet: TDataSet;

UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction);

begin

end;

Для установки значений параметров изменяемой записи используют метод SetParams компонента TUpdateSQL:

procedure SetParams(UpdateKind: TUpdateKind);

UpdateKind -

указывает тип действия:

ukModify -

запись была изменена (скорректировано значение хотя бы одного поля);

uklnsert -

запись была добавлена;

ukDelete -

запись была удалена.

Метод SetParams замещает параметры в SQL-операторе компонента TUpdateSQL значениями соответствующих полей ТБД. Какой SQL-оператор выполнять, определяет значение UpdateKind.

Для выполнения соответствующего SQL-оператора используют метод ExecSQL компонента TUpdateSQL:

procedure ExecSQL(UpdateKind: TUpdateKind);

где UpdateKind указывает тип действия.

Существует также метод Apply, который объединяет в себе функциональность методов SetParams и ExecSQL:

procedure Apply(UpdateKind: TUpdateKind);

Метод Apply в соответствии со значением параметра UpdateKind определяет требуемый SQL-оператор, изменяет параметры этого оператора и затем выполняет его.

Пример.

Обработчик события OnUpdateRecord, содержащий вызов соответствующих SQL-операторов компонента TUpdateSQL:

procedure TFormI.QuerylUpdateRecord(DataSet: TDataSet;

UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction);

begin

WITH DataSet.UpdateObject as TUpdateSQL do begin

SetParams(UpdateKind) ;

ExecSQL(UpdateKind) ;

END;//with

UpdateAction := uaApplied;

end;

ЗАМЕЧАНИЕ.

Значение uaApplied изменяемого параметра UpdateAction обработчика On UpdateRecord подтверждает изменения в данной записи Этот обработчик может иметь более широкое применение, однако поскольку возможности этого обработчика не всегда вписываются в транзакционный способ изменений в БД, в настоящем материале они не рассматриваются; более подробно с этими возможностями можно ознакомиться в Borland Delphi Database Application Developer's Guide

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