Иерархия компонентов наборов данных

Как уже говорилось, в основе любого приложения баз данных лежат наборы данных, которые представляют собой группы записей. Каждый набор данных инкапсулирован в специальном компоненте. Рассмотрим иерархию компонентов, представляющих наборы данных (рис. 3).

Класс TDataset является базовым классом иерархии, он инкапсулирует абстрактный набор данных и реализует максимально общие методы работы с ним. В него можно передать записи из таблицы базы данных или строки из обычного текстового файла — набор данных будет функционировать одинаково хорошо.

 

Рисунок 3. Иерархия классов, обеспечивающих функционирование набора данных

 

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

Класс TDataSet

Класс TDataSet задает структурную основу функционирования набора данных. Другими словами, это скелет набора данных, к методам которого необходимо лишь добавить требуемые вызовы соответствующих функций реальных технологий.

При решении наиболее распространенных задач программирования в процессе создания приложений баз данных класс TDataSet не нужен. Тем не менее знание основных принципов работы набора данных всегда полезно. Кроме этого, класс TDataSet может использоваться разработчиками в качестве основы для создания собственных компонентов. Поэтому рассмотрим основные механизмы, реализованные в наборе данных.

Открытие и закрытие

Набор данных открывается и закрывается свойством

 

property Active: Boolean;

 

которому соответственно необходимо присвоить значение True или False. Аналогичные действия выполняют методы

 

procedure Open;

procedure Close;

 

Перемещения по набору

После открытия набора данных можно перемещаться по его записям.

На одну запись вперед и назад перемещают курсор соответственно методы

procedure Next;

procedure Prior;

На первую и последнюю запись можно попасть, используя соответственно методы

procedure First;

procedure Last;

Признаком того, что достигнута последняя запись набора, является свойство

property Eof: Boolean;

которое в этом случае имеет значение True.

Аналогичную функцию для первой записи выполняет свойство

property Bof: Boolean;

Перемещение вперед и назад на заданное число записей выполняет метод

function MoveBy(Distance: Integer): Integer;

Параметр Distance определяет число записей. Если параметр отрицательный — перемещение осуществляется к началу набора данных, иначе — к концу.

Для ускоренного перемещения по набору данных можно отключить все связанные компоненты отображения данных. Это делается методом

procedure DisableControls;

Обратная операция выполняется методом

procedure EnableControls;

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

property RecordCount: Integer;

однако использовать его нужно аккуратно, т. к. каждое обращение к этому свойству приводит к обновлению набора данных, что может вызвать проблемы для больших таблиц или сложных запросов. Если вам нужно определить, не является ли набор данных пустым (часто используемая операция), можно использовать метод

function IsEmpty: Boolean;

который возвращает значение True, если набор данных пуст, или уже упоминавшиеся свойства Bof и Eof . Набор данных будет пустым если одновременно оба этих свойства будут иметь значение True.

 

if MyTable.Bof and MyTable.Eof then

ShowMessage('Набор данных пуст');

...

В заключении покажем, как можно пробежаться по всем записям базы данных.

MyTable.First; //встать на первую запись набора

While not MyTable.Eof do Begin //повторяем пока не достигнем конца набора

//Делаем все, что нам надо

….

MyTable.Next; //перейти на следующую запись

End;



php"; ?>