Вот один из советов читателей. Привожу письмо полностью.
Доброго времени суток, Валентин.
Прочитал Ваши "Советы по 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; |
С уважением, Александр Куприн. [000226]