Поиск записи в больших таблицах

Советы » Поиск, сортировка и фильтр » Поиск записи в больших таблицах

Прочитал Ваши "Советы по Delphi" - спасибо большое: понравилось и, главное, помогло - никак не получалось нарисовать круглую форму. В свою очередь хочу предложить на Ваш суд небольшую процедуру, которая мне очень помогла. Процедура позволяет переходить на любую из записей в таблице (формат Paradox или DBase). Необходимость в ней возникла, когда мне пришлось работать с таблицей размером в 10 и более тысяч записей у которой было несколько калькулируемых полей и полей подлинкованных из объектов TQuery. При использовании метода TTable.MoveBy программа медленно и печально замолкала (вообще-то она работала, но как?!). Встретил я этот пример в технической документации Borland (2656), где сравнивались функции Paradox Engine и BDE. Пример был написан на C. Вот его интерпретация на Delphi:

uses

BDE; ... procedure

MoveToRec(RecNo: longint; taSingle: TDBDataSet); // переход на логическую запись var

ErrorCode: DBIResult; CursorProps: CurProps; begin

ErrorCode := DbiGetCursorProps(taSingle.Handle, CursorProps); if

ErrorCode = DBIERR_NONE then

begin

case

TTable(taSingle).TableType of

ttParadox: ErrorCode := DbiSetToSeqNo(taSingle.Handle, RecNo); ttDBase: ErrorCode := DbiSetToRecordNo(taSingle.Handle, RecNo); end

; { case..} taSingle.Resync([rmCenter]); end

{ if..} end

; { procedure MoveToRec }

Другое по теме:

Категории

Статьи

Советы

Copyright © 2023 - All Rights Reserved - www.delphirus.com