Главная » Статьи » Delphi + БД

Урок 30: Изучаем компонент TUpdateSQL и другие

Компонент TUpdateSQL

Компонент TUpdateSQL может быть использован для модификации (добавления, изменения, удаления) данных на сервере с помощью операторов SQL Компонент содержит методы-обработчики, в которых можно определить набор команд, выполняющихся при вызове методов Insert, Delete, Update компонентов TQuery и TTable.

Компонент UpdateSQL может быть связан с компонентами TQuery n TTable через их свойство LJpdateObject, в котором указывается имя компонента. Если используется кэширование данных, то в процессе выполнения транзакции, инициированной методом ApplyUpdates при выполнении вставки, удаления или изменения записи, выполняется заранее определенная последовательность SQL-операторов. Если кэширование не используется, то выполняется немедленная модификация данных при вызове метода Post.

Компонент содержит старые значения полей, которые имело поле до внесения в него изменений, в полях с приставкой «OLD».

Например:
UPDATE "Country.db"
(Name. Capital. Continent)
VALUES (:Name, :Capital, :Continent)
WHERE :OLD_Name = "Rangoon"

Параметр OLD_Name содержит старое значение поля, по которому запись будет обновлена.
  Для управления каждым отдельным обновлением внутри транзакции, переносящей данные из кэша на сервер, можно использовать событие OnUpdateRecord соответствующего компонента с помощью параметров UpdateKind и UpdateAction.

Рассмотрим пример использования данного компонента.
Для начала потребуется создать новый проект, В пет нужно будет добавить модуль данных, и в модуле разместить компоненты TQuery, TUpdateSQL и TDataSource. Созданный модуль данных нужно сохранить с именем UpdateModulе.

Компонент TQuery должен получить имя ModifyQuery, a TDataSource - ModifySource. В примере будет использоваться созданная ранее база данных, содержащая информацию о студентах.
  В свойстве DatabaseNaroe компонента TQuery нужно выбрать из списка псевдоним TestAlias, В свойстве SQL нужно ввести строку SELECT * FROM Students.DB. Затем для компонента нужно активировать режим кэширования. Компонент TQuery потребуется связать с компонентом TUpdateSQL через свойство Update-Object. Двойной щелчок на компоненте TUpdateSQL активирует редактор SQL-запросов (рис. 3.13).

Рис. 3.13. Редактор запросов

Нэтбуки; процессоры; ноутбуки; компьютерные комплектующие: видеокарты, корпуса, оперативная память: dual core e5400, карт-ридеры, ТВ-тюнеры; в online магазине техники - techno.pro, также досконально поясняется в статье "как самостоятельно собрать компьютер".

Редактор имеет две вкладки - Options и SQL. Нa вкладке Options можно определить общие критерии и сгенерировать модифицирующий запрос. Кнопкой Select Primary Keys в поле Key Fields будут выбраны ключевые поля, по которым будут выбираться записи для внесения изменений.

В списке Update Fields указаны поля, изменения которых будут внесены в набор данных или в которые будут добавлены данные. При нажатии на кнопку Dataset Defaults будут выбраны все поля в обоих списках. Кнопкой Generate SQL будут сгенерированы соответствующие SQL-операторы.

После генерации SQL-операторов нужно связать компонент TDataSource с компонентом TQuery через свойство DataSet. Модуль данных надо подключить к форме. Для этого в секции Implementation надо добавить строку подключения
uses UpdateModule;

Теперь на форме надо разместить компонент TDBGrid и связать его с компонентом TDataSource. Потребуется еще настроить заголовки таблицы и разместить на форме три кнопки. В них будут вызываться методы Delete, Post и ApplyUpdates. В листинге 3.3 приведен код, содержащийся в методах-обработчиках.

Листинг 3.3. Код методов-обработчиков
procedure TForml. Del eteBtriClick (Sender: TObject);
begin
DataMod.ModifyQuery.Delete:
end;
procedure TForml.PostBtnClick(Sender: TObject);
begin
DataMod.ModifyQuery.Post:
end:
procedure TForml.SaveBtnClick(Sender: TObject);
begin
DataMod.ModifyQuery.ApplyUpdates:
  end;

На рис. 3.14 показано окно демонстрационного приложения.

Рис. 3.14. Использование компонента TUpdateSQL


Категория: Delphi + БД | Добавил: Шаке (28.02.2012)
Просмотров: 1330
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
/>meta http-equiv=