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

Текущий RecNo (dBase/Pdox)
...какой метод вовращает номер текущей записи? (т.е.: Я хочу использовать это вместе с функцией 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 ) ;

Mike Downey 

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