Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Delphi базы.doc
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
5.2 Mб
Скачать

3.1. Установка текущего индекса

В НД Table возможно указание текущего индекса. Его можно установить двумя способами:

  1. С помощью свойства IndexName : String – содержит имя индекса, заданное при его создании (Например, Table1.IndexName:='indTovar';).

  2. С помощью свойства IndexFieldNames : String – содержит имя поля, для которого был создан индекс (Например, Table1.IndexFieldNames:='Tovar';).

Эти свойства являются взаимоисключающими, и установка значения одного из них приводит к автоматической очистке значения другого.

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

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

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

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

3.3. Практическая работа

Отсортировать записи набора данных Table1 для таблицы Tovar.db по полям Tovar, Kod, DataVipusk, Kolvo, Cena.

Расположите на форме компоненты в соответствии с рисунком:

Проиндексируйте таблицу Tovar.db по полям Tovar, Kod, DataVipusk, Kolvo, Cena. Создайте простые индексы и назовите их соответственно indTovar, indKod, indDV, indKolvo, indCena.

Для кнопки «Отсортировать» напишите следующий обработчик события OnClick:

procedure TForm1.Button1Click(Sender: TObject);

begin

case RadioGroup1.ItemIndex of

0: Table1.IndexName:= 'indTovar';

1: Table1.IndexName:= 'indKod';

2: Table1.IndexName:= 'indDV';

3: Table1.IndexName:= 'indKolvo';

4: Table1.IndexName:= 'indCena';

end;

end;

Для кнопки «Отменить сортировку» напишите обработчик события OnClick:

procedure TForm1.Button1Click(Sender: TObject);

begin

Table1.IndexName:= '';

end;

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

Глава IV. Фильтрация записей

Фильтрацияэто задание ограничений для записей, отбираемых в набор данных. Состав записей в НД в данный момент зависит от установленных ограничений, в том числе и от фильтров.

Система Delphi дает возможность осуществлять фильтрации записей:

  • по выражению;

  • по диапазону.

По умолчанию фильтрация записей не ведется, и НД Table содержит все записи связанной с ним таблицы БД.

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

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

Достоинством фильтрации по выражению состоит в том, что она применима к любым полям, в том числе к неиндексированным. Так как в процессе отбора просматриваются все записи таблицы, фильтрация по выражению эффективна при небольшом количестве записей.

Свойство Filter типа Srting компонента Table – задает выражение фильтра. В его состав могут входить элементы:

  1. имена полей таблиц;

  2. литералы – значение, заданное явно (число, строка или символ). В выражение фильтра включаются только выражения строкового типа.

  3. операции сравнения (<, >, =, >=, <=, <>);

  4. арифметические операции (+, -, *, /);

  5. логические операции (and (логическое умножение), or (логическое сложение), not (логическое отрицание));

  6. ( ) и [ ] скобки.

Пример:

Tovar = 'Макароны'

Cena >=150 or Cena <= 500

Если имя поля содержит пробелы, то его заключают в [ ] (например, [Name Firma] = 'Слад&Ко'), в противном случае [ ] необязательны.

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

Для активизации и деактивизации фильтра используется свойство Filtered типа Boolean. Если Filtered=True, то фильтрация включается, и НД отбираются записи, которые удовлетворяют фильтру, записанному в свойстве Filter. Если Filtered=False (по умолчанию), то фильтрация выключена.

Свойство FilterOptions типа TFilterOptions задает параметры фильтрации. Может принимать комбинации двух значений:

  • foCaseInsensitive – регистр букв не учитывается, т. е. при задании фильтра Tovar='Хлеб' слова "Хлеб", "хЛеБ", "ХЛЕБ" или "хлеб" будут восприняты как одинаковые;

  • foNoPartialCompare – выполняется проверка на полное соответствие содержимого поля и значения, заданного для поиска. Обычно применяется для строк. Если известны только первые символы строки, то нужно указать их в выражении фильтра, заменив остальные символом «*» и выключив значение foNoPartialCompare. Например, при выключенном значении foNoPartialCompare для фильтра Tovar = 'C*' будут отобраны записи, у которых в поле Tovar содержатся значения "Сметана", "Сыр", "Сахар" или "Сельдь с/м".

Все параметры фильтра перечисляются в свойстве FilterOptions через «,» и заключаются в [ ]. По умолчанию все параметры фильтра выключены, т.е. свойство FilterOptions = [ ].