Советы по Delphi

         

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


Dbase является причиной бОльшего количества 'special case' в BDE, чем таблицы SQL и Paradox из-за поддержки "Выражений в Индексах" (Expressions in indexes) и т.д., и т.п..
  1. Создание/пересоздание индекса
    • DbiRegenIndexes( Table1.Handle ); { Регенерация всех индексов }
    • create index (зависит от существования выражения)

      if (( Pos('(',cTagExp) + Pos('+',cTagExp) ) > 0 ) thenTable1.AddIndex( cTagName, cTagExp, [ixExpression]) (<- ixExpression - _литерал_)elseTable1.AddIndex( cTagName, cTagExp, []);

    • Мастер/Деталь связан с выражением дочернего индекса
      • вызов BDE процедуры DbiLinkDetailToExp() вместо обычной DbiLinkDetail()


      • Упаковка таблиц
        with Table1 doStrPCopy( 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));
      [000561]

      Содержание раздела