Справочное руководство по Delphi

         

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


В этой главе Вы узнаете некоторые факты об открытии и закрытии DataSet.

Если Вы используете TTable для доступа к таблице, то при открытии данной таблицы заполняются некоторые свойства TTable (количество записей RecordCount, описание структуры таблицы и т.д.).

Прежде всего, Вы должны поместить во время дизайна на форму объект TTable и указать, с какой таблицей хотите работать. Для этого нужно заполнить в Инспекторе объектов свойства DatabaseName и TableName. В DatabaseName можно либо указать директорию, в которой лежат таблицы в формате dBase или Paradox (например, C:\DELPHI\DEMOS\DATA), либо выбрать из списка псевдоним базы данных (DBDEMOS). Псевдоним базы данных (Alias) определяется в утилите Database Engine Configuration. Теперь, если свойство Active установить в True, то при запуске приложения таблица будет открываться автоматически.

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

Table1.Open;

Или, если Вы предпочитаете, то можете установить свойство Active равное True:

Table1.Active := True;

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

Также, как имеются два способа открыть a таблицу, так и есть два способа закрыть ее. Самый простой способ просто вызывать Close:

Table1.Close;

Или, если Вы желаете, Вы можете написать:

Table1.Active := False;

Еще раз повторим, что нет никакой существенной разницы между двумя этими способами. Вы должны только помнить, что Open и Close это методы (процедуры), а Active - свойство.



Навигация (Перемещение по записям)

После открытия a таблицы, следующим шагом Вы должны узнать как перемещаться по записям внутри него.

Следующий обширный набор методов и свойства TDataSet обеспечивает все , что Вам нужно для доступа к любой конкретной записи внутри таблицы:

procedure First;


procedure Last;

procedure Next;

procedure Prior;

property BOF: Boolean read FBOF;

property EOF: Boolean read FEOF;

procedure MoveBy(Distance: Integer);

Дадим краткий обзор их функциональных возможностей:



  • Вызов Table1.First перемещает Вас к первой записи в таблице.


  • Table1.Last перемещает Вас к последней записи.


  • Table1.Next перемещает Вас на одну запись вперед.


  • Table1.Prior перемещает Вас на одну запись Назад.


  • Вы можете проверять свойства BOF или EOF, чтобы понять, находитесь ли Вы в начале или в конце таблицы.


  • Процедура MoveBy перемещает Вас на N записей вперед или назад в таблице. Нет никакого функционального различия между запросом Table1.Next и вызовом Table1.MoveBy(1). Аналогично, вызов Table1.Prior имеет тот же самый результат, что и вызов Table1.MoveBy(-1).


  • Чтобы начать использовать эти навигационные методы, Вы должны поместить TTable, TDataSource и TDBGrid на форму, также, как Вы делали это в предыдущем уроке. Присоедините DBGrid1 к DataSource1, и DataSource1 к Table1. Затем установите свойства таблицы:



    • в DatabaseName имя подкаталога, где находятся демонстрационные таблицы (или псевдоним DBDEMOS);


    • в TableName установите имя таблицы CUSTOMER.


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

      Однако, иногда нужно перемещаться по таблице “программным путем”, без использования возможностей, встроенных в визуальные компоненты. В следующих нескольких абзацах объясняется как можно это сделать.

      Поместите две кнопки на форму и назовите их Next и Prior, как показано на рис.2.



      Рис.2 : Next и Prior кнопки позволяют Вам перемещаться по БД.

      Дважды щелкните на кнопке Next - появится заготовка обработчика события:

      procedure TForm1.NextClick(Sender: TObject);

      begin

      end;

      Теперь добавьте a одну строчку кода так, чтобы процедура выглядела так:

      procedure TForm1.NextClick(Sender: TObject);

      begin

      Table1.Next;


      Содержание раздела