Главная страница
Библиотека (скачать книги)
Скачать софт
Введение в программирование
Стандарты для C++
Уроки по C#
Уроки по Python
HTML
Веб-дизайн
Ассемблер в среде Windows
ActiveX
Javascript
Общее о Линукс
Линукс - подробно
Линукс - новое
Delphi
Паскаль для начинающих
Турбопаскаль
Новости
Партнеры
Наши предложения
Архив новостей





Компонент 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. Редактор запросов

Редактор имеет две вкладки - 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



   
 

Библиотека программиста. 2009.
Администратор: admin@programmer-lib.ru