使用 FireDAC 分页查询

FireDAC 原生支持分页查询,不用写分页查询SQL,只要设置 FetchOptions.Recskip (跳过的行数)和 RecsMax(分页大小)允许通过结果集进行分页。打开游标后,将跳过第一个 RecsSkip 。其余的记录,最多 RecxMax 将被获取。当 Prepared 后更改 RecsSkip 和 RecsMax属性值不起作用。因此,在获取下一行页之前,该命令必须未准备,然后再次执行。例如:

  // 分页大小为 20,查询第一页
  FDQuery1.FetchOptions.RecsSkip := 0;
  FDQuery1.FetchOptions.RecsMax := 20;
  FDQuery1.Open;
  // process rows

  // 查询第 2 页
  FDQuery1.Disconnect;
  FDQuery1.FetchOptions.RecsSkip := 20;
  FDQuery1.Open;
  // process rows

  // 查询第 3 页
  FDQuery1.Disconnect;
  FDQuery1.FetchOptions.RecsSkip := 40;
  FDQuery1.Open;
  // process rows

我们可以简单封装程一个分页查询过程,其中 PageSize 为分页大小, PageIndex 页码 ,0 为第一页 ,RecsSkip 可以通过  PageSize * PageIndex 计算出来,如下:

procedure TForm1.PagingQuery(Query: TFDQuery; PageSize, PageIndex: Integer);
begin
  Query.Disconnect;
  Query.FetchOptions.RecsSkip := PageSize * PageIndex;
  Query.FetchOptions.RecsMax := PageSize;
  Query.Open;
end;

 

posted @ 2020-10-14 10:53  塞翁失身  阅读(989)  评论(0编辑  收藏  举报