DBase и особые случаи BDE

{codecitation class=»brush: pascal; gutter: false;» width=»600px»}

Ну и запросы у вас — сказала база данных и повисла.

Dbase является причиной бОльшего количества ‘special case’ в BDE, чем таблицы SQL и Paradox из-за поддержки «Выражений в Индексах» (Expressions in indexes) и т.д., и т.п..

Создание/пересоздание индекса

DbiRegenIndexes( Table1.Handle ); { Регенерация всех индексов }

create index (зависит от существования выражения)

if (( Pos(‘(‘,cTagExp) Pos(‘ ‘,cTagExp) ) > 0 ) then

Table1.AddIndex( cTagName, cTagExp, [ixExpression]) // <- ixExpression - _литерал_

else

Table1.AddIndex( cTagName, cTagExp, []);

Мастер/Деталь связан с выражением дочернего индекса

вызов BDE процедуры DbiLinkDetailToExp() вместо обычной DbiLinkDetail()

Упаковка таблиц

with Table1 do

StrPCopy( TName, TableName );

Result := DBIPackTable( DbHandle, Handle, TName, szDBASE, TRUE );

Установка видимости удаленных записей, on/off (т.е. dBase SET DELETED ON/OFF)

DbiSetProp( hDBIObj(Table1.Handle), curSOFTDELETEON, LongInt(bValue));

Установка символа частичного/точного соответствия, on/off (т.е. dBase SET EXACT ON/OFF)

DbiSetProp( hDBIObj(Table1.Handle), curINEXACTON, LongInt(bValue));

{/codecitation}

Добавить комментарий