DBase и особые случаи BDE
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));
|