Выбрать главу

Можно. Ведь по сути дела VBX — это .dll, написанная по определенным правилам. Однако скорее всего вам потребуется дополнительно соответствующий SDK от компании Microsoft. Существует даже статья, где обсуждаются все аспекты такой работы.

Относительно OCX все то же самое, что и относительно VBX.

Delphi 3.0 позволяет визуально создавать элементы ActiveX.

8. Какие генераторы отчетов можно использовать с Delphi кроме ReportSmith?

В порядке предпочтения:

1. Имеется QuickReport — генератор отчетов, сделанный в виде компонентов и встраиваемый непосредственно в приложение. Успех 16-разрядной версии привел к тому, что начиная с версии Delphi 2.0 32-разрядный QuickReport входит в стандартный вариант поставки.

2. Crystal Reports — подключается через VBX.

3. R&R Report Writer — хорошо работает с Delphi, позволяет выполнять запросы, preview, вызовы DLL, передачу параметров. (производитель — Concentric Data Systems)

4. Также есть еще несколько генераторов отчетов, выполненных аналогично QuickReport в виде компонентов.

Следует также заметить, что на данный момент Borland International продал ReportSmith другой фирме, так что его присутствие в Delphi 3.0 под вопросом.

Базы данных - Interbase и локальные данные

1. Каково определение IDAPI? Что такое SQL Links?

IDAPI это Integrated Database Application Program Interface. BDE (Borland Database Engine) — средство доступа ко множеству источников данных через один API. IDAPI - это просто API для BDE. IDAPI включает все функции, необходимые для доступа к данным, манипулирования ими и т.д. Delphi, Borland C++, C++Builder, Intrabulder, dBASE for Windows, и Paradox for Windows используют эти функции. Вы можете использовать их в своих программах. Вы получите документацию, если купите BDE. Там перечислены все доступные функции и что они делают. Если посмотреть на исходники VCL в Delphi, то можно увидеть, как они используются. Они начинаются с "Dbi" (e.g. DbiCreateTable).

SQL Links — набор родных драйверов (native drivers), которые нужны для работы с удаленными серверами баз данных.

2. Hеобходим ли IDAPI для доступа к данным в Delphi? Можно ли включить IDAPI внутрь EXE, чтобы распространять программу без установки IDAPI на пользовательском компьютере?

IDAPI необходим для доступа к данным в Delphi. Сам IDAPI во внутрь исполняемого файла ни коим образом не встраивается (да это было бы и не целесообразно). Вместе с Delphi поставляется редистрибутивный вариант BDE, которая устанавливает на "чистую" машину лишь только BDE. может создавать инсталляторы, которые устанавливают на машину как ваше приложение, так и BDE.

InstallShield Express for Delphi

Delphi 3.0 включает средства для создания "тонких" клиентов, работающих на машине, на которой не установлен BDE. Подробности смотрите в FAQ по Delphi 3.0.

3. Где можно найти описание функций и типов данных BDE?

DBIPROCS.INT в директории DELPHI\DOC\ содержит список функций BDE, передаваемые параметры, возвращаемое значение и краткое описание каждой. DBITYPES.INT — список типов, используемых функциями BDE. Для вызова любой функции BDE добавьте следующие модули в раздел uses: DBITYPES, DBIPROCS и DBIERRS.

Delphi 2.0 включает в себе описание функций BDE в формате WinHelp. Также все три модуля из Delphi 1.0 (DBITYPES.DCU, DBIPROCS.DCU и DBIERRS.DCU) теперь объединены в единый BDE.DCU.

4. Можно ли программным образом добавить псевдоним (alias) в IDAPI.CFG?

В BDE есть для этого функция DbiAddAlias.

В Delphi 2.0 данная функциональность находится внутри компонента TSession (методы AddAlias, AddStandardAlias).

5. Я получаю сообщение от BDE при редактировании записи 'Multiple records found but only one expected'. Что бы это значило?

Вам может потребоваться создать уникальный индекс в таблице для того, чтобы каждую строку в таблице можно было однозначно идентифицировать. Например, попытайтесь изменить структуру таблицы и добавить поле для заполнения его уникальными значениями.

6. Обработка исключений (exceptions) BDE.

Информация об ошибке BDE может быть получена для использования в приложении из объекта EDBEngineError. Исключительная ситуация EDBEngineError обрабатывается в программе с помощью конструкции try ... except. Когда возникает исключительная ситуация BDE, то может быть создан объект EDBEngineError и различные поля этого объекта могут быть использованы для программного определения, что не в порядке и что требуется для исправления ситуации. Далее, для данной исключительной ситуации может быть сгенерировано несколько сообщений об ошибках. Это требует организации перебора сообщений об ошибках для получения нужной информации.

7. Какому стандарту SQL соответствует SQL в InterBase?

SQL в Local & Remote InterBase соответствует SQL-92 с элементам SQL III (более поздними расширениями).

8. Как удалить генераторы (GENERATORS) из базы данных InterBase?

Никак. К сожалению, в существующих версиях InterBase это невозможно.

9. Как выбрать протокол при соединении с InterBase из Delphi?

В Server Manager (ibmgr.exe), Windows interactive SQL (wisql.exe) и Communication Diagnostic Tool (comdiag.exe) Вы отдельно задаете имя сервера, протокол и 'путь на базу' (локальный путь на сервере, а не путь до базы с Вашей машины)

А в BDE Configuration Utility все немного не так — на странице Drivers у драйвера Interbase есть параметр SERVER NAME, заполненный как IB_SERVER:/PATH/DATABASE.GDB, а у любого InterBase Alias есть параметры SERVER NAME и PATH, но ни у драйвера ни у алиаса нет протокола. Для Interbase протокол указывается стилем написания пути к базе:  

Протокол  SERVER NAME  Пример
TCP/IP  IB_SERVER:PATH\DATABASE.GDB  nt:c:\ib\base.gdb; unix:/ib/base.gdb
IPX/SPX  IB_SERVER@PATH\DATABASE.GDB  nw@sys:ib\base.gdb
 NETBEUI \\IB_SERVER\PATH\DATABASE.GDB \\nt\c:\ib\base.gdb 

10. Можно ли использовать какие-нибудь ODBC драйверы, которые получены с другими СУБД?

В общем, да. Мы не столкнулись с какими-то ODBC драйверами, которые не работают с Delphi, но, с другой стороны, мы не пробовали действительно экзотические драйверы. Основные трудности вызвали специфические ODBC-драйверы от Microsoft. Похоже, что ODBC и ODBC от Microsoft - это разные вещи.