To chechy(我爱洁洁):Borland的Help中写的是TBDEDataSet中的RecNO可以操作,TBDEDataSet中已经将TDataSet中的两个读写RecNO的方法屏蔽了,下面是这两个方法:function TBDEDataSet.GetRecNo: Integer; var BufPtr: PChar; begin CheckActive; if State = dsCalcFields then BufPtr := CalcBuffer else BufPtr := ActiveBuffer; Result := PRecInfo(BufPtr + FRecInfoOfs).RecordNumber; end;procedure TBDEDataSet.SetRecNo(Value: Integer); begin CheckBrowseMode; if (FRecNoStatus = rnParadox) and (Value <> RecNo) then begin DoBeforeScroll; if DbiSetToSeqNo(Handle, Value) = DBIERR_NONE then begin Resync([rmCenter]); DoAfterScroll; end; end; end;
var
BufPtr: PChar;
begin
CheckActive;
if State = dsCalcFields then
BufPtr := CalcBuffer else
BufPtr := ActiveBuffer;
Result := PRecInfo(BufPtr + FRecInfoOfs).RecordNumber;
end;procedure TBDEDataSet.SetRecNo(Value: Integer);
begin
CheckBrowseMode;
if (FRecNoStatus = rnParadox) and (Value <> RecNo) then
begin
DoBeforeScroll;
if DbiSetToSeqNo(Handle, Value) = DBIERR_NONE then
begin
Resync([rmCenter]);
DoAfterScroll;
end;
end;
end;
abs(Query1.RecNo)
TClientDataSet.RecNo
学习一下!