SQL Explorer и словарь данных
Модули данных
В предыдущем примере мы размещали компоненты со страницы Data Access непосредственно на главную форму приложения. Однако наличие на форме большого количества невидимых компонентов в ряде случаев затрудняет проектирование пользовательского интерфейса. Кроме того, нередко бывает удобно отделить компоненты, отвечающие за доступ к данным и бизнес-логику информационной системы, от интерфейсных элементов, например, для обегчения ее дальнейшей модернизации. Для этой цели в C++ Builder имеется специальный тип, называемый модулем данных - TDataModule. Компонент этого типа можно условно считать специальным видом формы, хотя он и порожден непосредственно от TСomponent. Такой компонент-контейнер может содержать компоненты со страницы Data Access, а сам он не виден пользователю во время выполнения.
Создадим другую версию рассмотренного выше примера с использованием модуля данных. В этом случае компоненты Data Access помещаются в модуль данных, а ссылка на соответствующий h-файл помещается в модуль, связанный с главной формой приложения.

Рис.14. Размещение компонентов доступа к данным в DataModule
Приведем исходный текст модуля, связанного с главной формой новой версии приложения:
//---------------------------------------------------- 
 #include <vcl\vcl.h> 
 #pragma hdrstop
#include "cust1.h" 
 #include "custdm1.h" // Ссылка на модуль данных 
 //----------------------------------------------------- 
 #pragma link "Grids" 
 #pragma resource "*.dfm" 
 TForm1 *Form1; 
 //----------------------------------------------------- 
 __fastcall TForm1::TForm1(TComponent* Owner): TForm(Owner) 
 { 
 } 
 //----------------------------------------------------- 
 void __fastcall TForm1::Button1Click(TObject *Sender) 
 { 
 if (DataModule1->Table1->Active) 
 { 
 DataModule1->Table1->Close(); 
 Button1->Caption = "Открыть таблицу &клиентов"; 
 } 
 else 
 { 
 DataModule1->Table1->Open(); 
 Button1->Caption= "Закрыть таблицу &клиентов"; 
 }; 
 } 
 //----------------------------------------------------- 
 void __fastcall TForm1::Button2Click(TObject *Sender) 
 { 
 if (DataModule1->Query1->Active) 
 { 
 DataModule1->Query1->Active = false; 
 Button2->Caption = "Открыть таблицу &заказов";} 
 else
{ 
 DataModule1->Query1->Active = true; 
 Button2->Caption = "Закрыть таблицу &заказов"; 
 } 
 } 
 //----------------------------------------------------- 
 void __fastcall TForm1::RadioButton1Click(TObject *Sender) 
 { 
 DBGrid1->DataSource = DataModule1->DataSource1; 
 } 
 //----------------------------------------------------- 
 void __fastcall TForm1::RadioButton2Click(TObject *Sender) 
 { 
 DBGrid1->DataSource = DataModule1->DataSource2; 
 } 
 //----------------------------------------------------- 
 void __fastcall TForm1::RadioButton3Click(TObject *Sender) 
 { 
 DBGrid1->DataSource = DataModule1->DataSource3; 
 } 
 //---------------------------------------------------- 
 void __fastcall TForm1::Button3Click(TObject *Sender) 
 { 
 if (DataModule1->Table1->Active) 
 { 
 DataModule1->Table1->SetRangeStart(); 
 DataModule1->Table1->Fields[0]->AsString = Edit1->Text; 
 DataModule1->Table1->SetRangeEnd(); 
 DataModule1->Table1->Fields[0]->AsString = Edit2->Text; 
 DataModule1->Table1->ApplyRange(); 
 } 
 } 
 //----------------------------------------------------
SQL Explorer и словарь данных
SQL Explorer является удобным инструментом при работе с базами данных. Для его запуска следует выбрать пункт меню Database/Explore или запустить его в качестве отдельного приложения. В левой части окна Explorer на странице Databases представлены в виде раскрывающегося списка свойства всех описанных в файле конфигурации BDE псевдонимов. В правой части окна можно просмотреть содержимое таблиц, ввести и выполнить SQL-запрос к таблице, а также получить сведения о псевдонимах баз данных (драйвер БД, местоположение, используемый языковый драйвер и иные параметры, содержащиеся в файле конфигурации BDE), сведения о таблицах (тип таблицы, версия, дата последнего обновления и др.) и, при необходимости, внести в них изменения.

Рис. 15. SQL Explorer
Сам словарь данных доступен для просмотра на странице Dictionary. В нем в виде раскрывающегося списка содержатся сведения о базах данных и расширенных атрибутах полей таблиц (раздел Attribute Sets), в число которых входят, например, максимальное и минимальное значение для данного поля, значение по умолчанию, тип и класс контрольного элемента, метка при отображении на форме, маска редактирования и другие атрибуты, не содержащиеся непосредственно в таблицах, но характеризующие модель данных.

Рис.16. Просмотр и модификация словаря данных в SQL Explorer
Отметим, что пользователь может создавать свои словари данных (пункт меню Dictionary/New). По умолчанию словари данных создаются в виде таблиц формата Paradox, но не возбраняется хранить их в других форматах или на серверах баз данных (это имеет смысл при работе над крупными проектами).