Меню сайта
Мини-чат
Чтобы добавить сообщение, необходимо авторизоваться.
Главная » Статьи » Не стандартные примеры на Delphi » Базы Данных

Поиск записи в больших таблицах
Вот один из советов читателей. Привожу письмо полностью.

Доброго времени суток, Валентин.

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


    uses
... BDE, DBTables;

function MoveToRec(RecNo: longint;taSingle: TDBDataSet): DBIResult;
var
CursorProps: CurProps;
begin
Result:= DbiGetCursorProps(taSingle.Handle, CursorProps);

if Result = DBIERR_NONE then begin
case TTable(taSingle).TableType of
ttParadox: Result:= DbiSetToSeqNo(taSingle.Handle,RecNo);
ttDBase: Result:= DbiSetToRecordNo(taSingle.Handle,RecNo);
else
Result:= DBIERR_NOTSUPPORTED;
end;{ case..}

//------------------------------------
if Result = DBIERR_NONE then
taSingle.Resync([rmCenter]);
//------------------------------------
end{ if..}
end;

С уважением, Александр Куприн.

Категория: Базы Данных | Добавил: DelphiAiX (20.05.2012)
Просмотров: 481 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]