Using Dynamic Resources and Local Parameters in Reports
When working with reports that are created using business views, sometimes you may find the predefined view elements in the business views the reports use, or the predefined parameters in the current catalog cannot meet your requirements. In this case, you can create dynamic resources (including formulas and aggregations) and local parameters and use them in the reports to get the desired data. Then when you save the reports, the dynamic resources and local parameters will be saved along with the reports as their resources in the report files.
Dynamic resources and local parameters are report level resources, which means they are only available to the report for which they are created. Unless you need to use the formulas, aggregations or parameters in multiple reports, it is always better to create dynamic resources and local parameters rather than create them in the catalog.
Below is a list of the sections covered in this topic:
Creating and Using Dynamic Formulas
To create a dynamic formula:
- In the Data panel of the main window expand the Dynamic Resources > Formulas node and select <New Formula…>, or in the report wizard or dialog where a dynamic formula list is provided, select <New Formula…>.
- In the displayed dialog, specify the name of the formula and select OK. The Formula Editor appears.
- By default, Logi JReport will decide whether the formula can be used as an aggregation object, and if not the formula will be used as a detail object. You can specify to use the formula as a detail, group, or an aggregation object, by selecting the corresponding view element type from the Use As drop-down list on the toolbar.
Whether a dynamic formula can be used as a certain type depends on the following rules:
- Any formula can be used as Detail.
- Any formula that references a DBField and not an aggregation can be used as Group.
- A formula that refers only to aggregations can be used as Aggregation. For example, there are two aggregations Sum_Total and Sum_Quantity, and you can create a formula
@"Sum_Total" / @"Sum_Quantity"
and use it as an aggregation. - A formula that follows the custom aggregation expression can be used as Aggregation.
- Create the formula by double-clicking the required fields, functions including Logi JReport built-in functions and user defined functions, and operators from the Fields, Functions and Operators panels respectively. You can also write the formula by yourself in the editing panel.
- Save the formula and exit the Formula Editor.
Once a dynamic formula is created, you can then drag it from the Data panel to the desired position in the report, or add it as report field when working with the report wizard.
In the Data panel, you can make use of the shortcut menu of any existing dynamic formula to edit or delete the formula, or change the formula type as Group, Detail, or Aggregation if needed. Dynamic formulas that have been used in the report cannot be deleted.
Using User Defined Functions in Dynamic Formulas
Logi JReport supports the User Defined Formula Function feature which allows you to create any functions as you want and use them in your formulas. However, if you want to use user defined functions in dynamic formulas, you need to create them specifically for the current report via the dynamic resource list.
To create a user defined function for a report:
- In the Data panel of the main window expand the Dynamic Resources > User Defined Functions node and select <New Function…>, or in the report wizard or dialog where a dynamic resource list is provided, select <New Function…>.
- In the displayed dialog, specify the name of the function and select OK.
- In the User Defined Function Editor, create the function according to your requirement.
- Save the function and exit the editor.
The function is then available under the User Defined Functions node in the Functions panel of the Formula Editor and User Defined Function Editor. You can then call it in a dynamic formula or another user defined function by double-clicking it.
In the case a user defined function named function1 is arguments: integer age, string name;
, you can call it as follows:
@function1(25, "John Smith");
@'function1'(25, "John Smith");
@"function1"(25, "John Smith");
If you want to further edit an existing user defined function or remove any that is not required, right-click the function in the Data panel of the main window and then select the corresponding command on the shortcut menu. Functions that have been used in the report cannot be deleted.
Creating and Using Dynamic Aggregations
To creating a dynamic aggregation:
- In the Data panel of the main window, or in the Resources box of the report wizard, expand the Dynamic Resources > Aggregations node, then select <New Aggregation…>. The New Aggregation dialog appears.
- In the Aggregation Name text box, specify the name of the dynamic aggregation.
- Select next to the Mapping Name text box to specify the field on which the dynamic aggregation is based.
You can map dynamic aggregations to the available resources such as group objects and detail objects in the current business view, or the dynamic formulas that have been created in a web report.
- From the Aggregate Function drop-down list, specify the aggregate function. When DistinctSum is selected, you should select next to the Distinct On text box to specify one or more fields according to whose unique values to calculate DistinctSum using the Select Fields dialog.
- When done, select OK to create the dynamic aggregation.
Once a dynamic aggregation is created, you can then drag it from the Data panel to the desired position in the report, or add it as report field when working with the report wizard.
In the Data panel, you can make use of the shortcut menu of any existing dynamic aggregation to edit it in the Edit Aggregation dialog or delete it. Dynamic aggregations that have been used in the report cannot be deleted.
Creating and Using Local Parameters
- In the Data panel of the main window, or when specifying the value of a filter condition for a data component created using a business view with the Format Filter dialog, select <New Parameter…> in the Local Parameters node.
- In the New Parameter dialog, create the parameter according to your requirement.
- Select OK to create the parameter and exist the dialog.
Once a local parameter is created, you can then use it to dynamically filter data of the data component in the report, add it to a parameter control or parameter form control in the report, or reference it in a dynamic record level pass one formula used in the report.
In the Data panel, you can also make use of the shortcut menu of any existing local parameter to edit or delete it. Local parameters that have been used in the report cannot be deleted.
Notes:
- You can only use JDK (not JRE) to compile formulas and user defined functions created in Logi JReport and save them with no errors into a report.
- Currently, global variables are not supported in dynamic formulas and user defined functions.
- When dynamic formulas and user defined functions reference display names or mapping names, the names should not contain any of the following characters if the names are not quoted by double-quotation marks "":
"~", "`", "!", "@", "#", "$", "%", "^", "&", "*", "(", ")", "-", "+", "=", "{", "}", "[", "]", "|", "\\", ":", ";", "\", " ' ", "<", ",", ">", ".", "?", "/"
Examples:
- Expression @Customer#; will cause a syntax error. But @"Customer#" is ok.
- If a field has the display name Category.Aggregation, quote it as "Category.Aggregation" or "Category"."Aggregation".