- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Контрольні питання
- •Контрольні питання
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.2: основні конструкції мови.
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.2: основні конструкції мови.
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.2: основні конструкції мови.
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.2: основні конструкції мови
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.2: основні конструкції мови
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.3: галуження і цикли
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.3: галуження і цикли
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.3: галуження і цикли
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.3: галуження і цикли
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.4: елементи інтерфейсу
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.3: галуження і цикли
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.4: елементи інтерфейсу
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.4: елементи інтерфейсу
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.4: елементи інтерфейсу
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.4: елементи інтерфейсу
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.4: елементи інтерфейсу
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.4: елементи інтерфейсу
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.4: елементи інтерфейсу
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.4: елементи інтерфейсу
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.5: основи створення прикладних застосувань
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.5: основи створення прикладних застосувань
- •План заняття
- •Контрольні питання
- •Контрольні питання:
- •Необхідні теоретичні відомості для практичної роботи:
- •Контрольні питання:
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.5: основи створення прикладних застосувань
- •План заняття
- •Проект Delphi
- •Модулей в проект.
- •Контрольні питання
- •Змістовий модуль 2: процедурно-орієнтоване програмування. Програмування графіки
- •Тема 2.1: основи мови object pascal
- •План заняття
- •Контрольні питання
- •Контрольні питання
- •Контрольні питання
- •Змістовий модуль 2: процедурно-орієнтоване програмування. Програмування графіки
- •Тема 2.1: основи мови object pascal
- •План заняття
- •Контрольні питання
- •Змістовий модуль 2: процедурно-орієнтоване програмування. Програмування графіки
- •Тема 2.1: основи мови object pascal
- •План заняття
- •Контрольні питання
- •Контрольні питання
- •Функции преобразования в числовой формат и обратно
- •Контрольні питання
- •Змістовий модуль 2: процедурно-орієнтоване програмування. Програмування графіки
- •Тема 2.1: основи мови object pascal
- •План заняття
- •7.1. Простые типы
- •Контрольні питання
- •Контрольні питання
- •Змістовий модуль 2: процедурно-орієнтоване програмування. Програмування графіки
- •Тема 2.2: графіка, мультимедія та друк
- •План заняття
- •Контрольні питання
- •Контрольні питання
- •Змістовий модуль 2: процедурно-орієнтоване програмування. Програмування графіки
- •Тема 2.2: графіка, мультимедія та друк
- •План заняття
- •Контрольні питання
- •Змістовий модуль 2: процедурно-орієнтоване програмування. Програмування графіки
- •Тема 2.2: графіка, мультимедія та друк
- •План заняття
- •Контрольні питання
- •Контрольні питання
- •Змістовий модуль 2: процедурно-орієнтоване програмування. Програмування графіки
- •Тема 2.2: графіка, мультимедія та друк
- •План заняття
- •Контрольні питання
- •Печать с помощью объекта Printer
- •Подготовка и печать отчетов с помощью QuickReport — компоненты QuickRep, qrSubDetail, qrLabel, qrExpr, qrSysData, qrMemo, qrRichText, qrShape, qrImage
- •Контрольні питання
- •Змістовий модуль 3: масиви. Записи та множини
- •Тема 3.1: масиви
- •План заняття
- •Листинг 1. Инициализация и вывод массива
- •Ввод массива
- •Использование компонента StringGrid
- •Листинг 2. Ввод и обработка массива целых чисел
- •Листинг 3. Процедура обработки события OnKeyPress
- •Листинг 4. Ввод и обработка массива дробных чисел
- •Контрольні питання
- •Объявление записи
- •Инструкция with
- •Ввод и вывод записей в файл
- •Вывод записи в файл
- •Листинг 25. Добавление записей в файл
- •Чтение записи из файла
- •Листинг 26. Чтение записей из файла
- •Контрольні питання
- •Змістовий модуль 3: масиви. Записи та множини
- •Тема 3.3: множини
- •План заняття
- •Контрольні питання
- •Необхідні теоретичні відомості для практичної роботи:
- •Контрольні питання:
- •Змістовий модуль 3: масиви. Записи та множини
- •Тема 3.4: множини обовязкова контрольна робота №28
- •Змістовий модуль 4: файлові структури даних. Динамічні структури даних
- •Тема 4.1: робота з файлами
- •План заняття
- •Объявление файла
- •Назначение файла
- •Вывод в файл
- •Открытие файла для вывода
- •Листинг 20. Создание нового или замещение существующего файла
- •Листинг 21. Добавление в существующий файл
- •Ошибки открытия файла
- •Закрытие файла
- •Пример программы
- •Листинг 22. Простая база данных (запись в файл)
- •Ввод из файла
- •Открытие файла
- •Листинг 23. Обработка ошибки открытия файла (фрагмент программы)
- •Чтение данных из файла
- •Чтение чисел
- •Чтение строк
- •Конец файла
- •Листинг 24.. Чтение из файла
- •Контрольні питання
- •Змістовий модуль 4: файлові структури даних. Динамічні структури даних
- •Тема 4.1: файлові структури даних. Динамічні структури даних
- •План заняття
- •Контрольні питання
- •Указатели
- •Динамические переменные
- •Листинг 27. Создание, использование и уничтожение динамических переменных
- •Листинг 28. Добавление элемента в начало динамического списка
- •Упорядоченный список
- •Добавление элемента в список
- •Листинг 29. Добавление элементов в упорядоченный список
- •Удаление элемента из списка
- •Листинг 30. Удаление узла из списка
- •Контрольні питання
- •Необхідні теоретичні відомості для практичної роботи:
- •Контрольні питання:
- •Необхідні теоретичні відомості для практичної роботи:
- •Контрольні питання:
- •Змістовий модуль 4: файлові структури даних. Динамічні структури даних
- •Тема 4.2: динамічні структури
- •План заняття
- •Вариантные переменные
- •Контрольні питання
- •Const-параметры
- •Контрольні питання
- •Змістовий модуль 4: файлові структури даних. Динамічні структури даних
- •Тема 4.2: динамічні структури
- •План заняття
- •Способы вызова подпрограмм
- •Контрольні питання
- •Этапы разработки программы
- •Спецификация
- •Создание установочного диска
- •Алгоритм и программа
- •Контрольні питання
- •Этапы разработки программы
- •Спецификация
- •Создание установочного диска
- •Алгоритм и программа
- •Контрольні питання
- •Контрольні питання
- •Необхідні теоретичні відомості для практичної роботи:
- •Контрольні питання:
- •Змістовий модуль 6: програмування з графами. Візуальні компоненти. Бази даних
- •Тема 6.2: Візуальні компоненти
- •План заняття
- •Контрольні питання
- •Распознавание источника события, нажатых кнопок и клавиш, координат курсора
- •События клавиатуры
- •Распознавание нажатых клавиш
- •Контрольні питання
- •Создание нового IntraWeb приложения
- •Редактирование главной формы
- •Написание обработчика события для кнопки
- •Запуск созданного приложения
- •Контрольні питання
- •Управляющие кнопки Button и BitBtn
- •Кнопка с фиксацией SpeedButton
- •Группы радиокнопок — компоненты RadioGroup, RadioButton и GroupBox
- •Контрольні питання
- •Листинг 28. Добавление элемента в начало динамического списка
- •Упорядоченный список
- •Добавление элемента в список
- •Листинг 29. Добавление элементов в упорядоченный список
- •Удаление элемента из списка
- •Листинг 30. Удаление узла из списка
- •Змістовий модуль 6: програмування з графами. Візуальні компоненти. Бази даних
- •Упражнения. Совершенствование проекта
- •Контрольні питання:
- •Контрольні питання
- •Упражнения
- •Контрольні питання:
- •Змістовий модуль 6: програмування з графами. Вызуальны компоненти. Бази даних.
- •Тема 6.2: візуальні компоненти
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами. Візуальні компоненти. Бази даних
- •Тема 6.3: форми та меню
- •План заняття
- •Контрольні питання
- •Контекстное всплывающее меню — компонент PopupMenu
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами. Візуальні компоненти. Бази даних
- •Тема 6.4: обробка виключних ситуацій
- •План заняття
- •Конрольні питання
- •Упражнения. Совершенствование проекта.
- •Контрольні питання:
- •Змістовий модуль 6: програмування з графами
- •Тема 6.4: обробка виключних ситуацій
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами. Візуальні компоненти. Бази даних
- •Тема 6.5: організація прикладних застосувань
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами. Візуальні компоненти. Бази даних
- •Тема 6.5: організація прикладних застосувань
- •План заняття
- •Контрольні питанна
- •Змістовий модуль 6: програмування з графами
- •Тема 6.5: організація прикладних застосувань
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.5: організація прикладних застосувань
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.5: організація прикладних застосувань
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.5: організація прикладних застосувань
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.5: організація прикладних застосувань
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.5: організація прикладних застосувань
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами. Візуальні компоненти. Бази даних
- •Тема 6.6: основи баз даних
- •План заняття
- •Классификация баз данных
- •Локальная база данных
- •Удаленная база данных
- •Структура базы данных
- •Контрольні питання
- •Контрольні питання
- •Упражнения
- •Контрольні питання:
- •Змістовий модуль 6: програмування з графами
- •Тема 6.6: основи баз даних
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.6: основи баз даних
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.6: основи баз даних
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.6: основи баз даних
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.6: основи баз даних
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.6: основи баз даних
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами. Візуальні компоненти. Бази даних
- •Тема 6.7: навігація по набору даних. Мова sql. Створення довідкової системи
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.7: навігація по набору даних. Мова sql. Створення довідкової системи
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.7: навігація по набору даних. Мова sql. Створення довідкової системи
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.7: навігація по набору даних. Мова sql. Створення довідкової системи
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.7: навігація по набору даних. Мова sql. Створення довідкової системи
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.7: навігація по набору даних. Мова sql. Створення довідкової системи
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.7: навігація по набору даних. Мова sql. Створення довідкової системи
- •План заняття
- •Insert into Имя таблицы
- •Insert into Имя_таблицы
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.7: навігація по набору даних. Мова sql. Створення довідкової системи
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.7: навігація по набору даних. Мова sql. Створення довідкової системи
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.7: навігація по набору даних. Мова sql. Створення довідкової системи
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.7: навігація по набору даних. Мова sql. Створення довідкової системи
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.7: навігація по набору даних. Мова sql. Створення довідкової системи
- •План заняття
- •Рисование круга
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами. Візуальні компоненти. Бази даних
- •Тема 6.7: навігація по набору даних. Мова sql. Створення довідкової системи обов’язкова контрольна робота №63
- •Змістовий модуль 6: програмування з графами. Візуальні компоненти. Бази даних
- •Тема 6.7: навігація по набору даних. Мова sql. Створення довідкової системи
- •План заняття
Контрольні питання
Надати характеристику метода Ferst, Next, MoveBy, Last
Надати характеристику RecordCount, RecNo
САМОСТІЙНА РОБОТА СТУДЕНТА
Змістовий модуль 6: програмування з графами
Тема 6.6: основи баз даних
Самостійне заняття №41 – Фільтрація
План заняття
Характеристика понять фільтрація та фільтр
Характеристика фільтрації по вираженню
Характеристика фільтрації по діапазону
С помощью фильтров устанавливаются ограничения для записей, которые включаются в состав набора данных. Иными словами, при наложении фильтра в набор данных будут входить не все записи, а только те, которые отвечают условиям фильтрации. Другой способ ввода ограничений на включение записей в набор данных - это использование SQL-запросов, что, вообще говоря, является более мощным средством, чем использование фильтров (о SQL-запросах речь пойдет в следующем разделе).
В Delphi предусмотрены два возможных типа фильтрации записей. Фильтрация может выполняться по выражению или по диапазону. По умолчанию фильтры не установлены, то есть набор данных получает все записи таблицы.
Фильтрация по выражению осуществляется путем установки необходимого значения свойству Filter (тип String) компонента Table. Выражение фильтра представляет собой строку, которая может включать имена полей таблицы, литералы (числа, строки или символы), операции сравнения, арифметические операции, а также круглые и квадратные скобки. Имена переменных в выражении фильтра использовать нельзя. Для того чтобы включить в фильтр значение переменной, его следует предварительно преобразовать в строковый тип.
Несколько примеров того, как могут выглядеть выражения фильтров, приведены ниже:
Fam = 'Сидоров' (выбираются все записи, у которых поле Fam имеет значение «Сидоров»);
Massa*Kolvo > 100 (будут выбраны записи, для которых произведение значения поля Massa на значение поля Kolvo больше 100);
Date >= 03.05.87 and Date <= 03.05.97 (отбираются те записи, для которых значение даты, содержащейся в-поле Date, находится в промежутке от 03.05.87 до 03.05.97);.
Price <= 500 and Tovar <> 'Диван' (выбираются записи, у которых значение поля Price меньше или равно 500 и при этом значение поля Tovar не равно «Диван»).
Если выражение фильтра имеет ошибки, то при попытке его выполнения возникает исключительная ситуация.
В случае, когда задать условие фильтрации с помощью одного выражения нельзя, можно дополнительно использовать обработчик события OnFilterRecord.
Для того чтобы активизировать фильтр, необходимо свойству Filtered присвоить значение True. По умолчанию данное свойство имеет значение False. При этом фильтрация не осуществляется, а значение, содержащееся в свойстве Filter, игнорируется.
Свойство FilterOptions (тип TFilterOptions) задает параметры фильтрации и представляет собой произвольную комбинацию таких двух значений:
■ Caselnsensitive - данная опция устанавливает, что регистр букв не будет учитываться при фильтрации, то есть большие и маленькие буквы не различаются. Например, если задано выражение фильтра Name='Иван' и установлен данный параметр, то будут отобраны записи, у которых содержимое поля Name равно «Иван», «иван», «ИВАН», «ИвАн» и т.д. Все эти значения воспринимаются как одинаковые; ■ foNoPartialCompare - эта опция обеспечивает проверку на полное соответствие значения, задаваемого в выражении фильтра, и содержимого поля. Если данный параметр не используется, то осуществляется проверка на частичное соответствие. Например, выражение фильтра имеет вид Name= 'Иван', тогда для него будут выбраны записи, у которых поле Name имеет значение 'Иванов', 'Иван', 'Иванченко', 'Иванчихин' и т.д. Если же данный параметр установлен, то будут отобраны только записи, для которых значение поля Name равно непосредственно «Иван*». При фильтрации по выражению последовательно просматриваются все записи таблицы. Поэтому, если таблица имеет большой объем либо код обработчика события OnFilterRecord слишком длинный, то наложение фильтра может вызывать определенное замедление работы приложения.
Фильтрация по диапазону означает, что из таблицы будут выбираться только те записи, для которых значение указанного поля попадает в заданный диапазон. Этот способ фильтрации можно применять только для индексированных полей (причем индекс поля, по которому осуществляется фильтрация, должен быть установлен как текущий). В связи с использованием индексно-последовательного метода доступа, фильтрация по диапазону производится быстрее, чем фильтрация по выражению. Данный способ применим только для компонента Table.
Для включения фильтрации по диапазону используется метод ApplyRange, а для ее отключения - метод CancelRange. Предварительно для индексного поля, по которому выполняется фильтрация, устанавливается диапазон допустимых значений. Для этого используются методы SetRangeStart и SetRangeEnd, определяющие, соответственно, нижнюю и верхнюю границы диапазона. Эти методы переводят набор данных в режим dsSetKey, после чего с помощью оператора присваивания задаются необходимые значения границ диапазона.
Изменение границ диапазона выполняется при помощи методов EditRangeStart и EditRangeEnd, действие которых аналогично действию методов SetRangeStart и SetRangeEnd.
Свойство KeyExclusive (тип Boolean) определяет, будут ли включены граничные значения в диапазон при его установке. Если данное свойство имеет значение False (по умолчанию), то граница включается в диапазон, если же свойству присвоено значение True, то граница не входит в диапазон. Свойство KeyExclusive задается отдельно для верхней и нижней границы сразу* же после вызова методов SetRangeStart и SetRangeEnd.
Для диапазона может быть установлена только одна граница. Если определена только нижняя граница диапазона, то будут выбраны все записи, у которых фильтруемое поле имеет значение большее, чем граничное. Если же задана только верхняя граница, то отбираются записи, для которых значение фильтруемого поля меньше этого граничного значения.
Существует возможность установки фильтра по нескольким полям. В этом случае используется несколько операторов присваивания (для каждого фильтруемого поля), а предварительно должен быть создан индекс по этим полям и установлен в качестве текущего.
Пример фильтрации по диапазону показан ниже.
В результате выполнения данного кода будут отобраны все записи, для которых значение поля Rost находится в диапазоне от 150 до 170, а значение поля Ves - от 45 до 65.
Метод SetRange также позволяет осуществлять фильтрацию по диапазону. Этот метод имеет следующий синтаксис:
SetRange (const StartValues, EndValues: array of const.
Этот метод позволяет сразу задать границы диапазона и одновременно произвести фильтрацию. Параметры представляют собой массив констант и содержат, соответственно, значения верхней и нижней границ диапазона. В том случае, когда фильтрация производится по нескольким полям, значения границ перечисляются через запятую. Поля, по которым осуществляется фильтрация, определяются в соответствии с текущим индексом.
Например, установка фильтра, который Позволяет осуществить описанную выше фильтрацию с помощью метода SetRange, выглядит следующим образом:
Tablel.SetRange([150, 45], [170, 65]);
При этом следует помнить, что предварительно обязательно должен быть установлен текущий индекс, построенный по полям
Rost и Ves.
Рассмотрим еще один характерный пример. Пусть требуется выбрать из таблицы всех владельцев автомобиля ВАЗ-2107, фамилия которых начинается с буквы «Р». Задать фильтр для выбора таких записей можно следующим образом.
При выборе фамилий в качестве нижней границы задается «Р», а для установки верхней границы выбора фамилии к символу «Р» добавлена строка «яяя». Фамилии будут выбираться следующим образом. В соответствии с нижней границей будут отобраны все строки, у которых код первой буквы больше кода буквы «Р», т.е. фамилии, начинающиеся с букв Р, С, Т, У, Ф и т.д. Затем из полученного множества значений выбираются те строки, коды первых символов которой меньше кодов букв строки «Ряяя», т.е. фамилии, начинающиеся с букв «Ра...», «Рб...» и т.д., вплоть до «Ря-яю...» (где многоточие означает строку любой длины, состоящую из любых символов). Таким образом, длина фамилии не имеет значения, а выборка осуществляется только по соответствию первых символов строки установленным границам. Другими словами, производится обычный отбор в алфавитном порядке, когда, например, фамилия Рябко стоит в списке ниже, чем Решетников. Поскольку код буквы «я» больше, чем коды других букв, то в результате в набор данных будут включены все записи, поле Fam которых содержит значение, начинающееся с буквы «Р». Вероятность же того, что при осмысленном заполнении таблицы найдутся записи, содержащие поля, которые включают подстроку «яяя», бесконечно близка к нулю.
Метод CancelRange позволяет отменить фильтрацию, выполняемую с помощью методов ApplyRange или SetRange.
Кроме описанных способов фильтрации, существует также возможность навигации в неотфильтрованном наборе данных между записями, удовлетворяющими фильтру. Для этого служат методы FindFirst, FindLast, FindNext и FindPrior. Они обеспечивают, соответственно, поиск первой, последней, следующей и предыдущей записей, которые удовлетворяют критериям фильтрации, заданным в обработчике события OnFilterRecord или свойством Filter. При этом сам набор данных находится в неотфильтрованном состоянии, то есть метод Filtered имеет значение False. Действие перечисленных методов заключается в следующем: они кратковременно переводят набор данных в отфильтрованное состояние (Filtered=True) без визуализации этой фильтрации в DBGrid или другом подобном визуальном компоненте, находят соответствующую запись, устанавливают на. нее курсор и снова переводят набор данных в неотфильтрованное состояние (Filtered=False). Если искомая запись найдена, то методы возвращают значение True, в противном случае - False.