Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа7.doc
Скачиваний:
5
Добавлен:
06.11.2018
Размер:
461.82 Кб
Скачать
    1. Сортировка и фильтрация

Сортировка записей в наборе данных Table идет только по текущему индексу. Для его задания у компонента Table существуют два взаимозаменяемых свойства IndexName, задающее имя индекса, и IndexFieldNames, задающее через точку с запятой индексные поля. Если индекс задаваемый свойствами IndexName или IndexFieldNames не существует, то появится сообщение об ошибке.

Получить доступ к полям в составе текущего индекса можно с помощью свойства IndexFields. На количество полей индекса указывает свойство IndexFieldCount. Для доступа ко всем индексам, определенных для таблицы, используется свойство IndexDefs.

Фильтрация – задание ограничений для записей, отбираемых в набор данных, бывает по выражению и по диапазону.

Фильтрация по выражению применима к любым полям, но так как в процессе отбора просматриваются все записи таблицы, этот метод эффективен при небольшом количестве записей. Для активизации фильтра используется свойство Filtered: если установить его в True – фильтрация включена, иначе – выключена. Для задания выражения фильтра используется свойство Filter. Значения свойства Filter задает условие на поля набора данных и набор данных будет содержать только те поля которые удовлетворяют ему. Правило построения условий такие же как и у условного оператора IF, например:

Table1.Filter:='(Name>=''А'' and Name<''Г'')';

Обратите внимание, как вставляется кавычка в текстовую константу (при задании значения свойства через Object Inspector кавычка вставляется обычным образом, без удвоения).

Можно указать параметры фильтрации – свойство FilterOptions:

  • foCaseInsensitive – регистр букв не учитывается, т.е. слова 'Иванов', 'ИВАНОВ', 'ивАнов' будут восприняты как одинаковые;

  • foNoPartialCompare – выполняется проверка на полное соответствие. Если известны только первые символы строки, то нужно указать их, заменив остальные звездочками и выключить эту опцию. Например, фильтр Name='Ив*' отберет записи, содержащие в поле Name значения 'Ив', 'Иванов', 'Иванова', 'Ивашов' …

Фильтрация по диапазону включает в набор данные, значения которых попадают в заданный диапазон. Эта фильтрация идет по текущему индексу и за счет этого выполняется быстрее. Включение/выключение этого метода фильтрации происходит методами ApplyRange и CancelRange. Чтобы задать верхнюю и нижнюю границу диапазона используйте методы SetRangeStart и SerRangeEnd соответственно и затем присвойте нужные значения полям фильтра. Пример:

procedure TForm1.Button1Click(Sender: TObject);

begin

with Table1 do begin

IndexName:='indNameBirthday';{выбираем текущий индекс}

SetRangeStart; {задаем начало диапазона}

FieldByName('Name').AsString:='А'; { Имя отА”…}

FieldByName('BirthDay').AsString:='01.01.80'; {и день рожденья не раньше чем 01.01.80}

SetRangeEnd; { задаем конец диапазона }

FieldByName('Name').AsString:='Б'; { ИмядоБ”}

ApplyRange; {включаем фильтрацию}

end;

end;

    1. Поиск записей

Поиск записи, удовлетворяющей определенным условиям, означает переход на эту запись

Функция Locate ищет записи с заданными значениями полей. Если удовлетворяющие условиям поиска записи существуют, то текущей становится первая из них и функция возвращает значение True, иначе – значение False и смены текущей записи не происходит. Первым параметром функции Locate задается список имён полей, по которым ведется поиск. Если полей несколько, то они разделяются точкой с запятой. Второй параметр типа Variant содержит значения этих полей для поиска. При поиске по нескольким полям, для приведения значений к типу вариантного массива используйте функцию VarArrayOf. Значения должны разделяться запятыми и быть заключены в квадратные скобки, порядок и количество значений должны соответствовать порядку и количеству полей в первом параметре. Третий параметр Locate задает опции поиска:

  • loCaseInsensitive – регистр букв не учитывается;

  • loPartialKey – допускается частичное совпадение полей.

Примеры поиска по одному и нескольким полям: