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;