Запись RecNo из RecordCount

{codecitation class=»brush: pascal; gutter: false;» width=»600px»}

Автор: Mike Downey

…какой метод вовращает номер текущей записи? (т.е.: Я хочу использовать это вместе с функцией RecordCount и выводить для пользователя в строке состояния нечто вроде: «Запись #n из x»)

Вот функция, возвращающая номер текущей записи в наборе данных DataSet. В основном я все скопировал и расставил комментарии, которые теперь лишают меня возможности поговорить на эту тему. Могли бы вы получить эти цифирьки из DBIPROCS.INT?

function RecordNumber(Dataset: TDataset): Longint;

var

CursorProps: CurProps;

RecordProps: RECProps;

begin

{ Возвращаем 0, если набор данных не Paradox или dBASE }

Result := 0;

with Dataset do

begin

{ Набор данных активен? }

if State = dsInactive then

DBError(SDataSetClosed);

{ Нам необходимо сделать этот вызов, чтобы «захватить» курсор iSeqNums }

Check(DbiGetCursorProps(Handle, CursorProps));

{ Синхронизируем курсор BDE с курсором набора данных }

UpdateCursorPos;

{ Заполняем RecordProps текущими свойствами записи }

Check(DbiGetRecord(Handle, dbiNOLOCK, nil, @RecordProps));

{ С каким типом набора данных мы работаем? }

case CursorProps.iSeqNums of

0: Result := RecordProps.iPhyRecNum; { dBASE }

1: Result := RecordProps.iSeqNum; { Paradox }

end; { case }

end; { with }

end; { function }

Затем, в обработчике события OnDataChange DataSet, я использовал команду:

MyTextVariable := ‘Запись ‘ IntToStr( RecordNumber( tImport ) )

‘ из ‘ IntToStr( tImport.RecordCount ) ;

{/codecitation}

Добавить комментарий