
- •Введение
- •Содержание
- •1. Файловые системы
- •История развития
- •Файловые системы, принципы построения
- •Работа с типизированным файлом
- •Недостатки файловых систем
- •Задание
- •Реляционная таблица
- •Определение домена
- •Создание таблиц в среде Microsoft Access
- •Задание
- •Реляционные ключи
- •Связь между таблицами
- •Обеспечение целостности данных
- •Построение схемы данных средствами Microsoft Access
- •Мастер подстановок
- •Задание
- •Концепция ER-модели
- •Задание
- •Первая нормальная форма (1NF)
- •Вторая нормальная форма (2NF)
- •Третья нормальная форма (3NF)
- •Нормальная форма Бойса-Кодда (BCNF)
- •Четвёртая нормальная форма (4NF)
- •Пятая нормальная форма (5NF)
- •Задание
- •Выборка значений из таблиц – SELECT
- •Порядок сортировки – ORDER BY
- •Ограничение набора данных – WHERE
- •Предикат существования EXISTS
- •Агрегатные функции
- •Группировка данных – Group By
- •Псевдонимы столбцов
- •Псевдонимы таблиц
- •Объединение нескольких таблиц
- •Построение запросов в среде Microsoft Access
- •Задание
- •Вставка новой записи – INSERT
- •Редактирование данных – UPDATE
- •Удаление записей – DELETE
- •Задание
- •Основные типы данных SQL-92
- •Язык определения данных – DDL
- •Задание
- •Подготовка отчёта в среде Access
- •Задание
- •3-х уровневая архитектура ANSI-SPARC
- •Создание форм для ввода данных в Microsoft Access
- •Задание
- •Строка соединения ADO
- •Соединение с хранилищем данных, компонент TADOConnection
- •Установка соединения
- •Пример соединения без регистрации пользователя
- •Информирование о БД
- •Задание
- •Базовый класс доступа к данным TDataSet
- •Открытие и закрытие набора данных
- •Обновление набора данных
- •Перемещение по набору данных
- •Создание закладок и переход к закладке
- •Редактирование записей в наборе
- •Фильтрация набора данных
- •Организация поиска данных
- •Взаимодействие с элементами управления данными
- •Задание
- •Поле таблицы – класс TField
- •Классификация полей по функциональному назначению
- •Классификация полей по типу обслуживаемых данных
- •Обращение к отдельному объекту-полю
- •Задание
- •Поля подстановки
- •Вычисляемые поля
- •Организация отношения главная-подчинённая таблица
- •Задание
- •Поля BLOB
- •Задание
- •Источник данных – компонент TDataSource
- •Общие черты компонентов отображения данных
- •Сетка базы данных – компонент TDBGrid
- •Статический текст – компонент TDBText
- •Строка ввода БД – компонент TDBEdit
- •Многострочный текстовый редактор БД – TDBMemo
- •Изображение БД – компонент TDBImage
- •Список БД – TDBListBox
- •Комбинированный список БД – TDBComboBox
- •Флажок БД – TDBCheckBox
- •Радиогруппа БД – TDBRadioGroup
- •Компонент – TDBCtrlGrid
- •Навигатор – TDBNavigator
- •Задание
- •Создание базы данных
- •Удаление базы данных
- •Создание таблиц
- •Пример создания таблиц средствами Transact SQL
- •Создание представлений
- •Задание
- •Определение и использование переменных
- •Операторы управления Transact-SQL
- •Базовые функции Transact-SQL
- •Хранимые процедуры
- •Триггеры
- •Задание
- •Запрос TADOQuery
- •Хранимая процедура TADOStoredProc
- •Транзакции и их изоляция
- •Управление транзакциями и компонент TADOConnection
- •Задание
- •Построение простейшего документа XML
- •Атрибуты
- •Определение документа DTD
- •Задание

77
Фильтрация набора данных
Фильтрация данных позволяет осуществлять отбор части записей по определённому критерию (критериям) описанным в свойстве:
property Filter: string;
Правила описания фильтра достаточно просты и похожи на синтаксис, используемый в языке SQL в предложении WHERE.
Далее приведём несколько примеров по синтаксису строки фильтра:
ADOTable1.Filter:=’Town=’+ QuotedStr(МОСКВА);
ADOTable1.Filter:=’Town<>’+ QuotedStr(МОСКВА);
ADOTable1.Filter:=’Price>1000 and Price<=2000’;
Для включения (отключения) фильтра необходимо установить в true (false) свойство:
property Filtered : Boolean;
Некоторые особенности в организацию фильтрации данных вносит свойство: property FilterOptions: TFilterOptions;
Значение foCaseInsensitive определяет чувствительность фильтра к регистру символов. Значение foNoPartialCompare разрешает отфильтровывать частичные совпадения.
ADOTable1.Filter:=’Town>’М*’’;
С процессом фильтрации связан специализированный обработчик события:
type TFilterRecordEvent = procedure(DataSet: TDataSet; var Accept: Boolean) of object;
property OnFilterRecord: TFilterRecordEvent;
В рамках указанного события программист получает возможность осуществить более тонкую настройку процесса фильтрации. Параметр DataSet возвращает ссылку на фильтруемый набор данных. С помощью переменной Accept управляется процесс отбора (фильтрации) записей: true – включать запись в результирующий набор, false – не включать.
procedure TForm1.ADOTable1FilterRecord(DataSet: TDataSet; var Accept: Boolean);
begin
{настраиваем фильтр на отбор записей на основе значения в поле Price, в результирующий набор будут включены записи >500 и меньше 1000} ACCEPT:=(DataSet['Price']>'500') and (DataSet['Price']<'1000');
end;
Обработчик события будет работать только в случае, если в true установлено свойство
Filtered.
Организация поиска данных
На уровне класса TDataSet реализован самый универсальный метод поиска Locate. Универсальность метода заключается в том, что он способен осуществлять поиск даже в неиндексированных полях.
function Locate(const KeyFields: String; const KeyValues: Variant; Options: TLocateOptions): Boolean;
Здесь: KeyFields – имя поля (или полей, разделённых точкой с запятой) в которых производится поиск. KeyValues – шаблон (или, когда поиск идёт в нескольких полях – массив шаблонов) по которым будет осуществлён поиск. Параметр Options : TLocateOptions передаётся в квадратных скобках, внутри скобок через запятую значения:
-loCaseInsensitive – поиск нечувствителен к регистру символов. -loPartialKey – допускается поиск по части ключа.
Также допускается оставлять скобки пустыми.
© 2011 г. Д.Л. Осипов