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;
来源:https://www.cnblogs.com/rtcmw/p/13813546.html
Copyright © 2014 DelphiW.com 开发 源码 文档 技巧 All Rights Reserved
晋ICP备14006235号-8 晋公网安备 14108102000087号
执行时间: 0.12123489379883 seconds