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

1.8 Тема: Управление транзакциями и кэширование памяти

1.8.1 Пр13 Организация фильтрации записей по выражению

Цель: научиться работать с фильтрами записей по выражению.

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

Для создания выражений фильтра используются редакторы Edit. Компонент Edit1 и Edit2 предназначены для задания выражения при фильтрации.

На форму помещаются две кнопки Button. При нажатии кнопки Button3 с заголовком "Фильтровать" фильтр активируется путем присваивания значения True свойству Filtered набора данных. При активизации фильтра происходит отбор записей, которые удовлетворяют заданному в выражениях условию. При нажатии на кнопку Button4 с заголовком "Отменить" показываются все записи, фильтр при этом отключается.

Ниже представлены программные коды (обработчики событий) модуля формы, предназначенные для фильтрации:

procedure TForm3.Button3Click(Sender: TObject);

begin

if RadioButton1.Checked then

begin

DataModule2.TTovar.FilterOptions:=[];

DataModule2.TTovar.Filter:='Naim='''+Edit1.Text+'*''';

DataModule2.TTovar.Filtered:=True;

beep;

end;

if RadioButton2.Checked then

begin

DataModule2.TTovar.FilterOptions:=[];

DataModule2.TTovar.Filter:='Uhet_zena='''+Edit2.Text+'''';

DataModule2.TTovar.Filtered:=True;

beep;

end;

end;

procedure TForm3.Button4Click(Sender: TObject);

begin

DataModule2.TTovar.Filtered:=false;

End.

1.8.2 Пр14 Организация фильтра записей по диапазону

Цель: научиться работать с фильтрами записей по диапазону.

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

значение > нижней границы AND значение < верхней границы, в которой вместо операций сравнения <и> могут указываться операции <= и >=. Такая фильтрация применяется к набору данных Table.

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

Рассмотрим в качестве примера обработчики событий формы, использующей фильтрацию записей набора данных по выражению. Вид формы приведён на рисунке 2.

Для задания выражений фильтра используются редакторы Edit. Компонент Edit2 предназначен для задания выражения при фильтрации по подгруппе станка, компоненты Edit3 и Edit4 задают соответственно минимальную и максимальную границу значения поля D_max.

На форму помещаются две кнопки Button. При нажатии кнопки Button11 с заголовком “Фильтровать” фильтр активизируется путём присваивания значения True свойству Filtered набора данных. При активизации фильтра происходит отбор записей, которые удовлетворяют заданному в выражениях условию. При нажатии кнопки Button12 с заголовком “Отменить” показываются все записи, фильтр при этом отключается.

Ниже приведены программные коды (обработчики событий) модуля формы Form3, предназначенные для фильтрации:

Procedure TForm3.Button11Click(Sender:TObject);

begin

if RadioButton1.Checked then

begin

Table1.FilterOptions:=[foCaseInsensitive];

Table1.Filter:=’Podgrup=’”+edit2.text+’*’”;

Table1.Filtered:=True;

beep;

end;

if RadioButton2.Checked then

begin

Table1.Filter:=’max_d>=’+edit3.text+’AND max_d<=’+edit4.text;

Table1.Filtered:=True;

beep;

end;

end.