Создадим простейшее приложение БД, позволяющее отображать содержимое таблицы БД Поставщики. Для этого необходимо.
1. Создать новый каталог для проекта.
2. Создать новый проект в Delphi (С++ Builder), сохранив его в созданном ранее каталоге проекта.
3. Поместить на форму следующие компоненты:
• TTable (вкладка BDE), имя TableSupplier;
• TDataSource (вкладка Data Access), имя DataSourceSupplier;
• TDBGrid (вкладка Data Controls), имя DBGridSupplier.
4. Задать с помощью Object Inspector следующие свойства компонент:
• DataSourceSupplier–>DataSet = TableSupplier (связать источник с таблицей);
• DBGridSupplier–>DataSource = DataSourceSupplier (связать сетку с источником);
• TableSupplier–>DatabaseName = Supply (связать таблицу с БД).
• TableSupplier–>TableName = “Поставщик” (выбрать таблицу БД).
5. Убедиться, что данные отображаются на форме (рис. 9).
6. Откомпилировать и запустить приложение. Добавить новую запись в таблицу Поставщики. Закрыть приложение.
7. Изменить вид выводимой информации, оставив столбцы Наименование и Телефон. Для этого изменить следующие свойства:
• DBGridSupplier–>Columns. Сначала в редакторе столбцов таблицы выбрать все столбцы, потом лишние удалить. После этого можно задать свойства столбцов, в частности, название заголовков, цвет и т.д.;
• установить с помощью мыши требуемую ширину столбцов таблиц.
8. Еще раз запустить приложение.
Теперь создадим приложение БД, позволяющее отображать содержимое двух связанных между собой таблиц БД: Поставки и Поставщики. Для этого необходимо.
1. Создать новый каталог для проекта.
2. Создать новый проект в Delphi (С++ Builder), сохранив его в созданном ранее каталоге проекта.
3. Поместить на форму следующие компоненты:
• TTable (вкладка BDE) – 2 шт. (имена TableMaster и TableSlave);
• TDataSource (вкладка Data Access) – 2 шт. (имена DataSourceMaster и DataSourceSlave);
• TDBGrid (вкладка Data Controls) – имена DBGridMaster и DBGridSlave);
• TDBNavigator (вкладка Data Controls) – имя DBNavigatorMaster.
4. Задать с помощью Object Inspector следующие свойства компонент:
• DataSourceMaster–>DataSet = TableMaster (связать источник с таблицей);
• DataSourceSlave–>DataSet = TableSlave (связать источник с таблицей);
• DBGridMaster–>DataSource = DataSourceMaster (связать сетку с источником);
• DBGridSlave–>DataSource = DataSourceSlave (связать сетку с источником);
• DBNavigatorMaster–>DataSource = DataSourceMaster (связать навигатор с источником);
• TableMaster–>DatabaseName = Supply (связать таблицу с БД);
• TableSlave–>DatabaseName = Supply (связать таблицу с БД);
5. Связать между собой таблицы Поставки и Поставщики. Для этого задать с помощью Object Inspector следующие свойства компонент:
• TableMaster–>TableName = Поставщики (указать главную таблицу в БД);
• TableSlave–>TableName = Поставки (указать подчиненную таблицу в БД);
• TableSlave–>MasterSource = DataSourceMaster (задать источник главной таблицы для подчиненной);
• TableSlave–>MasterFields с помощью редактора связей задать поля связи, например, Detail Fields: Поставщик и Master Fields: Табельный номер;
• TableMaster–>Active = true (Разрешить «живые данные»);
• TableSlave–>Active = true (Разрешить «живые данные»);
6. Убедиться, что данные отображаются на форме (рис. 10).
7. Откомпилировать и запустить приложение. Произвести некоторые манипуляции с данными. Закрыть приложение.
Организация запросов к БД
Рассмотрим особенности вызова запросов к БД из приложения. Различают три вида запросов:
• Статические запросы – текст запроса полностью формируется на этапе разработки приложения;
• Параметрические запросы – текст запроса формируется на этапе разработки приложения и содержит несколько параметров, во время выполнения приложения можно задавать значения параметров;
• Динамические запросы – текст запроса полностью формируется на этапе выполнения приложения.
При использовании технологии BDE для выполнения запросов применяется компонент TQuery. При использовании технологии ADO для выполнения запросов могут применяться следующие компоненты:
• Компонент TADOQuery – аналог компонента TQuery. Является наиболее универсальным. Позволяет выполнять любые SQL запросы, включая операторы SELECT, INSERT, UPDATE, DELETE, CREATE TABLE, EXECUTE и др. Текст запроса размещается в свойстве SQL. Содержит свойство Active логического типа, позволяющее выполнить запрос, возвращающий набор данных (оператор SELECT). Метод ExecSQL позволяет выполнить запрос, не возвращающий набор данных.
• Компонент TADODataSet – специализированный компонент для организации запросов на выборку с использованием оператора SELECT. Компонент не позволяет выполнять операторы, не возвращающие наборы данных, такие как: INSERT, UPDATE, DELETE, CREATE TABLE и т.п. Содержит удобный редактор, упрощающий конструирование запросов на выборку. Для вызова редактора используется свойство CommandText. Для выполнения запроса используется свойство Active.
• Компонент TADOCommand – специализированный компонент для организации запросов, не возвращающих набор данных, таких как: INSERT, UPDATE, DELETE, CREATE TABLE и т.п. Компонент не позволяет выполнять оператор SELECT. Метод Execute позволяет выполнить запрос.
Далее рассмотрим порядок организации запросов из приложений БД на основе технологии ADO.