Обучающие курсы:

Обучение программированию на C# + стажировка
Обучение программированию на Python + стажировка


Главная страница
Библиотека (скачать книги)
Скачать софт
Введение в программирование
HTML
Веб-дизайн
Ассемблер в среде Windows
ActiveX
Javascript
Общее о Линукс
Линукс - подробно
Линукс - новое
Стандарты для C++
Уроки по C#
Delphi
Паскаль для начинающих
Турбопаскаль
Новости
Партнеры
Наши предложения
Архив новостей





Поиск записей и фильтрация в наборах данных

Метод Locate используется для поиска информации в базе данных. Он ищет первую запись, удовлетворяющую критерию поиска, и, если такая запись найдена, делает ее текущей. В случае «удачного» поиска метод возвращает True, в противном случае - False.

В состав параметров этого метода входит список KeyFields. В этом параметре указывается список полей (минимум одно), по которым будет производиться поиск. В том случае, если поиск будет производиться по нескольким полям, их названия перечисляются через точку с запятой. Значения полей, по которым производиться поиск, задаются в вариантном массиве KeyValues.

В свойстве TlocateOption задаются необязательные дополнительные опции поиска:
- Значение loCaselnsensitive указывает, что поиск ведется без учета регистра символов.
- Значение loPartialKey используется в том случае, если ключевые значения полей поиска могут включать только часть значения поля. Например, если в ключе поиска задано значение NN, а поле содержится значение NN0R, то метод остановит поиск на этой записи, так как она содержит в своем поле часть ключевого значения.

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

Листинг 2.3. Пример использования Locate

var
LocateSuccess: Boolean;
SearchOptions: TLocateOptions;
begin
SearchOptions := [loPartialKey];
LocateSuccess := CustTab1e.Locate('Company, Vendor', VarArrayOf(['Sight
Diver','Point']), SearchOptions);
end;

В примере, приведенном в листинге 2.3, производится поиск в наборе данных по полям Company и Vendor.
Впрочем, поиск можно производить с более жесткими условиями. Метод Lookup находит запись, точно удовлетворяющую условиям поиска. Этот метод не переводит курсор на найденную запись, но возвращает значения некоторых полей найденной записи в миле вариантного массива.

В списке KeyFields указывается список полей, по которым будет производиться поиск. Если поиск ведется по нескольким полям, то они разделяются точкой с запятой. В массиве KeyValues указываются ключевые значения, по которым будет производиться поиск. В списке ResultFields указываются поля, которые будут возвращены в вариантном массиве в случае, если поиск окажется успешным.

В листинге 2.4 приведен пример, в котором производится поиск по полю Company значения «Professional Divers. Ltd.». В результате возвращается вариантный массив, содержащий значения полей Company, Contact и Phone.

Листинг 2.4. Использование Lookup. Поиск по одному полю var

var
LookupResults: Variant;
begin
LookupResults := CustTable.Lookup('Company', 'Professional Divers. Ltd.'.
'Company;Contact; Phone');
end;

В листинге 2.5 приведен пример, аналогичный примеру, приведенному в листинге 2.4. Отличие заключается в том, что в данном примере поиск производится по нескольким полям.

Листинг 2.5. Использование Lookup. Поиск по нескольким полям

var
LookupResults: Variant;
begin
with CustTable do
LookupResults := LookupC'Company; City'. VarArrayOf(['Sight Diver'.
'Christiansted']). 'Company; Addrl; Addr2; State; Zip1);
end;

В случае, если метод ничего не нашел, он возвращает значение null. Проверить данное условие можно при помощи условного оператора if VarType(LookupResults)
= varNull.

 

Свойство Filter позволяет задать критерии фильтрации. Набор данных будет отфильтрован, как только его свойство Filtered примет значение True.
В условие фильтрации можно включать логические операторы and, or, not, <>, <, >, <=, >=.

Например:
1. ([size] > 20) and ([size] <= 40).
2. ([size] > 20) and ([weight] < 30).
3. ([name] <> 'Tetras') and ([size] < 10).

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

 



   
 

Библиотека программиста. 2009.
Администратор: admin@programmer-lib.ru