- •Базы данных.
- •Проектирование базы данных
- •Шаги проектирования базы данных
- •Создание таблиц базы данных
- •Компоненты для работы с бд
- •Создание простейшего приложения
- •Режимы наборов данных
- •Команды навигации
- •Визуальные компоненты для работы с данными
- •Обзор компонент
- •Работа с полями таблицы
- •Создание статических полей
- •Задание ограничений на вводимые значения
- •Компонент Table
- •Сортировка и фильтрация
- •Поиск записей
- •If Table1.Locate ('Number',123,[]) {опции поиска отключены}
- •If not Table1.FindKey([EditGroup.Text,EditName.Text]){ищем соответствующие значения}
- •Связывание таблиц
- •Компонент Query
- •Чтение данных из таблиц (select)
- •Модификация записей (update, insert, delete)
- •Insert into Tovar.Db (Name, Price, Count) values (’Яблоки’, 20, 10)
- •Некоторые функции языка sql
- •Компоненты для построения отчетов
- •Основные свойства компоненты QuickRep
- •Методы компоненты QuickRep:
- •Свойства компоненты qrBand:
- •Создание простого отчета
- •Включение выражений в отчет
- •Отображение системной информации
- •Группировка данных в отчете
- •Построение отчета для связанных наборов данных
- •Комбинированный отчет
- •Упражнения:
-
Компоненты для работы с бд
Компоненты для работы с БД в Delphi хранятся на страницах:
-
Data Access (невизуальные компоненты для доступа к данным);
-
Data Controls (визуальные компоненты для интерфейса с пользователем);
-
QReport (компоненты для построения отчетов, выводимых на печать);
-
Midas (компоненты управления удаленными БД);
-
ADO (компоненты управления удаленными БД поддерживающими ADO);
-
Decision Cube (компоненты построения систем принятия решений);
-
InterBase (компоненты для работы с сервером БД - Interbase);
-
Internet (компоненты генерирующие html-страницы использующие данные БД).
Для работы с локальными БД достаточно уметь использовать компоненты с первых трех страниц.
-
Создание простейшего приложения
Для начала создадим приложение, которое просто выводит какую-либо таблицу (для определенности “c:\work\NewTable.db”) на экран, позволяет по ней перемещаться, создавать, редактировать и удалять ее записи.
Для этого разместите на форме компоненты Table1 и DataSource1 со страницы Data Access палитры компонент, и DBGrid1 и DBNavigator1 со страницы Data Controls. Для связи с файлом таблицы используется компонент Table1, для этого задайте его свойства DataBaseName - путь к БД, TableName - имя таблицы и сделайте его активным Active =True (именно в этом порядке!). Компонент DataSource1 является связующим звеном между Table1 и визуальными компонентами, установите значение его свойства DataSet - Table1. Теперь осталось “привязать” DBGrid1 и DBNavigator1 к DataSource1, задав их свойство DataSource - DataSource1. Таким образом, мы изменили свойства компонент:
Компонент |
Свойства |
Значения |
Table1 |
DataBaseName TableName Active |
C:\work NewTable.db True |
DataSource1 |
DataSet |
Table1 |
DBGrid1 |
DataSource |
DataSource1 |
DBNavigator1 |
DataSource |
DataSource1 |
Все. Запускаем приложение.
-
Режимы наборов данных
Возможность доступа к БД обеспечивают компоненты Table и Query, задающие наборы данных.
Наборы данных могут находиться в различных режимах. Текущий режим набора определяется доступным для чтения свойством State. Изменение режима осуществляется специальными методами или является результатом работы с визуальными компонентами. Режимы работы набора:
-
dsBrowse – осуществляется навигация по записям набора и просмотр данных;
-
dsInactive – неактивность, т.е. набор закрыт. Переход в этот режим осуществляется вызовом метода Open (или Active:=False), выход – метода Close (или Active:=True);
-
dsEdit – редактирование текущей записи. Переход в этот режим осуществляется вызовом метода Edit, выход с сохранением изменений – метод Post, без сохранения – метод Cancel;
-
dsInsert – вставка новой записи. Переход в этот режим осуществляется вызовом метода Insert, выход – методы Post или Cancel;
-
кроме этих режимов есть несколько промежуточных. Например, в начале открытия набора данных режим dsInactive меняется на dsOpening, затем выполняются команды открытия и только после этого режим становится dsBrowse.
Для проверки, можно ли изменять набор данных, предназначена логическая функция CanModify.
При изменении режима набора данных для источника данных DataSource генерируется событие OnStateChange. Рассмотрим пример использования обработчика этого события:
procedure TForm1.DataSource1StateChange(Sender: TObject);
begin
case DataSource1.State of
dsInactive: StatusBar.SimpleText:='Набор данных' + DataSet.Name + ' закрыт';
dsBrowse: StatusBar.SimpleText:='Просмотр набор данных ' + DataSet.Name;
dsEdit:StatusBar.SimpleText:='Редактирование набора данных ' + DataSet.Name;
dsInsert:StatusBar.SimpleText:='Вставка записи в набор данных ' + DataSet.Name;
else
StatusBar.SimpleText:='Неопределенный режим набора данных ' + DataSet.Name;
end;
end;