
- •Розділ 1. Об’єктно-орієнтоване програмування
- •Тема 1.1. Візуальне програмування.
- •Тема 1.2. Приклади та застосування інкапсуляції, успадкування, поліморфізму.
- •Тема 1.3. Бібліотека візуальних компонентів vcl та її базові класи.
- •1. Клас tWinControl.
- •2. Клас tСustomControl.
- •3. Клас tGraphicControl.
- •Тема 1.4. Обробка виняткових ситуацій.
- •1. Використовування виняткових ситуацій.
- •2. Протоколювання виняткових ситуацій.
- •3. Коди помилок у виняткових ситуаціях.
- •4. Виняткова ситуація eAbort. Функція Assert.
- •Розділ 2. Мова програмування Object Pascal.
- •Тема 2.1. Середовище Delphi.
- •Тема 2.2. Елементи мови Object Pascal.
- •1. Коментарі.
- •2. Логічні вирази.
- •Тема 2.3. Типи даних, процедури та функції.
- •1. Вказівники та динамічна пам'ять. Динамічна пам'ять
- •Вказівники
- •Виділення і звільнення динамічної пам'яті
- •Процедури і функції для роботи з динамічною пам'яттю
- •Тема 2.4. Управляючі структури Object Pascal.
- •Розділ 3. Програмування в середовищі Delphi.
- •Тема 3.1. Застосування списків. Способи запису/читання зі списків.
- •Є списком CheckBox елементів.
- •Тема 3.2. Масиви.
- •1. Пошук мінімального (максимального) елементу масиву.
- •2. Пошук в масиві заданого елементу.
- •Тема 3.3. Робота з файлами.
- •Тема 3.4. Типи даних визначені програмістом.
- •1. Показники.
- •2. Динамічні змінні.
- •Тема 3.5. Графічні програми.
- •1. Бітові образи.
- •2. Мультиплікація.
- •Властивості компоненту Timer
- •Тема 3.6. Приклади застосування анімацій у Delphi.
- •Тема 3.7. Рекурсія.
- •1. Крива Гільберта.
- •2. Пошук шляху.|колії|
- •Значення властивостей компоненту stringGrid1
- •3. Пошук найкоротшого шляху.|колії|
- •Тема 3.8. Компоненти для інтернету. Компонента tSocketConnection
- •Розділ 4. Бази даних.
- •Тема 4.1. Види баз даних. Структура та зв’язки між таблицями. Бази даних
- •Класифікація баз даних
- •Структура бази даних
- •Модель бази даних в Delphi
- •Тема 4.2. Модифікація структури таблиці в bde.
- •1. Зміна структури таблиці.
- •2. Встановлення перевірок правильності даних.
- •3. Завдання вторинних індексів.
- •Тема 4.3. Об’єкти відображення даних бази даних Delphi.
- •1. Класифікація компонентів відображення даних.
- •2. Елемент керування тdbGrid.
- •3. Компонент tdbEdit.
- •4. Компонент tdNavigator.
- •Тема 4.4. Обчислювальні поля і поля підстановки в Delphi.
- •1. Створення поля підстановки (поля синхронного перегляду).
- •2. Обчислювальні поля.
- •Тема 4.5. Компонента tdbEdit.
- •Тема 4.6. Переміщення по записам таблиці. Набір методів і властивостей tDataSet. Огляд
- •Клас tDataSet
- •Відкриття і закриття DataSet
- •Тема 4.7. Налаштування фільтрів.|
- •Тема 4.8. Приклади застосування пошуку.
- •Тема 4.9. Поєднання різних видів пошуку.
- •Тема 4.10. Типи даних та пошук в діапазоні.
- •Список літератури
Тема 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|.
Питання для самоконтролю:
Які існуються методи пошуку?
Яка різниця між методами Locate і Lookup?