Overview
Version
| Report Server Version |
|---|
11.0 |
Function Description
Note:1. The row-based engine applies to reports with large amounts of data and simple structures. Before enabling the row-based engine, refer to the second section of this document to confirm whether the row-based engine can be enabled in the report environment.
If the row-based engine cannot be enabled, refer to the third section of this document to select a suitable alternative solution.
2. By default, the row-based engine is not enabled for FineReport reports.
FineReport supports enabling the row-based engine: fetching data by page to execute reports, which can greatly shorten report execution time and improve user experience. The following figure shows the effect.
General reports: The system fetches all data first, then executes a report, and finally returns the overall report result to the browser. (Duration from user access initiation to successful loading of the template homepage = Data fetching time + Report execution time)
Reports with the row-based engine enabled: The system fetches data and executes a report simultaneously. A user cannot view a page until the page is executed. (Duration from user access initiation to successful loading of the template homepage = Time to fetch the homepage data + Time to calculate the homepage data)

Usage Limit
If a user encounters the following limits while using the row-based engine, the user can refer to the third section of this document to use other suitable pagination solutions.
Data Source Limit
The row-based engine applies only to single-dataset reports. For multi-dataset reports, even if the row-based engine is enabled, the data cannot be displayed in the pagination mode.
Database Limit
Data fetching by page with the row-based engine applies only to Oracle, MySQL, HSQL, and SQL Server (2012 and later versions) databases.
Note:SQL Server 2012 and later versions support the row-based engine, but order by must be written into the SQL statement.
Report Feature Limit
Since the row-based engine fetches data and executes a report simultaneously, the calculations on each page must be independent; that is, the report cannot have complex calculations involving cell associations.
To improve the performance of the row-based engine, the following complex functions are unavailable for FineReport reports with the row-based engine enabled:
Cell filtering and cell field summation
Repetition/Freezing
Row height, column width, hyperlinks, pagination after rows, display, and widget settings in condition attributes
Settings of all attributes except vertical expansion in cell attributes
Floating elements, hierarchical coordinates, row/column split, and calculation across multiple sheets
Chart display and sub-reports
Cell values for content prompts and formulas used in custom settings
Pagination export by sheet to Excel
Result set filtering for data columns
Parameter passing using $$$
Storage procedure
Grouped display of reports in the pagination preview mode
Pagination by fixed row quantity in the data entry preview mode
Note:
Example Index
This section provides the following solutions to achieve backend pagination calculation, improving the report preview speed. Users can select a solution as required.
| Application Scenario | Solution |
|---|---|
The row-based engine is enabled for a single-dataset report that uses a database supported by the row-based engine. | Refer to Executing Layered Reports with the Row-based Engine Enabled to enable the row-based engine. |
The row-based engine is enabled for a single-dataset report that uses a database unsupported by the row-based engine. | (1) Manually write pagination SQL statements first. Note:For details, see Layered Reports by Pagination SQL Statements in a Single Dataset Template. (2) Enable the row-based engine. For details, see Executing Layered Reports with the Row-based Engine Enabled. |
Pagination query is implemented in a multi-dataset template. | (1) Use the sequence numbers of rows in the database itself or use the database functions to generate the sequence numbers of rows (namely, row numbers). (2) Use the page number parameter in the where condition to display data within a specific row number range, and click the custom previous page and next page buttons to re-pass the page number parameter for retrieving the corresponding data. For details, see Layered Reports in a Multi-Dataset Template. |
The row-based engine cannot meet the user requirements. | You can try to use the new calculation engine:
For details, see Introduction to the New Calculation Engine. |