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

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

Ход работы

IV. Контрольные вопросы

III. Самостоятельная работа

 

Создайте однотабличную БД.

 

Таблица должна содержать следующие поля:

Поле Информация
FIO ФИО студента
Sr_ball Средний бал по итогам года
Propuski_up Количество пропусков по у/п
Propuski_np Количество пропусков по н/п
Propuski_vsego Количество пропусков всего

 

Проиндексируйте все поля и сделайте сортировку по каждому полю.

 

1. Какие операции подразумевает работа с записями?

2. Дайте определение понятию «Сортировка».

3. Что такое индексирование таблицы?

4. Что такое ключ? Каким он бывает?

5. какие поля называют ключевыми?

6. Какие поля называют индексными?

7. Что называют индексированием таблицы?

8. Расскажите алгоритм задания индекса.

9. Использование ключей и индексов позволяет …

Практическая работа 7. Тема: Работа с записями: фильтрация.

 

Цели:

 

1. Изучить операцию работы с записями: фильтрация;

2. На практическом примере рассмотреть разновидности фильтрации записей: по выражению, по диапазону;

3. Развивать логическое мышление.

 

4. Воспитывать информационную культуру.

 

 

 

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

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

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

 

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

 

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

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

 

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

 

Свойство 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 задает параметры фильтрации. Может принимать комбинации двух значений:

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

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

 

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

 

Практическое задание №1

 

Организовать фильтрацию записей таблицы Tovar. db по выражению, которое задает пользователь.

 

Вид формы работающего приложения показан на рисунке:

 

Разместите в окне формы компоненты в соответствии с рисунком готовой программы. Напишите для окна формы обработчик события OnCreate:

 

 

 

Для кнопки «Закрыть» самостоятельно напишите обработчик события, при котором закрывается работающее приложение.

 

Запустите программу. Напишите в компонент Edit1 выражение фильтра в соответствии с указанным ранее рисунком. Отмените фильтр. Придумайте свое выражение фильтра.

Практическое задание №2

 

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

Компонент TabCotntrol (п.к. Win32). Представляет собой контейнер с закладками.

 

Вид записной книжки с распечаткой фамилий на букву "А" показан на рисунке:

Создайте таблицу Notebook.db со списком телефонов друзей и знакомых (поля: FIO, Phone, Note (примечания)) в программе Database Desktop. Сохраните созданную таблицу в рабочей папке Baza. Заполните данными (20 записей).

 

Расположите на форме компонент TabControl. В свойстве Tabs этого компонента в столбик перечислите все буквы алфавита (кроме "Й", "Ь", "Ъ"). В свойстве MultiLine установите значение true, чтобы закладки размещались в несколько рядов. Свойству TabPosition присвойте значение alTop, свойству HotTrack – true.

На форме разместите три компонента для работы с БД (Table1, DataSource1, DBGrid1). Таблицу Notebook.db свяжите с НД Table1. Список владельцев телефонов отображается в компоненте DBGrid1. Пользователь может отобразить все фамилии или вывести фамилии, начинающиеся с определенной буквы.

 

Для управления отбором записей используется фильтрация. Разместите на форме компонент CheckBox1 и присвойте ему заголовок «Показывать все записи». С помощью этого компонента будет активизироваться и деактивизироваться фильтр. По умолчанию флажок установлен, при этом фильтр выключен, и отображаются все фамилии. Если флажок CheckBox1 сброшен, то выполняется фильтрация. Записи выбираются на основании первой буквы фамилии. Букву можно выбирать с помощью закладок компонента TabControl1.

 

Напишите следующие обработчики событий для данной формы: