Читать «Виртуальная библиотека Delphi» онлайн - страница 87

Unknown

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

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

11. Проблемы с именами таблиц в ODBC-драйверах.

При использовании ODBC-драйверов, если у вас появляются ошибки при открытии таблицы - установите порядок сортировки (SORT ORDER) хотя-бы Paradox ASCIIi. Это, например, помогает при доступе к базам данных Lotus Notes (ODBC-драйвер фирмы Casahl).

12. Какой формат данных предпочесть в Delphi? dBase или Paradox?

Если вам действительно все равно, то вот несколько пунктов 'за' формат Paradox:

1. Широкий выбор типов полей, включая автоинкремент, BLOBs, и т.п.

2. Соблюдение целостности данных, контроля данных, обновления индексов на уровне ядра BDE.

3. Первичный индекс таблицы автоматически соблюдает уникальность записей, вторичные индексы обеспечивают отсортированный "вид" на записи таблицы.

13. Как нужно писать функцию "change password"  для таблицы Парадокса? 

Нет способа сделать это в пределах Delphi VCL. Кажется, это довольно серьезное упущение. Однако, есть возможность сделать это напрямую через Borland Database Engine через интерфейс предоставляемый модулями DBIPROCS.DCU и DBITYPES.DCU () или BDE.DCU (). Нужно использовать функцию DbiDoRestructure.

14. Есть ли какая-нибудь процедура для перестройки разрушенного индекса, типа TUTILITY.EXE из PdoxWin?

BDE включает функцию для этого — DbiRegenIndexes.

15. Есть ли какая-нибудь процедура для упаковки таблицы dBase?

В BDE есть функция DbiPackTable.

16. Как для .dbf таблицы создать индекс по выражению?

Нужно использовать процедуру AddIndex с параметром ixExpression, например:

Table1.AddIndex('NewIndex','Field1 * Field2 + Field3', [ixExpression]);

17. Как создать в Paradox вторичный индекс с упорядочиванием по убыванию?

Используйте флаг ixDescending:

Table1.AddIndex('NewIndex', 'CustNo;CustName', [ixDescending]);

18. Хочу узнать номер текущей записи, как это сделать?

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

19. Как посмотреть удаленные записи в таблице .dbf? А как их восстановить?

Для того, чтобы удаленные записи были доступны, нужно установить соответствующее свойство для курсора с помощью функции BDE DbiSetProp:

DbiSetProp(hObj(Table1.Handle), curSoftDeleteOn, 1);

Проверка удалена запись или нет производится через функцию чтения записи DbiGetRecord. Для восстановления записи применяется функция DbiUndeleteRecord.