Delphi World - DBase и особые случаи BDE
Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
DBase и особые случаи BDE

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

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

  1. Создание/пересоздание индекса
    • DbiRegenIndexes( Table1.Handle ); { Регенерация всех индексов }
    • create index (зависит от существования выражения)

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

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

with Table1 do
  StrPCopy( TName, TableName );
Result := DBIPackTable( DbHandle, Handle, TName, szDBASE, TRUE );

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

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

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

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

Проект Delphi World © Выпуск 2002 - 2017
Автор проекта: Эксклюзивные курсы программирования