Иллюстрированный самоучитель по Delphi 7 для профессионалов

Доступ к связанным наборам данных и командам ADO

Компонент TADOconnection обеспечивает доступ ко всем компонентам, которые используют его для доступа к хранилищу данных ADO. Все открытые таким образом наборы данных доступны через индексированное свойство:

property DataSets[Index: Integer]: TCustomADODataSet;

Каждый элемент этого списка содержит дескриптор компонента доступа к данным ADO (тип TCustomADODataSet). Общее число связанных компонентов с наборами данных возвращается свойством:

property DataSetCount: Integer;

Для этих компонентов можно централизованно установить тип используемого курсора при помощи свойства:

type TCursorLocation = (clUseServer, clUseClient); property CursorLocation: TCursorLocation;

Значение clUseClient задает локальный курсор на стороне клиента, что позволяет выполнять любые операции с данными, в том числе не поддерживаемые сервером.

Значение cIUseServer задает курсор на сервере, который реализует только возможности сервера, но обеспечивает быструю обработку больших массивов данных.

Например:

for i: = 0 to ADOConnection.DataSetCount -1 do
begin
if ADOConnection.DataSets[i].Active = True then ADOConnection.DataSets[i].Close;
ADOConnection.DataSets[i].CursorLocation: = clUseClient; end;

Помимо наборов данных компонент TADOConnection обеспечивает выполнение команд ADO. Команду ADO инкапсулирует специальный компонент TADOCommand, который рассматривается ниже. Все команды ADO, работающие с хранилищем данных через это соединение, доступны для управления через индексированное свойство:

property Commands[Index: Integer]: TADOCommand

Каждый элемент этого списка представляет собой экземпляр класса TADOCommand.

Общее число доступных команд возвращается свойством:

property CommandCount: Integer

Например, сразу после открытия соединения можно выполнить все связанные команды ADO, реализовав таким образом нечто вроде скрипта:

procedure TForml.ADOConnectionConnectComplete(Connection: TADOConnection;
const Error: Error; var EventStatus: TEventStatus);
var i, ErrorCnt: Integer;
begin
if EventStatus = esOK then
for i: = 0 to ADOConnection.CommandCount – 1 do
try if ADOConnection.Commands[i].CommandText <>
then ADOConnection.Commands[i].Execute; except
on E: Exception do Inc(ErrorCnt);
end;
end;
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.