Компонент 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