Шаг 50.
Работа с локальными БД в Delphi.
Последовательная навигация по записям

    На этом шаге мы рассмотрим некоторые способы, позволяющие последовательно перемещаться по записям.

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

    При программном доступе, прежде всего, нужно убедиться в том, что НД содержит записи. Для этого нужно вызвать метод IsEmpty, который возвращает False, если в НД есть хотя бы одна запись. После использования или редактирования текущей записи переход к следующей записи реализуется методами FindNext или Next. Таким образом, для последовательного доступа ко всем записям НД используются такого рода операторы:

if not Table1.IsEmpty then
 begin
    Table1.First;
    repeat
   {Какие либо действия над очередной записью}
    until not Table1.FindNext;
  end;

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

    Приведем еще один фрагмент кода, решающего эту задачу.

if not Table1.IsEmpty then
  begin
    Table1.First;
    while not Table1.EOF do
    begin
     {Какие либо действия над очередной записью}
     Table1.Next;
    end;
  end;

    Здесь действия над записями происходят, пока курсор не сместился за последнюю запись. Свойство EOF содержит True, если курсор сместился за последнюю запись.

    Если НД разрешает вызов записи по ее номеру (его свойство IsSequenced должно содержать True), можно использовать цикл for.

for i:=1 to Table1.RecordCount do
  begin
      Table1.RecNo:=i;
      {Действия}
  end;

    Свойство RecNo определяет номер текущей записи, RecordCount - содержит количество записей в текущей НД.

    На следующем шаге мы закончим изучение этого вопроса.




Предыдущий шаг Содержание Следующий шаг