FDQuery的分頁

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章