Для перемещения по записям внутри таблицы объект TDataSet обладает следующими методами и свойствами:
· procedure First.
· procedure Last.
· procedure Next.
· procedure Prior.
· property BOF: Boolean read FBOF.
· property EOF: Boolean read FEOF.
· procedure MoveBy(Distance: Integer).
Метод Table.First перемещает указатель к первой записи в таблице. Метод Table.Last перемещает указатель к последней записи в таблице. Методы Table.Next и Table.Prior перемещают указатели на одну запись вперед и назад соответственно. Свойства BOF и EOF указывают на начало и конец таблицы. Метод MoveBy перемещает указатель на определенное число записей к началу или концу таблицы. Метод Table.MoveBy(1) аналогичен методу Table.Next, а метод Table.MoveBy(-1) аналогичен методу Table.Prior.
Рассмотрим на примере описанные методы и свойства объекта TDataSet. Необходимо поместить в форму следующие компоненты: DataSource, Table, DBGrid, DBNavigator, 4 компонента Button и компонент SpinEdit. Кнопкам Button необходимо присвоить следующие имена: NextBtn, PriorBtn, FirstBtn, LastBtn, ReturnBtn, GoEndBtn и MoveBtn. Посредством свойства DataSource требуется установить связь компонентов DBGrid1 и DBNavigator1 с компонентом DataSource1. Используя свойство DataSet компонента DataSource1, необходимо установить связь с компонентом Table1. Достаточно выбирать из списков DataBaseName псевдоним DBDEMOS и TableName имя таблицы CUSTOMER и установить свойство Active таблицы в состояние True. После выполнения данной операции в компоненте DBGrid1 появятся данные таблицы CUSTOMER (рис.2).
Доступ к данным в период дизайна
Рис.2
Теперь можно запустить приложение на выполнение и проследить перемещение по полям таблицы посредством нажатия соответствующих кнопок компонента DBNavigator1 и полос прокруток компонента DBGrid1.
Компонент DBNavigator обладает практически всеми необходимыми свойствами и методами управления таблицей. Однако нашей задачей является рассмотрение вопроса программного управления объектом TDataSet без использования универсального элемента управления DBNavigator. Поэтому, для обработчиков событий OnClick кнопок необходимо написать строки, приведенные в примере 1.
Пример 1
procedure TForm1.NextBtnClick(Sender: TObject);
Begin
Table1.Next;
end;
procedure TForm1.PriorBtnClick(Sender: TObject);
Begin
Table1.Prior;
end;
procedure TForm1.FirstBtnClick(Sender: TObject);
Begin
Table1.First;
end;
procedure TForm1.LastBtnClick(Sender: TObject);
Begin
Table1.Last;
end;
Теперь можно запустить приложение и проверить функционирование кнопок.
При работе с базами данных часто возникает необходимость изменять значения полей для всей таблицы. С этой целью удобно использовать свойства TDataSet.BOF и TDataSet.EOF.
TDataSet.BOF – read-only Boolean свойство, используется для проверки, находитесь ли Вы в начале таблицы. Свойства BOF возвращает true в трех случаях:
· После того, когда пользователь открыл файл.
· После того, когда пользователь вызывал TDataSet.First.
· После того, когда вызов TDataSet.Prior не выполняется.
Первые два пункта – очевидны. Когда пользователь открывает таблицу, выполняется помещение на первую запись. Когда вызывается метод First, также происходит перемещение указателя в начало таблицы. Метод Prior требует небольшого пояснения. После того, когда пользователь многократно вызывает метод Prior, возникает ситуация достижения начала таблицы, и следующий вызов Prior будет неудачным. При этом BOF возвратит значение True. Используя данное свойство, можно определить достижение начала таблицы, как показано в примере 2.
Пример 2
procedure TForm1.ReturnBtnClick(Sender: TObject);
Begin
Table1.Last;
while not Table1.Bof do
Begin
{ В данном месте должен находиться текст модификации
полей таблицы.}
Table1.Prior;
end;
end;
Аналогично свойству BOF применяется свойство EOF для проверки достижения конца таблицы. EOF возвращает True в следующих трех случаях:
· После того, когда пользователь открыл пустой файл.
· После того, когда пользователь вызывал TDataSet.Last.
· После того, когда вызов TDataSet.Next не выполняется.
Пример 3 демонстрирует простой способ перемещения по всем записям таблицы, начиная с первой записи.
Пример 3
procedure TForm1.GoEndBtnClick(Sender: TObject);
Begin
Table1.First;
while not Table1.EOF do
Begin
{В данном месте должен находится текст модификации полей таблицы.}
Table1.Next;
end;
end;
Для перемещения на заданное число записей в любом напрвлении используется метод MoveBy. Пример 4 демонстрирует указанный метод.