При использовании компонента TTable можно создавать,
переименовывать и удалять таблицы непосредственно в дизайнере форм - в
контекстном меню этого компонента есть соответствующие команды.
Поддержка новых версий СУБД и новых типов данных
Библиотека Borland Database Engine (BDE) теперь поддерживает
Access '97 и Oracle8, при этом поддерживаются новые расширения Oracle 8, такие
как абстрактные типы данных (ADT - Abstract Data Type), массивы, ссылки,
вложенные таблицы. В соответствии с этим созданы новые классы объектов -
потомков TField: TADTField, TReferenceField, TDataSetField, TArrayField.
Поддержка вложенных таблиц
Компонент TDBGrid теперь может отображать вложенные таблицы.
Для иллюстрации этой возможности воспольуемся таблицами customer.db, orders.db и
items.db, поставляемыми вместе с Delphi. Поместим на форму три компонента
TTable, три компонента TDataSourse, один компонент TClientDataSet и один
компонент TProvider. Установим следующие свойства этих компонентов:
Компонент |
Свойство |
Значение |
DBGrid1 |
DataSource |
DataSource3 |
DBNavigator1 |
DataSource |
DataSource3 |
Table1 |
DatabaseName |
'DBDEMOS' |
TableName |
'customer.db' |
Active |
True |
DataSource1 |
DataSet |
Table1 |
Table2 |
DatabaseName |
'DBDEMOS' |
TableName |
'orders.db' |
IndexFieldNames |
'CustNo' |
MasterFields |
'CustNo' |
MasterSource |
DataSource1 |
Active |
True |
DataSource2 |
DataSet |
Table2 |
Table3 |
DatabaseName |
'DBDEMOS' |
TableName |
'items.db' |
IndexFieldNames |
'OrderNo' |
MasterFields |
'OrderNo' |
MasterSource |
DataSource2 |
Active |
True |
Provider1 |
DataSet |
Table1 |
ClientDataSet1 |
ProviderName |
'Provider1' |
Active |
True |
DataSource3 |
DataSet |
ClientDataSet1 |
Рис. 15 Главная форма приложения, использующего вложенные
таблицы.
Сами таблицы формата Paradox, естественно, не поддерживают
поля, содержащие вложенные таблицы, но такие поля поддерживает компонент
TClientDataSet со страницы MIDAS палитры компонентов. Связав его с компонентом
Table1 посредством компонента Provider1, мы получим набор данных, содержащий
поле Table2 типа TDataSetField, а внутри вложенной таблицы - поле Table3 того же
типа:
Рис. 16 Вложенные таблицы на этапе выполнения.
Такое представление данных даже в случае использования
настольных СУБД весьма удобно просто потому, что оно решает общеизвестную
проблему нехватки места на форме при наличии нескольких связанных таблиц.
Единственное, о чем при этом следует позаботиться, это вызов метода ApplyUpdates
компонента TClientDataSet (например, в обработчике события, связанного с выбором
какого-либо пункта меню или с нажатием на кнопку): ClientDataSet1.ApplyUpdates(-1);
Если не использовать этот метод, данные будут сохраняться
только в кэше, которым фактически и является компонент TClientDataSet, а не в
самих таблицах.
Новый генератор запросов - SQL Builder
В Delphi 4 в качестве построителя запросов используется SQL
Builder, уже знакомый пользователям Visual dBase 7 и C++Builder 3. Он позволяет
создавать и выполнять запросы, редактировать созданные SQL-предложения,
использовать вычисляемые поля и связи между таблицами, основанные на выражениях.
Рис. 17 SQL Builder.
Сгенерированный запрос можно отредактировать вручную, и все
внесенные изменения будут отображены в дизайнере запросов.
Рис. 18 Сгенерированный текст запроса можно редактировать.
Возможен также просмотр результатов запроса и копирование
полученного набора данных в буфер обмена.
Рис. 19 Выполнение запроса из SQL Builder
Отметим, что скопированный в буфер обмена текст легко
преобразуется в таблицы текстовых процессоров (например, MS Word 97).
Новые возможности генерации отчетов
В генераторе отчетов QuickReport добавлены компоненты
TQRTextFilter, TQRHTMLFilter и TQRCSVFilter, позволяющие сохранять отчеты не
только в оригинальном формате *.qrp, но и в виде текстового файла, файла формата
HTML или CSV (Comma Separated Value).
Рис. 20 Отчет QuickReport с возможностью сохранения данных в
формате HTML.
Рис. 21 Отчет QuickReport в формате HTML, отображенный в
броузере.
Автоматизация создания приложений для публикации данных в Internet
В Delphi 4 имеется DB Web Application Wizard, позволяющий
автоматизировать создание приложения для публикации данных в Internet. После
выбора соответствующей пиктограммы в репозитарии объектов можно выбрать тип
приложения и тип компонентов TDBDataSet для построения приложения.
Рис. 22 Выбор DB Web Application Wizard из репозитария объектов
Delphi 4.
Рис. 23 Выбор типа приложения.
Далее следует выбрать псевдоним базы данных и имя публикуемой
таблицы.
Рис. 24 Выбор псевдонима базы данных и таблицыдля публикации в
Web.
После этого следует выбрать публикуемые поля таблицы:
Рис. 25 Выбор публикуемых полей.
И, наконец, далее следует ввести текст заголовка генерируемой
приложением страницы, а также текст, помещенный перед таблицей и после нее.
Рис. 26 Ввод заголовка таблицы и дополнительного текста
После этого можно открыть полученный компонент TWebModule,
выбрать компонент Table1 и установить его свойство Active равным True.
Рис. 27 Сгенерированный компонент TWebModule
Рис. 28 Редактор свойства Actions компонента TWebModule
Далее можно выбрать сгенерированный объект TWebAction, выбрать
его в качестве действия по умолчанию - и можно компилировать приложение, а затем
тестировать его с помощью web-сервера и web-броузера.
Рис. 29 Результат выполнения сгенерированного приложения
Создание многозвенных систем
Возможности создания многозвенных информационных систем в
Delphi 4 существенно расширены по сравнению с прежней версией. В данную версию
включена поддержка CORBA (Common Object Request Broker Architecture), что
позволяет использовать в качестве серверов приложений сервисы, выполняющиеся на
различных платформах. Имеется также поддержка Microsoft Transaction Server. В
палитре компонентов теперь имеется отдельная страница MIDAS, содержащая
компоненты, используемые в серверах приложений и "тонких" клиентах, в
частности, новые компоненты TCorbaConnection, TDCOMConnection,
TSocketConnection, TOLEnterpriseConnection (последние три обладают свойством
LoginPrompt, поддерживающим аутентификацию пользователя). В репозитарии объектов
имеется соответствующая страница Multitier, содержащая генераторы
соответствующих типов приложений.
Рис. 30 Шаблоны серверов приложений репозитария объектов
Создание многозвенной системы, где сервер приложений
обеспечивает доступ к данным, по-прежнему представляет собой несложный процесс.
Рис. 31 Создание удаленного модуля данных
После выбора соответствующей пиктограммы (например, Remote Data
Module) из репозитария объектов и ввода характеристик соответствующего
COM-объекта получим удаленный модуль данных, в который можно поместить
компоненты доступа к данным.
Рис. 32 Главная форма и модуль данных сервера приложений
Далее следует экспортировать компоненты доступа к данным из
модуля данных:
Рис. 33 Библиотека типов удаленного модуля данных
После этого можно скомпилировать сервер приложений и приступить
к созданию "тонкого" клиента. С этой целью можно добавить в имеющуюся
группу проектов еще один проект (если разработка клиента ведется на том же
компьютере, где создавался сервер приложений), либо просто создать новый проект
или активную форму (в случае "тонкого" клиента в виде ActiveX) и
поместить туда какой-либо компонент доступа к удаленному серверу (например,
TSocketConnection). Для осуществления удаленного доступа с помощью
TSocketConnection следует запустить на том компьютере, где содержится сервер
приложений, Borland Socket Server. Затем следует установить свойства Host и
ServerName равными имени компьютера и удаленного модуля данных (в формате
<имя исполняемого файла>.<имя удаленного модуля данных>)
соответственно. Далее можно поместить на форму компонент TClientDataSet, связать
его с компонентом TSocketConnection и выбрать значение свойства ProviderName из
выпадающего списка. Теперь можно помещать на форму компоненты для отображения
данных (например, создав объекты TFields и переместив их на форму методом
drag-and-drop из списка полей). Таким образом, "тонкий" клиент готов.
Рис. 34 Главная форма "тонкого" клиента
Помимо соединения клиента с сервером с помощью протокола
TCP/IP, возможно использование Microsoft DCOM (Distributed Component Object
Model) и соответственно компонента TDCOMConnection, а также технологии
OLenterprise (с помощью компонента TOLEnterpriseConnection).
Отметим, что CORBA-серверы и CORBA-клиенты с помощью Delphi 3
создаются примерно так же.
|