- •Вопрос 13
- •Вопрос 14
- •Вопрос 15
- •Вопрос 16 Способы поиска записей в таблице. Обзор.
- •Навигация (Перемещение по записям)
- •Вопрос 17 Поиск записей в наборе данных: фильтрация данных. Примеры использования данного вида поиска в приложении Delphi.
- •Вопрос 18 Поиск записей в нборе данных: последовательный поиск. Примеры использования данного вида поиска в приложениях Delphi для работы с бд .
Вопрос 18 Поиск записей в нборе данных: последовательный поиск. Примеры использования данного вида поиска в приложениях Delphi для работы с бд .
В программах, работающих с базами данных, часто используют поиск данных. Для чего еще нужны базы данных, как не для этого? Самый простой, но в то же время и самый медленный, "тяжеловесный" поиск, это, пожалуй, последовательный перебор. Вы переходите на первую запись таблицы, создаете цикл, который длится до последней записи, и внутри этого цикла проверяете необходимое условие. Также можно делать и обратный перебор, от последней записи к первой. В таблице 3.1 приведены все свойства и методы наборов данных (ТТаЫе/ЛБОТаЫе, ТО^иегу/ЛВОО^иегу), которые могут быть использованы при организации последовательного перебора:
Таблица 3.1. Свойства и методы набора данных, которые могут быть задействованы при последовательном переборе_
Свойства и методы |
Описание |
Eof |
Свойство логического типа. Принимает значение True, если достигнут конец таблицы, или если таблица пуста, и False в противном случае. |
Bof |
Свойство логического типа. Принимает значение True, если достигнуто начало таблицы, и False в противном случае. |
Next |
Метод. Делает текущей следующую запись набора данных. |
Prior |
Метод. Делает текущей предыдущую запись набора данных. |
First |
Метод. Делает текущей первую запись набора данных. |
Last |
Метод. Делает текущей последнюю запись набора данных. |
Пример:
//перешли на первую запись: fDM.TLichData.First; //делать, пока не конец таблицы: while not fDM.TLichData.Eof do begin
if fDM.TLichData['<I>aMJuraH'] = 'Иванов' then
break; //нашли нужную запись, и вышли из цикла fDM.TLichData.Next; //иначе перешли на следующую запись end; //while
Как видно из примера, мы делаем прямой последовательный перебор от первой записи до последней. Получить или изменить значение нужного поля можно, указав имя поля в квадратных скобках после имени набора данных. Например:
Editl.Text := fDM.TLichData['<I>aMmraH']; //получили значение fDM.TLichData['<I>aMmraH']:= Editl.Text; //изменили значение
Приведенный пример поиска нужной записи допустим, если в таблице имеется не более сотни-другой записей, а условная проверка достаточно сложна. Но обычно программисты этот способ не используют, или используют только в крайнем случае. Далее рассмотрим другие способы поиска.
