Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Фильтры. Просматривать таблицы, содержащие большое число записей, неудобно




Просматривать таблицы, содержащие большое число записей, неудобно. Часто требуется выделить только группу записей, связанных некоторым условием. Пусть нам требуется отобрать все игры, выпущенные до 2001 года, или получить список несыгранных игр или игр, у которых оценка Payability не ниже 8. Для этого набор данных надо отфильтровать по заданному условию.

Такое условие (оно называется запросом) записывается в свойство Filter набора данных в виде текстовой строки и содержит логическое выражение, в котором используются поля текущего набора данных, константы, логические операции и операции отношения.

Например, чтобы выявить все несыгранные игры, у которых каждая из оценок не ниже 5, надо записать в свойство filter следующую строку

Playability >= 5 and Graphics >= 5 and

Sound >= 5 and Played = False

При запуске программы в списке DBGridl отображаются только записи, удовлетворяющие данному условию.

ВНИМАНИЕЧтобы разрешить фильтрацию значений, надо свойство набора данных Filtered установить равным True.

Если строка заносится в свойство Filter не на этапе проектирования, а во время работы программы (например, по щелчку на кнопке), то отбор нужных записей выполняется динамически.

На структуру условия накладываются определенные ограничения. Для многих автономных и файл-серверных СУБД (в частности, используемой в нашем примере СУБД Paradox) не допускается сравнивать значения полей друг с другом.

Sound < Graphics (недопустимо!)

В то же время, большинство клиент-серверных СУБД такую возможность поддерживают. Это связано с особенностями реализации языка SQL.В процессе фильтрации можно использовать дополнительные настройки свойства FiLterOptions. Настройка foCaselnsensitive определяет, будет ли учитываться регистр при сравнении текстовой информации, а настройка fo No Parti aLCom pare позволяет выполнить фильтрацию по полному совпадению значений текстовых полей или

считать строки одинаковыми, если одна из них заканчивается звездочкой. '123*' = '12345'

 

 

Выделение диапазонов

Использование фильтров позволяет формировать очень сложные запросы, однако на больших наборах данных фильтрация происходит медленно. Поэтому для компонента TTable реализована группа методов, позволяющих оперативно задавать допустимые границы значений для конкретных полей таблицы базы данных.

При использовании большинства файл-серверных СУБД данный метод работает только с индексированными полями.

Первым вызывается метод

procedureSetRangeStart;

Он приводит таблицу в состояние приема начального значения диапазона. За этим методом должны следовать операторы присваивания начальных значений индексированным полям.

Далее вызывается метод

procedure SetRangeEnd;

С его помощью аналогичным способом задается конечная граница диапазона.

Отбор записей, попавших в сформированный диапазон, осуществляется обращением к методу

procedureApplyRange;

Например, если требуется по щелчку на кнопке Buttonl отобрать все записи, в которых значение поля Playability не меньше 5 и не больше 10, можно использовать следующий код:

procedureTForml.ButtonlClicklSender: TObject);

begin

DataModule2.Games.SetRangeStart ;

DataModule2.Games.FieldByNarael'Playability1).Aslnteger := 5;

DataModule2.Games.SetRangeEnd;

DataModule2.Games.FieldByName('Playability1).Aslnteger := 10;

DataModule2.Games.ApplyRange;

end;

Для отмена режима работы таблицы с применением диапазона служит метод

procedure CancelRange;


Поделиться:

Дата добавления: 2015-04-11; просмотров: 75; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.005 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты