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