Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ООП_самостійне_опрацюв.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
1.22 Mб
Скачать

Тема 4.8. Приклади застосування пошуку.

Метод Locate| використовується для пошуку інформації в базі даних. Він шукає перший запис, що задовольняє критерію пошуку, і, якщо такий запис най|дена|, робить|чинить| її поточною. У випадку вдалого пошуку метод повертає True | інакше – Fal|se|.

До складу параметрів цього методу входить список KeyFields|. У цьому параметрі указується|вказує| список полів (мінімум одне), по яких проводитиметься|вироблятиме| пошук. В тому випадку, якщо|у тому випадку , якщо| пошук проводитиметься|вироблятиме| по декількох полях їх назви перераховуються через крапку з комою. Значення полів, по яких проводитися|виробляти| пошук, задаються у варіантному масиві KeyValues|.

У властивості TLocateOption| задаються необов'язкові додаткові опції пошуку:

Значення loCaselnsensitive| указує|вказує|, що пошук ведеться без урахування регіст|ра| символів.

Значення ToPartialKey| використовується в тому випадку, якщо|у тому випадку , якщо| ключові|джерельні| значення полів пошуку можуть включати тільки|лише| частину|частку| значення поля. Наприклад, якщо у ключі|джерелі| пошуку задано значення NN|, а поле міститься|утримується| значення NNOR|, то метод зупинить пошук на цьому записі, оскільки|тому що| вона містить|утримує| в своєму полі частина|частка| ключового|джерельного| значення.

Метод Locate| дозволяє проводити|виробляти| пошук по будь-якому полю. Поля, по яких| проводитиметься|вироблятиме| пошук, можуть не бути первинним ключем|джерелі| і мож|жуть| не індексуватися. Але|та| якщо поле, по якому проводиться|виробляє| пошук, вклю|чено| в той або інший індекс, метод використовує його.

Приклад використання Locate:

var|

LocateSuccess|: Boolean|;

SearchOptions|: TLocateOptions|:

begin|

SearchOptions| :=[loPartialKey|];

LocateSuccess|:=CustTab1e|.Locate('Company|,Vendor|',VarArrayOf|(['Sight|Diver','Point|']), SearchOptions|);

end|;

У прикладі|зразку| проводиться|виробляє| пошук в наборі даних по полях Company| і Vendor|.

Втім, пошук можна проводити|виробляти| з|із| тяжчими умовами. Метод Lookup| знаходить|находить| запис, що точно задовольняє умовам пошуку. Цей метод не пе|реводить курсор на знайдений запис, але повертає значення деяких полів знайденому запису у вигляді варіантного масиву.

У списку KeyFields| указується|вказує| список полів, по яких проводитиметься|вироблятиме| пошук. Якщо пошук ведеться по декількох нулях, то вони розділяються крапкою |точкою|з|із| комою. У масиві KeyValues| указуються|вказують| ключові|джерельні| значення, по яких проводитиметься|вироблятиме| пошук. У списку ResultFields| указуються|вказують| поля, які будуть повернені у варіантному масиві у випадку, якщо|у разі , якщо| пошук опиниться вдалим|.

Нижче приведений приклад|зразок|, в якому проводиться|виробляє| пошук по полю Company| значення Professional Divers|, Ltd|. В результаті повертається варіантний масив, що містить|утримує| значення полів Company|, Contact| і Phone|.

Приклад використання Lookup. Пошук по одному полю:

var|

LookupResults|: Variant|:

begin|

LookupResults|:=CustTable|.Lookup('Company|', 'Professional| Divers|Ltd|', 'Company|; Contact; Phone|');

end|;

Далі приведений приклад|зразок|, аналогічний прикладу|зразку|, приведеному вище. Відмінність|відзнака| полягає в тому, що в даному прикладі|зразку| пошук прово|диться| по декількох полях.

Використання Lookup. Пошук по декількох полях:

var|

LookupResults|: Variant|;

begin|

with| CustTable| do|

LookupResults|:=Lookup('Company',| 'City|', VarArrayOf|(['Sight| Diver|', 'Christiansted']), 'Company; Addrl; Addr2; State; Zip1);

end|;

У випадку, якщо|у разі , якщо| метод нічого не знайшов, він повертає значення null|. Перевірити| дану умову можна за допомогою умовного оператора if| VarJype(LookupResults|) = varNull|.

Властивість Filter дозволяє задати критерії фільтрації. Набір даних буде відфільтрований, як тільки його властивість Filtered прийме значення True.

У умову фільтрації можна включати логічних операторів and, or, not <>i <, >( <=, >=.

Наприклад:

1. ([size|] > 20) and| ([size|] <= 40).

2. ([size|] > 20) and| ([weight|] < 30).

3. ([name|] <> 'Tetras|') and| ([size|] < 10).

Як видно|показний| з|із| приведених прикладів|зразків|, порівняння заданої умови прово|диться| із|із| значенням поля.

За допомогою властивості FilterOptions| можна задати необов'язкові параметри фільтрації, як і для методу Locate|.

Подія OnFilterRecord| виникає, коли у властивості Filtered| встановлюється значення True|. Метод-обробник події TFilterRecordEvent| має два пара|метра. У параметрі DataSet| передається фільтрований набір даних, а в пара|метрі Accept| – змінна, в яку поміщається значення True| у випадку, якщо |у разі , якщо|поточний запис відповідає умовам фільтрації. Приклад|зразок| приведений нижче.

Приклад використання події OnFilterRecord

procedure| TForml|.TablelFilterRecord(DataSet|: TDataSet|;var| Accept|: Boolean|):

begin|

Accept:=|((DataSet|.FieldByName('Size|').AsInteger+2)<10)

and| ((DataSet|.FieidByNameC'Weight').AsFloat/2) <2);

end|;

У сучасних умовах практично всі операції вибірки, сортування пошуку здійснюються засобами|коштами| SQL|.

Питання для самоконтролю:

  1. Які існуються методи пошуку?

  2. Яка різниця між методами Locate і Lookup?

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]