Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
все лабы по рубд на ibexpert.doc
Скачиваний:
12
Добавлен:
13.08.2019
Размер:
905.22 Кб
Скачать

Лабораторная №8 Сортировка данных. Поиск. Фильтрация.

Цель работы: научиться выполнять сортировку, поиск и фильтрацию в наборах данных.

  • Сортировка набора данных

Сортировка заключается в упорядочивании записей по определенному полю в порядке возрастания или убывания содержащихся в нем значений. Сортировку можно выполнять и по нескольким полям.

Сортировка наборов данных Table выполняется автоматически по текущему индексу. При смене индекса происходит автоматическое переупорядочивание записей. Таким образом, сортировка возможна по полям, для которых создан индекс. Для сортировки по нескольким полям нужно создать индекс, включающий эти поля. Направление сортировки определяет параметр ixDescending текущего индекса.

Список полей, по которым выполняется сортировка наборов данных Query, указывается в операнде ORDER BY. Поля в списке обозначаются именами или номерами, которые соответствуют номерам в списке полей после слова SELECT. По умолчанию сортировка происходит в порядке возрастания значений полей. Для указания обратного порядка сортировки по какому-либо полю нужно указать после имени этого поля описатель DESC.

Задание: Выполнить сортировки в таблицах базы данных Exmpl.gdb.

Таблица

Поле

Порядок сортировки

Owner

Ow

По убыванию

NOn

По убыванию

Lease

Ldate

По возрастанию

Realty

Тур

По алфавиту

Rent

Rn

По возрастанию

  • Поиск записей

Поиск — это нахождение записи, удовлетворяющей определенным условиям, и возврат значений ее полей с возможным переходом на найденную запись. Отметим, что поиск можно вести по одним полям, а возвращать значения других полей. Составы полей для поиска и для возврата значений в общем случае не совпадают.

При организации поиска записей важное значение имеет наличие индекса для полей, по которым ведется поиск. Индексирование значительно повышает скорость обработки данных, кроме того, ряд методов может работать только с индексированными полями. К средствам поиска можно отнести методы Locate, Lookup, FindFirst, FindLast, FindNext и FindPrior, осуществляющие переход на записи, удовлетворяющие условиям фильтра, а также просмотры и курсоры.

  • Поиск в наборах данных

Для поиска записей по полям служат методы Locate и Lookup, причем поля могут быть неиндексированными. Функция Locate (const KeyFields: String; const KeyValues: Variant; Options: TLocateOptions): Boolean ищет запись с заданными значениями полей. Если удовлетворяющие условиям поиска записи существуют, то указатель текущей записи устанавливается на первую из них. Если запись найдена, функция возвращает значение True, в противном случае — значение False. Для поиска в наборе данных также используется функция Lookup(const KeyFields: String; const KeyValues: Variant; const ResultFields: String): Variant осуществляет поиск записи, удовлетворяющей определенным условиям, но, в отличие от метода Locate, не перемещает указатель текущей записи на найденную запись, а считывает информацию из полей записи.

  • Поиск по индексным полям

Для набора данных Table имеются методы, позволяющие вести поиск записей только по индексным полям. Перед вызовом любого из этих методов следует установить в качестве текущего индекс, построенный по используемым для поиска полям. Методы поиска:

  1. FindKey, SetKey, EditKey и GotoKey - поиска на точное соответствие;

  2. FindNearest, SetNearest, EditNearest и GotoNearest, - частичное совпадение заданных для поиска значений и значений полей записей.

Задание: Выполнить поиск информации об объекте и владельцах недвижимости в таблицах базы данных Exmpl.gdb. Проверить информацию об арендованных объектах недвижимости на введенную дату.

  • Фильтрация записей

Фильтрация — это задание ограничений для записей, отбираемых в набор данных. Фильтрация записей бывает: по выражению и по диапазону. Фильтрация похожа на SQL-запросы, но менее эффективна, т. к. ограничивает количество записей, видимых в наборе.

  • Фильтрация по выражению

При использовании фильтрации по выражению набор данных ограничивается записями, удовлетворяющими выражению фильтра, задающему условия отбора записей. Достоинством фильтрации по выражению является то, что она применима к любым полям, в том числе к неиндексированным. В связи с тем, что в процессе отбора просматриваются все записи таблицы, фильтрация по выражению эффективна при небольшом количестве записей. Для задания выражения фильтра используется свойство Filter: string. Если выражение фильтра не позволяет сформировать сложный критерий фильтрации, то можно использовать обработчик события OnFilterRecord. Для активизации и деактивизации фильтра применяется свойство Filtered: boolean. Параметры фильтрации задаются с помощью свойства FilterOptions:TFilterOptions. Это свойство принадлежит к множественному типу и может принимать комбинации двух значений:

  1. foCaseInsensitive — регистр букв не учитывается.

  2. foNoPartiaicompare — выполняется проверка на полное соответствие содержимого поля и значения, заданного для поиска.

Для связанных таблиц на отбор записей в набор данных также влияет ограничение, налагаемое отношением "главный-подчиненный" между таблицами БД.

  • Фильтрация по диапазону

Для включения и выключения фильтрации по диапазону применяются методы ApplyRange - активизирует фильтр и CancelRange – деактивизирует. Методы SetRangeStart и SetRangeEnd устанавливают нижнюю и верхнюю границу диапазона, соответственно. Для изменения предварительно установленных границ диапазона предназначены методы EditRangeStart и EditRangeEnd. Когда одна из границ диапазона не задана, то диапазон открыт, т. е. нижняя граница становится равной минимально возможному, а верхняя граница — максимально возможному значению этого поля. Если фильтрация выполняется одновременно по нескольким полям, то после вызова методов SetRangeStart или SetRangeEnd должны стоять несколько операторов присваивания, каждый из которых определяет границу по одному полю. Предварительно в качестве текущего должен быть установлен индекс, построенный по этим полям.

Задание:

  1. Выполнить отбор информации об объекте и владельцах недвижимости в таблицах базы данных Exmpl.gdb.

  2. Проверить информацию об арендованных объектах недвижимости на введенную период.