27. Как определить номер текущей записи для набора данных?
Если набор данных основан на таблицах Paradox или dBASE, то номер записи можно определить с помощью вызовов BDE. BDE не поддерживает номер записи для наборов данных на SQL сервере; если ваш сервер поддерживает нумерацию записей, вам нужно обратиться к его документации.
Базы данных — прочие SQL сервера
1. Как осуществляется доступ к базе данных из Delphi?
Сначала вы должны в утилите BDE Configuration Utility (bdecfg или bdecfg32) определить псевдоним для базы данных, с которой вы хотите работать. Это позволит вам избежать написания сложного пути к базе данных в вашем приложении; вы теперь только ссылаетесь на псевдоним. Затем вы создаете минимум три объекта на форме: TTable или TQuery , который фактически общается с базой данных через псевдоним и получает данные; объект TDataSource , который связывает данные и визуальные компоненты; по крайней мере один компонент, отображающий данные.
Если вы потратили несколько часов, чтобы заставить все это работать, но ничего не получилось, попробуйте установить свойство Active у TTable или TQuery в True . Это откроет таблицу в базе данных.
2. Какие серверы данных поддерживает Delphi?
Delphi (в старших вариантах поставки) напрямую работает с Oracle, Informix, InterBase, DB/2, Sybase, MS SQL Server. Вы можете использовать ODBC драйверы третьих фирм, чтобы работать с любым сервером. Наиболее известные производители качественных ODBC драйверов:
• InterSolv ( www.intersolv.com)
• Visigenic Software ( www.visigenic.com)
Есть специализированный вариант Delphi 2.0 — Delphi/400, который ориентирован исключительно на работу с AS/400.
3. Cуществует ли способ работать из Delphi с AS/400, исключая ODBC?
В состав Delphi 1.0 не входит, но доступен отдельно визуальный 16-разрядный компонент компании Gerald Limited.
Есть специализированный вариант Delphi 2.0 - Delphi/400, который ориентирован исключительно на работу с AS/400.
4. Cуществует ли способ работать из Delphi с Lotus Notes (IBM Notes), за исключением ODBC?
Существует только 16-разрядный линк для Notes. В состав Delphi он не входит (разработан компанией Brainstorm) и поставляется отдельно по каналам Borland. Спрашивайте дилеров Borland.
5. Можно ли создавать с помощью Delphi сетевые приложения не для схемы клиент-сервер, а для схемы с разделяемыми файлами (как, например, в FoxPro)?
Компонент TTable имеет свойство Exclusive ; если Exclusive=False , то одну и ту же таблицу могут просматривать и редактировать несколько пользователей. При редактировании таблицы текущая запись автоматически блокируется. Если есть необходимость заблокировать несколько записей или всю таблицу, то для этого придется использовать функции BDE — модуль DBIPROCS (
) или BDE (
). Кстати, существенно, что это можно делать и на Delphi Desktop - отсюда вывод: сетевые приложения (в файл-серверной архитектуре) можно делать и на Delphi Desktop.
6. Можно ли работать при помощи Delphi не с IDAPI — или ODBC-драйверами, а с "родными" API каких-либо СУБД?
Да, можно. Это еще один пример открытости Delphi. В одном из проектов Демо-центра появилась необходимость прямого обращения к API SQL-сервера. Был написан соответствующий интерфейс поверх Borland InterBase API - и все заработало. Аналогично: существуют написанные компоненты для работы с AS/400 и для мэйнфреймов.
7. Какие версии Informix (Online, I-NET) поддерживают SQL Links?
BDE версии до 2.51 поддерживает работу с клиентской частью Informix ESQL/C I*NET 4.x. BDE версии 2.51-2.52 поддерживается ESQL/C I*NET 5.x.
32 SQL Link версии 3.5 и выше поддерживает ESQL/C I*NET 7.x.
8. Как работать с таблицами в виде текстовых файлов (ASCII)?
Информацию об этом вы можете найти в каталоге DELPHI\DOC. Файл называется ASCIIDRV.TXT.
9. Как правильно указать имя сервера Oracle?
Пишите имя по правилам Oracle - перед именем не забудьте поставить @.
10. Что такое транзакции (Transactions)?
SQL database серверы обрабатывают запросы в 'логических единицах работы' которые и называются транзакциями. То есть транзакция - это группа связанныхопераций (SQL запросов) которые все должны быть выполнены успешно перед тем, как сервер закончит (commit) изменение базы данных. Либо всяэто группа будет выполнена, либо нет. Транзакции обеспечивают целостность базы данных ...
Читать дальше