标签:PageIndex 分页 PageSize FDQuery1 FireDAC RecsSkip FetchOptions 查询 Qry
FireDAC原生支持分页查询,不用写分页查询SQL,只要设置FetchOptions.RecsSkip(跳过的行数)和RecsMax(分页大小)允许通过结果集进行分页。
打开游标后,将跳过第一个RecsSkip。其余的记录,最多RecsMax将被获取。当Prepared后,更改RecsSkip和RecsMax属性值不起作用。因此,在
获取下一行页之前,该命令必须未准备,然后再执行。
//分页大小为20,查询第一页
FDQuery1.FetchOptions.RecsSklp:=0;
FDQuery1.FetchOptions.RecsMax:=20;
FDQuery1.Open;
//查询第2页
FDQuery1.Disconnect;
FDQuery1.FetchOptions.RecsSkip:=20;
FDQuery1.Open;
//查询第3页
FDQuery1.Disconnect;
FDQuery1.FetchOptions.RecsSkip:=40;
FDQuery1.Open;
可以简单封装一个分页查询过程,其中PageSize为分页大小,PageIndex页码,0为第一页,RecsSkip可以通过PageSize*PageIndex计算出来
procedure PagingQuery(Query:TFDQuery;PageSize,PageIndex:integer);
begin
Query.Disconnect;
Query.FetchOptions.RecsSkip:=PageSize*PageIndex;
Query.FetchOptions.RecsMax:=PageSize;
Query.Open;
end;
procedure OpenAndGetAnyPage(PageIndex,PageSize:Integer;SqlText:string);
var
Qry:TFDQuery;
begin
Qry:=TFDQuery.create(Self);
try
Qry.Connection:=Conn;//数据库连接控件
Qry.FetchOptions.RecsSkip:=PageSize*PageIndex;//跳过的记录数(PageIndex 0-N)
Qry.FetchOptions.RecsMax:=PageSize;//每页最大记录(大于0)
Qry.Sql.Text:=SqlText;
Qry.Prepare;//准备
Qry.Open;//打开(不用用Open(SQL)的方式,必须先Prepare)
//遍历数据
while not Qry.Eof do
begin
//TODO处理
Qry.next;
end;
Finally
Qry.Free;
end;
end;
标签:PageIndex,分页,PageSize,FDQuery1,FireDAC,RecsSkip,FetchOptions,查询,Qry 来源: https://www.cnblogs.com/AP0606436/p/15859218.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。