分页方法,其中 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;
以上可以看出SQLServer分页必须要有排序字段,这不通用啊,都快要放弃了,结果发现FireDAC居然天生支持分页
procedure OpenAndGetAnyPage(PageIndex, PageSize: Integer; SqlText: string);
var
Qry: TFDQuery;
begin
Qry := TFDQuery.Create(Self);
try
Qry.Connection := Connection;// 数据库连接控件
Qry.FetchOptions.RecsSkip := PageSize * PageIndex;// 跳过的记录数(PageIndex 0~N)
Qry.FetchOptions.RecsMax := PageSize;// 每页最大记录(大于0)
Qry.SQL.Text := SqlText;// select * from tablename
Qry.Prepare;// 准备
Qry.Open;// 打开(不能用Open(SQL)的方式,必须先Prepare)
// 遍历数据
while not Qry.Eof do
begin
//TODO 处理
Qry.Next;
end;
finally
Qry.Free;
end;
end;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?