- •Базы данных в Delphi Оглавление
- •Глава I. Базы данных в Delphi 3
- •Глава II. Наборы данных 11
- •Глава I. Базы данных в Delphi
- •1.1. Ведение в базы данных
- •1.2. Таблицы баз данных.
- •1.3. Таблицы формата dBase и Paradox
- •Сравнительная характеристика dBase и Paradox
- •1.4. Практическая работа
- •1.5. Самостоятельная работа
- •Глава II. Наборы данных
- •2.1. Набор данных
- •2.2. Практическая работа
- •2.3. Самостоятельная работа
- •2.4. Режимы наборов данных
- •2.5. Практическая работа
- •2.6. Перемещение по записям набора данных
- •2.7. Практическая работа
- •2.8. Доступ к полям
- •2.9. Практическая работа
- •2.10. Практическая работа
- •2.11. Способы задания состава полей набора данных
- •Редактор полей
- •2.12. Вычисляемые поля
- •2.13. Практическая работа №7
- •Глава III. Индексирование баз данных
- •3.1. Установка текущего индекса
- •3.2. Сортировка набора данных
- •3.3. Практическая работа
- •Глава IV. Фильтрация записей
- •4.1. Фильтрация по выражению
- •4.2. Практическая работа
- •4.3. Практическая работа
- •4.4. Фильтрация по диапазону
- •4.5. Самостоятельная работа
- •Глава V. Поиск записей в наборе данных.
- •5.1. Поиск записей
- •5.2. Поиск записей по нескольким полям.
- •5.3. Практическая работа
- •Глава VI. Модификация набора данных
- •6.1. Редактирование записей
- •6.2. Добавление записей
- •6.3. Удаление записей
- •6.4. Практическая работа
- •Глава VII. Работа со связанными таблицами
- •7.1. Организация связей между таблицами
- •7.2. Практическая работа
- •7.3. Самостоятельная работа
- •Глава VIII. Работа с отчетами
- •8.1. Объект QuickRep
- •8.2. Компоненты, размещаемые в полосе
- •8.3. Практическая работа
4.2. Практическая работа
Организовать фильтрацию записей таблицы Tovar. db по выражению, которое задает пользователь.
Вид формы работающего приложения показан на рисунке:
Разместите в окне формы компоненты в соответствии с рисунком готовой программы.
Напишите для окна формы обработчик события OnCreate:
рrocedure TForm1.FormCreate(Sender: TObject);
begin
table1.Filter:='';
table1.FilterOptions:=[focaseinsensitive];
table1.Filtered:=true;
end;
Для кнопки Включить фильтр напишите обработчик события OnClick:
procedure TForm1.Button1Click(Sender: TObject);
begin
table1.Filtered:=true;
table1.Filter:=edit1.Text;
end;
Для кнопки «Отменить фильтрацию» напишите обработчик события OnClick:
procedure TForm1.Button2Click(Sender: TObject);
begin
table1.Filtered:=false;
end;
Для кнопки «Закрыть» самостоятельно напишите обработчик события, при котором закрывается работающее приложение.
Запустите программу. Напишите в компонент Edit1 выражение фильтра в соответствии с указанным ранее рисунком. Отмените фильтр. Придумайте свое выражение фильтра.
4.3. Практическая работа
Создадим электронную записную книжку. Совместно с набором данных будем использовать элемент управления с закладками 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.
Напишите следующие обработчики событий для данной формы:
procedure TForm1.FormCreate(Sender: TObject);
begin
DBGrid1.Align:=alClient;
Table1.FilterOptions:=[foCaseInsensitive];
CheckBox1.Checked:=true;
end;
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
if CheckBox1.Checked then
Table1.Filtered:=false
else
Table1.Filtered:=true;
end;
Событие OnChange возникает при выборе новой закладки и позволяет управлять содержимым окна компонента.
procedure TForm1.TabControl1Change(Sender: TObject);
begin
Table1.Filter:='FIO= '''+tabcontrol1.Tabs[tabcontrol1.TabIndex]+'*''';
end;
