edrp.cn的Blog

学习,需要交流,欢迎大家和我共同来学习C#,ASP.NET,MS SQL Server开发Web项目,欢迎大家和我交流

博客园 首页 新随笔 联系 订阅 管理

分页方法,其中 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;

posted on 2022-08-05 09:38  edrp.cn  阅读(291)  评论(0编辑  收藏  举报