Delphi dbf文件如何定位记录(即设置Table的RecNum属性来移动到该记录号)

Delphi的table的RecNum属性,可以用来定位记录,如:self.Table1.RecNum:=23;即可以让数据库记录移动到23号记录上,但这种作用仅限于Paradox数据库,而不是dBASE数据库。如何解决这个问题,可以如下处理:

unit DBTables;
...
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;

或者采用如下方法也可:

procedure SetRecNo(DataSet: TDataSet; const RecNo: Integer); var ActiveRecNo, Distance: Integer; begin
  if (RecNo > 0) then
  begin ActiveRecNo := DataSet.RecNo; if (RecNo <> ActiveRecNo) then
    begin DataSet.DisableControls; try Distance := RecNo - ActiveRecNo; DataSet.MoveBy(Distance); finally DataSet.EnableControls; end; end; end; end;

 

 

你可能感兴趣的:(Delphi)