Difference between revisions of "Reports Workspace"

From Lianjapedia
Jump to: navigation, search
(Data Source)
(Data Source)
(45 intermediate revisions by 2 users not shown)
Line 1: Line 1:
''Coming soon in Lianja v5.0''
 
 
 
==Overview==
 
==Overview==
 
[[{{ns:file}}:reportbuilder1.png|800px|left|border|link={{filepath:reportbuilder1.png}}|Reports Workspace]]
 
[[{{ns:file}}:reportbuilder1.png|800px|left|border|link={{filepath:reportbuilder1.png}}|Reports Workspace]]
 
<br clear=all>
 
<br clear=all>
 +
 +
==Report Explorer==
 +
The Report Explorer panel displays the available reports grouped by category.  Click on a report description/name to open it in the design panel.
  
 
==Buttons==
 
==Buttons==
[[{{ns:file}}:rb_buttons.png|left|border|link={{filepath:rb_buttons.png}}|Reports Workspace]]
+
[[{{ns:file}}:rb_buttons.png|left|border|link={{filepath:rb_buttons.png}}|Reports Workspace Buttons]]
 
<br clear=all>
 
<br clear=all>
  
==Reports==
+
{| class="wikitable" width="100%"
Select an existing report from the pulldown. Reports built in the Report Builder are saved to the Library reports directory so they can be used in multiple Apps. The Lianja App Builder distribution comes with some pre-built demo reports.
+
!width="15%"|Button
[[{{ns:file}}:l5_report_options1.png|800px|border|left|link={{filepath:l5_report_options1.png}}|Report Builder]]
+
!width="85%"|Description
 +
|-
 +
|valign="top"|New
 +
|valign="top"|Create a new report.
 +
|-
 +
|valign="top"|Save
 +
|valign="top"|Save the current report.
 +
|-
 +
|valign="top"|Copy
 +
|valign="top"|Copy the current report to a new report.
 +
|-
 +
|valign="top"|Preview
 +
|valign="top"|Display the current report in the print preview viewer with the option to print.
 +
|-
 +
|valign="top"|Close
 +
|valign="top"|Close the current report.
 +
|-
 +
|valign="top"|Rename
 +
|valign="top"|Rename the current report.
 +
|-
 +
|valign="top"|Delete
 +
|valign="top"|Delete the current report.
 +
|-
 +
|valign="top"|Undo
 +
|valign="top"|Undo changes made to the current report.
 +
|-
 +
|valign="top"|Refresh
 +
|valign="top"|Save and refresh the current report.
 +
|-
 +
|valign="top"|Export
 +
|valign="top"|Export the current report to one of the following formats:
 +
<ul>
 +
<li>HTML</li>
 +
<li>PDF</li>
 +
<li>CSV</li>
 +
<li>XML</li>
 +
<li>Excel</li>
 +
<li>Word</li>
 +
</ul>
 +
|-
 +
|valign="top"|Deploy
 +
|valign="top"|Deploys the current report on the local machine.  Note: if any sub reports are specified, they should be deployed individually.
 +
|-
 +
|valign="top"|Apply
 +
|valign="top"|Apply changes to the current report.
 +
|-
 +
|}
 +
 
 +
===Run/Design===
 +
[[{{ns:file}}:rb_buttons_run.png|left|border|link={{filepath:rb_buttons_run.png}}|Reports Workspace]]
 
<br clear=all>
 
<br clear=all>
 +
 +
Click the '''Run''' button to switch to runtime view and the '''Design''' button to return to the development view.
 +
 +
[[{{ns:file}}:rb_buttons_design.png|800px|border|left|link={{filepath:rb_buttons_design.png}}|Report Builder]]
 +
<br clear=all>
 +
 +
==Report==
 +
{| class="wikitable" width="100%"
 +
!width="15%"|Setting
 +
!width="85%"|Description
 +
|-
 +
|valign="top"|Name
 +
|valign="top"|Name of the report.  This is set when the report is created and the setting is readonly.  To change the name of the report, use the '''Rename''' button.
 +
|-
 +
|valign="top"|Category
 +
|valign="top"|An optional category for the report.  The categories are used to group reports in the [[#Reports Explorer|Reports Explorer]].  If no category is specified, the report is listed under ''General''.
 +
|-
 +
|valign="top"|Description
 +
|valign="top"|An optional description for the report.  If specified, the Description is used in the [[#Reports Explorer|Reports Explorer]], otherwise the Name is used.
 +
|-
 +
|valign="top"|Roles
 +
|valign="top"|The roles controlling who can run the report.  [[Users and Roles|Roles]] are created in the [[Users and Roles|Users workspace]].  Roles are specified in a comma-separated list.  The -rolename syntax can be used to exclude users who have that role; '''*''' allows all roles and is the default.  If a user's role excludes them from running the report, it does not appear in the [[#Reports Explorer|Reports Explorer]].
 +
|-
 +
|valign="top"|Creator
 +
|valign="top"|Name of the user who created the report.  This is set when the report is created and the setting is readonly.
 +
|-
 +
|valign="top"|Date Modified
 +
|valign="top"|Last modification date and time for the report.  This is updated automatically and the setting is readonly.
 +
|-
 +
|}
  
 
==Data Source==
 
==Data Source==
Line 18: Line 98:
  
 
{| class="wikitable" width="100%"
 
{| class="wikitable" width="100%"
!width="15%"|Setting
+
!width="20%"|Setting
!width="25%"|Required
+
!width="20%"|Required
!width="65%"|Description
+
!width="60%"|Description
 
|-
 
|-
 
|valign="top"|Connection
 
|valign="top"|Connection
Line 41: Line 121:
 
|valign="top"|The filter condition to be applied to the records from the '''Table'''.  Click the [...] button to display the 'Custom Query Builder'.  
 
|valign="top"|The filter condition to be applied to the records from the '''Table'''.  Click the [...] button to display the 'Custom Query Builder'.  
 
|-
 
|-
|valign="top"|Include Memos
+
|valign="top"|Needs Filter
 +
|valign="top"|No
 +
|valign="top"|Whether a filter is required before the report is displayed.  Clicking the 'Search' button displays the [[QueryBuilder|Query Builder]] allowing the end user to build the required query.
 +
|-
 +
|valign="top"|Memos
 
|valign="top"|No
 
|valign="top"|No
 
|valign="top"|Whether to include variable length text memo fields. If true, the text of the memo field contents is displayed.  If false (default), 'MEMO' is displayed when the memo field has contents and 'Memo' when it is empty.
 
|valign="top"|Whether to include variable length text memo fields. If true, the text of the memo field contents is displayed.  If false (default), 'MEMO' is displayed when the memo field has contents and 'Memo' when it is empty.
 
|-
 
|-
|valign="top"|Include Images
+
|valign="top"|Images
 
|valign="top"|No
 
|valign="top"|No
 
|valign="top"|Whether to include image object fields. If true, the image is displayed.  If false (default), the field name is displayed.
 
|valign="top"|Whether to include image object fields. If true, the image is displayed.  If false (default), the field name is displayed.
Line 61: Line 145:
  
 
{| class="wikitable" width="100%"
 
{| class="wikitable" width="100%"
!width="15%"|Setting
+
!width="20%"|Setting
!width="25%"|Default
+
!width="20%"|Default
!width="65%"|Description
+
!width="60%"|Description
 
|-
 
|-
 
|valign="top"|Paper Size
 
|valign="top"|Paper Size
Line 74: Line 158:
 
|-
 
|-
 
|valign="top"|Rows per page
 
|valign="top"|Rows per page
|valign="top"|3
+
|valign="top"|40
 
|valign="top"|The number of rows to display per page when printing the report.
 
|valign="top"|The number of rows to display per page when printing the report.
 
|-
 
|-
 
|valign="top"|Row Height
 
|valign="top"|Row Height
|valign="top"|0 (autosize)
+
|valign="top"|0
|valign="top"|The row height in pixels when printing the report.  
+
|valign="top"|The row height in pixels when printing the report.  The default is 0, which signifies that the rows should be autosized.
 
|-
 
|-
 
|valign="top"|Show Grid Lines
 
|valign="top"|Show Grid Lines
Line 88: Line 172:
 
|valign="top"|True
 
|valign="top"|True
 
|valign="top"|Whether page numbers (nPage of nPages) should be shown in the page footer when printing the report.
 
|valign="top"|Whether page numbers (nPage of nPages) should be shown in the page footer when printing the report.
 +
|-
 +
|valign="top"|Show Date/Time
 +
|valign="top"|True
 +
|valign="top"|Whether the date and time should be shown in the page footer when printing the report.
 
|-
 
|-
 
|valign="top"|Page Top Margin
 
|valign="top"|Page Top Margin
Line 97: Line 185:
 
|valign="top"|The height in pixels of the page bottom margin when printing the report.
 
|valign="top"|The height in pixels of the page bottom margin when printing the report.
 
|-
 
|-
|valign="top"|Show Date/Time
+
|valign="top"|Print scaling factor (%)
|valign="top"|True
+
|valign="top"|80
|valign="top"|Whether the date and time should be shown in the page footer when printing the report.
+
|valign="top"|The percentage to scale the report by when printing in the web.
 +
|-
 +
|valign="top"|Record Offset
 +
|valign="top"|0
 +
|valign="top"|The starting record offset.
 +
|-
 +
|valign="top"|Max Records
 +
|valign="top"|0
 +
|valign="top"|The maximum number of records to be processed.  The default is 0, which signifies that all records should be processed.
 +
|-
 +
|valign="top"|Max Groups
 +
|valign="top"|0
 +
|valign="top"|The maximum number of groups to be processed.  The default is 0, which signifies that all groups should be processed.
 +
|-
 +
|valign="top"|Max Pages
 +
|valign="top"|0
 +
|valign="top"|The maximum number of pages to be processed when the report is previewed.  The default is 0, which signifies that all pages should be processed.
 
|-
 
|-
 
|}
 
|}
Line 107: Line 211:
 
   
 
   
 
{| class="wikitable" width="100%"
 
{| class="wikitable" width="100%"
!width="15%"|Setting
+
!width="20%"|Setting
!width="25%"|Default
+
!width="20%"|Default
!width="65%"|Description
+
!width="60%"|Description
 
|-
 
|-
 
|valign="top"|Group By
 
|valign="top"|Group By
Line 126: Line 230:
 
|valign="top"|
 
|valign="top"|
 
|valign="top"|A '''|''' separated list of columns that the user can select from to set the sort order for the records in the report.
 
|valign="top"|A '''|''' separated list of columns that the user can select from to set the sort order for the records in the report.
 +
|-
 +
|valign="top"|Group Summary rowspan
 +
|valign="top"|10
 +
|valign="top"|The number of rows assigned to display the results of the [[#Delegates|Group Summary delegate]] if one is specified.
 
|-
 
|-
 
|}
 
|}
Line 147: Line 255:
  
 
{| class="wikitable" width="100%"
 
{| class="wikitable" width="100%"
!width="15%"|Setting
+
!width="20%"|Setting
!width="25%"|Default
+
!width="20%"|Default
!width="65%"|Description
+
!width="60%"|Description
 
|-
 
|-
 
|valign="top"|Main Heading
 
|valign="top"|Main Heading
Line 161: Line 269:
 
|valign="top"|Header Height
 
|valign="top"|Header Height
 
|valign="top"|
 
|valign="top"|
|valign="top"|The height of the header in pixels.
+
|valign="top"|The height of the header (for image display) in pixels.
 
|-
 
|-
 
|valign="top"|Header Image
 
|valign="top"|Header Image
 
|valign="top"|
 
|valign="top"|
 
|valign="top"|The name of an image file to be displayed as the background to the header.<br>Clicking on the [...] displays a file chooser.
 
|valign="top"|The name of an image file to be displayed as the background to the header.<br>Clicking on the [...] displays a file chooser.
 +
|-
 +
|valign="top"|Left Header Image
 +
|valign="top"|
 +
|valign="top"|The name of an image file to be displayed on the left-hand side of the header.<br>Clicking on the [...] displays a file chooser.
 +
|-
 +
|valign="top"|Right Header Image
 +
|valign="top"|
 +
|valign="top"|The name of an image file to be displayed on the right-hand side of the header.<br>Clicking on the [...] displays a file chooser.
 +
|-
 +
|valign="top"|Header Background Color
 +
|valign="top"|#333333
 +
|valign="top"|The background color of the Main Heading.<br>Clicking on the [...] displays a color chooser.
 +
|-
 +
|valign="top"|Header Foreground Color
 +
|valign="top"|White
 +
|valign="top"|The foreground color of the Main Heading.<br>Clicking on the [...] displays a color chooser.
 +
|-
 +
|valign="top"|Sub-Header Background Color
 +
|valign="top"|darkgray
 +
|valign="top"|The background color of the Sub-Heading.<br>Clicking on the [...] displays a color chooser.
 +
|-
 +
|valign="top"|Sub-Header Foreground Color
 +
|valign="top"|White
 +
|valign="top"|The foreground color of the Sub-Heading.<br>Clicking on the [...] displays a color chooser.
 
|-
 
|-
 
|valign="top"|Custom Header
 
|valign="top"|Custom Header
Line 176: Line 308:
 
Clicking on the [...] displays a popup custom code editor and automatically generates a filename.
 
Clicking on the [...] displays a popup custom code editor and automatically generates a filename.
 
|-
 
|-
|valign="top"|Header Background Color
+
|valign="top"|Print Header On All Pages
|valign="top"|White
+
|valign="top"|False
|valign="top"|The background color of the header (if no Header Image).<br>Clicking on the [...] displays a color chooser.
+
|valign="top"|Whether the header should be printed on all pages (True &#124; False).
|-
+
|valign="top"|Left Header Image
+
|valign="top"|
+
|valign="top"|The name of an image file to be displayed on the left-hand side of the header.<br>Clicking on the [...] displays a file chooser.
+
|-
+
|valign="top"|Right Header Image
+
|valign="top"|
+
|valign="top"|The name of an image file to be displayed on the right-hand side of the header.<br>Clicking on the [...] displays a file chooser.
+
 
|-
 
|-
 
|}
 
|}
Line 208: Line 332:
  
 
{| class="wikitable" width="100%"
 
{| class="wikitable" width="100%"
!width="15%"|Setting
+
!width="20%"|Setting
!width="25%"|Default
+
!width="20%"|Default
!width="65%"|Description
+
!width="60%"|Description
 
|-
 
|-
 
|valign="top"|Column
 
|valign="top"|Column
Line 234: Line 358:
 
|valign="top"|Data Mapping
 
|valign="top"|Data Mapping
 
|valign="top"|
 
|valign="top"|
|valign="top"|The [[Data Mapping|data mapping]] for the column.
+
|valign="top"|The [[Data Mapping|data mapping]] for the column.  Note that double quotes should not be used in the definition; single quotes can be used.
 
|-
 
|-
 
|valign="top"|Dynamic BackColor
 
|valign="top"|Dynamic BackColor
 
|valign="top"|
 
|valign="top"|
|valign="top"|MIME base64 encoded string containing a color value.
+
|valign="top"|An expression returning a color value to be used as the background color, e.g.<br>
 +
<pre>'#ff0000'</pre>
 +
<pre>'red'</pre>
 +
<pre>iif({} > 15,'red','blue')</pre>
 
|-
 
|-
 
|valign="top"|Dynamic ForeColor
 
|valign="top"|Dynamic ForeColor
 
|valign="top"|
 
|valign="top"|
|valign="top"|MIME base64 encoded string containing a color value.
+
|valign="top"|An expression returning a color value to be used as the foreground color, e.g.<br>
 +
<pre>'#0000ff'</pre>
 +
<pre>'blue'</pre>
 +
<pre>iif(startswith('{}','F'),'red','blue')</pre>
 +
|-
 +
|valign="top"|Sub-total
 +
|valign="top"|False
 +
|valign="top"|Whether the column's values should be sub-totalled and displayed in the group summary.
 +
|-
 +
|valign="top"|Min
 +
|valign="top"|False
 +
|valign="top"|Whether the column's minimum value should be calculated and displayed in the group summary.
 +
|-
 +
|valign="top"|Max
 +
|valign="top"|False
 +
|valign="top"|Whether the column's maximum value should be calculated and displayed in the group summary.
 +
|-
 +
|valign="top"|Avg
 +
|valign="top"|False
 +
|valign="top"|Whether the column's average value should be calculated and displayed in the group summary.
 
|-
 
|-
 
|valign="top"|Hyperlink
 
|valign="top"|Hyperlink
Line 248: Line 394:
 
|valign="top"|Whether the column contents should be displayed as a hyperlink.
 
|valign="top"|Whether the column contents should be displayed as a hyperlink.
 
|-
 
|-
|valign="top"|Sub-total
+
|valign="top"|Column Width
|valign="top"|False
+
|valign="top"|0
|valign="top"|Whether the column should be sub-totalled.
+
|valign="top"|Column width in pixels.  The default is 0, which signifies that the column should be autosized.
 +
|-
 +
|}
 +
 
 +
==Delegates==
 +
The '''Delegates''' settings define the event delegates for the report.
 +
 
 +
Clicking on the [...] displays a popup custom code editor and automatically generates a filename.
 +
 
 +
{| class="wikitable" width="100%"
 +
!width="20%"|Setting
 +
!width="80%"|Description
 +
|-
 +
|valign="top"|Before Generate
 +
|valign="top"|Called before report is generated.  This is a Lianja/VFP script (server-side for web/mobile Apps).
 +
|-
 +
|valign="top"|After Generate
 +
|valign="top"|Called after report is generated.  This is a Lianja/VFP script (server-side for web/mobile Apps).
 +
|-
 +
|valign="top"|Before Group
 +
|valign="top"|Called before a group is processed.  This is a Lianja/VFP script (server-side for web/mobile Apps).
 +
|-
 +
|valign="top"|After Generate
 +
|valign="top"|Called after a group is processed.  This is a Lianja/VFP script (server-side for web/mobile Apps).
 +
|-
 +
|valign="top"|Before Open
 +
|valign="top"|Called before table is opened or sql is executed.  This is a Lianja/VFP script (server-side for web/mobile Apps).
 +
|-
 +
|valign="top"|After Open
 +
|valign="top"|Called after table is opened or sql is executed.  This is a Lianja/VFP script (server-side for web/mobile Apps).
 +
|-
 +
|valign="top"|Chart Clicked
 +
|valign="top"|Called when a chart is clicked.  This is a JavaScript script.<br>It is passed four arguments:
 +
<ul>
 +
<li>id - the chart ID</li>
 +
<li>tag - the data tag e.g. the groupby value</li>
 +
<li>name - the label of the element clicked</li>
 +
<li>value - the value of the element clicked</li>
 +
</ul>
 +
|-
 +
|valign="top"|Cell Renderer
 +
|valign="top"|Called to render cells in the report.  This is a Lianja/VFP script (server-side for web/mobile Apps).<br>It should output HTML using the [[?]] or [[ECHO|echo]] commands.<br>It is passed two arguments:
 +
<ul>
 +
<li>fieldname - the name of the field</li>
 +
<li>fieldvalue - the value of the field</li>
 +
</ul>
 +
|-
 +
|valign="top"|Row Clicked
 +
|valign="top"|Called when a row is clicked.  This is a JavaScript script.<br>It is passed one argument:
 +
<ul>
 +
<li>fieldvalues - a '&#124;'  separated list of fields in the row</li>
 +
</ul>
 +
|-
 +
|valign="top"|Row Double Clicked
 +
|valign="top"|Called when a row is double-clicked.  This is a JavaScript script.<br>It is passed one argument:
 +
<ul>
 +
<li>fieldvalues - a '&#124;'  separated list of fields in the row</li>
 +
</ul>
 +
|-
 +
|valign="top"|Hyperlink
 +
|valign="top"|Called when a hyperlink is clicked.  This is a JavaScript script.<br>It is passed two arguments:
 +
<ul>
 +
<li>fieldname - the name of the field clicked</li>
 +
<li>fieldvalue - the value of the field clicked</li>
 +
</ul>
 +
|-
 +
|valign="top"|Data Changed
 +
|valign="top"|Called after each data row changes during processing.  This is a Lianja/VFP script (server-side for web/mobile Apps).
 +
|-
 +
|valign="top"|Group Summary
 +
|valign="top"|Called after the group summary panel is rendered.  This is a Lianja/VFP script (server-side for web/mobile Apps).<br>It should output HTML using the [[?]] or [[ECHO|echo]] commands.<br>It is passed one argument:
 +
<ul>
 +
<li>p_groupvalue - the current group value</li>
 +
</ul>
 +
When a 'Group By' column and a 'Group Summary' delegate are specified, an index is automatically built on the 'Group By' column and this is the master index order.  This allows the use of key based [[:Category:Data Analysis Functions|data analysis functions]] in the 'Group Summary' delegate code.
 +
|-
 +
|}
 +
 
 +
Note that when files are created via the [...] buttons, they are added to the report's directory.  See [[#Header|Header]] for further details on the report's directory location.
 +
 
 +
==Sub Reports==
 +
The '''Sub Reports''' settings determine the display of up to 5 Sub Reports.
 +
 
 +
{| class="wikitable" width="100%"
 +
!width="20%"|Setting
 +
!width="10%"|Default
 +
!width="70%"|Description
 +
|-
 +
|valign="top"|Sub Report # (1-5)
 +
|valign="top"|
 +
|valign="top"|Select an existing report from the pulldown.
 +
|-
 +
|valign="top"|Custom Renderer
 +
|valign="top"|
 +
|valign="top"|The name of a Lianja/VFP program or procedure to output HTML5 for the display of a custom generated sub-report. e.g.
 +
<pre>? "<div style='background:lightgray;height:1px;width:100%;'></div>"
 +
? "<center>--- Custom Rendered html --</center>"</pre>
 +
Clicking on the [...] displays a popup custom code editor and automatically generates a filename.
 +
<br>When writing your own custom sub-reports you can access _plineno and _pageno if you need to check that there's enough space for you. If not you can execute the eject command which will print the footer (if one exists) on the current page, eject a page and print the header (if one is specified).
 +
<br>'''Hint:''' you can embed charts and other interesting content  by generating an iframe with the src attribute containing a google charts url.
 +
|-
 +
|valign="top"|Filter
 +
|valign="top"|
 +
|valign="top"|The filter condition to be applied to the records,  e.g. when the ''orders'' report is run as a sub report of the ''customers'' report, only records with a ''customerid'' matching the current value of the ''customer'' column in the ''customers'' report are included: 
 +
<pre>customerid='{customer}'</pre>
 +
|-
 +
|valign="top"|Run
 +
|valign="top"|
 +
|valign="top"|Select when the sub report should be run based on events in the main report:<br>
 +
* After each row
 +
* Before each group
 +
* After each group
 +
* Before report
 +
* After report
 +
|-
 +
|valign="top"|Indent
 +
|valign="top"|0
 +
|valign="top"|The indent in pixels for the display of the sub report when the report is previewed or printed.
 
|-
 
|-
 
|}
 
|}
Line 258: Line 521:
  
 
{| class="wikitable" width="100%"
 
{| class="wikitable" width="100%"
!width="15%"|Setting
+
!width="20%"|Setting
!width="25%"|Default
+
!width="10%"|Default
!width="65%"|Description
+
!width="70%"|Description
 
|-
 
|-
 
|valign="top"|Footer Height
 
|valign="top"|Footer Height
Line 279: Line 542:
 
|valign="top"|Footer Background Color
 
|valign="top"|Footer Background Color
 
|valign="top"|White
 
|valign="top"|White
|valign="top"|The background color of the footer (if no Footer Image).<br>Clicking on the [...] displays a color chooser.
+
|valign="top"|The background color of the footer.<br>Clicking on the [...] displays a color chooser.
 +
|-
 +
|valign="top"|Footer Print Offset
 +
|valign="top"|0
 +
|valign="top"|The height of the page footer margin offset  in pixels (for scaling) when printing.
 
|-
 
|-
 
|}
 
|}

Revision as of 05:58, 12 December 2019

Overview

Reports Workspace


Report Explorer

The Report Explorer panel displays the available reports grouped by category. Click on a report description/name to open it in the design panel.

Buttons

Reports Workspace Buttons


Button Description
New Create a new report.
Save Save the current report.
Copy Copy the current report to a new report.
Preview Display the current report in the print preview viewer with the option to print.
Close Close the current report.
Rename Rename the current report.
Delete Delete the current report.
Undo Undo changes made to the current report.
Refresh Save and refresh the current report.
Export Export the current report to one of the following formats:
  • HTML
  • PDF
  • CSV
  • XML
  • Excel
  • Word
Deploy Deploys the current report on the local machine. Note: if any sub reports are specified, they should be deployed individually.
Apply Apply changes to the current report.

Run/Design

Reports Workspace


Click the Run button to switch to runtime view and the Design button to return to the development view.

Report Builder


Report

Setting Description
Name Name of the report. This is set when the report is created and the setting is readonly. To change the name of the report, use the Rename button.
Category An optional category for the report. The categories are used to group reports in the Reports Explorer. If no category is specified, the report is listed under General.
Description An optional description for the report. If specified, the Description is used in the Reports Explorer, otherwise the Name is used.
Roles The roles controlling who can run the report. Roles are created in the Users workspace. Roles are specified in a comma-separated list. The -rolename syntax can be used to exclude users who have that role; * allows all roles and is the default. If a user's role excludes them from running the report, it does not appear in the Reports Explorer.
Creator Name of the user who created the report. This is set when the report is created and the setting is readonly.
Date Modified Last modification date and time for the report. This is updated automatically and the setting is readonly.

Data Source

The Data Source settings allow the ODBC or native Lianja data source to be configured.

Setting Required Description
Connection No The ODBC DSN for the data source. The pulldown lists available 32-bit ODBC DSNs.
Database Yes, unless Custom SQL is specified and references the database name, e.g. select * from southwind!shippers. The database for the data source. The pulldown lists available Lianja databases.
Table Yes, unless Custom SQL is specified The table for the data source. The pulldown lists tables from the specified Database.
Fields Yes, unless Custom SQL is specified The fields to be included from the Table. Click the [...] button to display the 'Choose fields' dialog. The default is * indicating all fields from the Table.
Filter No The filter condition to be applied to the records from the Table. Click the [...] button to display the 'Custom Query Builder'.
Needs Filter No Whether a filter is required before the report is displayed. Clicking the 'Search' button displays the Query Builder allowing the end user to build the required query.
Memos No Whether to include variable length text memo fields. If true, the text of the memo field contents is displayed. If false (default), 'MEMO' is displayed when the memo field has contents and 'Memo' when it is empty.
Images No Whether to include image object fields. If true, the image is displayed. If false (default), the field name is displayed.
Custom SQL No, unless Table is not specified The SQL select query for the data source.

Once the Database and Table or Custom SQL have been specified, additional report configuration tabs are shown and the live report is displayed.

Page Layout

The Page Layout settings determine the layout when the report is printed.

Setting Default Description
Paper Size Letter Select the paper size to be used when printing the report. If Custom is selected, the dimensions can be specified in the Custom Paper Size.
Custom Paper Size The paper dimensions if Custom is selected as the Paper Size.
Rows per page 40 The number of rows to display per page when printing the report.
Row Height 0 The row height in pixels when printing the report. The default is 0, which signifies that the rows should be autosized.
Show Grid Lines True Whether grid lines should be shown when printing the report.
Show Page Numbers True Whether page numbers (nPage of nPages) should be shown in the page footer when printing the report.
Show Date/Time True Whether the date and time should be shown in the page footer when printing the report.
Page Top Margin 50 The height in pixels of the page top margin when printing the report.
Page Bottom Margin 0 The height in pixels of the page bottom margin when printing the report.
Print scaling factor (%) 80 The percentage to scale the report by when printing in the web.
Record Offset 0 The starting record offset.
Max Records 0 The maximum number of records to be processed. The default is 0, which signifies that all records should be processed.
Max Groups 0 The maximum number of groups to be processed. The default is 0, which signifies that all groups should be processed.
Max Pages 0 The maximum number of pages to be processed when the report is previewed. The default is 0, which signifies that all pages should be processed.

Grouping

The Grouping settings determine the optional grouping and sort order columns for the report. These include options to allow the end user to select from a specified list of columns.

Setting Default Description
Group By The grouping column for the records in the report. A Sub-totals: footer will be displayed for each group. Individual columns can be flagged to be sub-totalled in the Detail report configuration tab.
Group By List A | separated list of columns that the user can select from to set the grouping for the records in the report.
Sort By The sort order column for the records in the report.
Sort By List A | separated list of columns that the user can select from to set the sort order for the records in the report.
Group Summary rowspan 10 The number of rows assigned to display the results of the Group Summary delegate if one is specified.

Here the employees report has been altered to specify the Group By List as:

reportsto|lastname

and the Sort By List as:

lastname|firstname

The user can select from the lists to change the grouping and sort order columns active in the report.

Report Builder Grouping


Header

The Header settings allow the header and main and sub headings to be configured.

Report Header


Setting Default Description
Main Heading {reportname} report for user {username} The main heading. For the default main heading, the {} macros are expanded to display the reportname and current username.
Sub-Heading A sub-heading.
Header Height The height of the header (for image display) in pixels.
Header Image The name of an image file to be displayed as the background to the header.
Clicking on the [...] displays a file chooser.
Left Header Image The name of an image file to be displayed on the left-hand side of the header.
Clicking on the [...] displays a file chooser.
Right Header Image The name of an image file to be displayed on the right-hand side of the header.
Clicking on the [...] displays a file chooser.
Header Background Color #333333 The background color of the Main Heading.
Clicking on the [...] displays a color chooser.
Header Foreground Color White The foreground color of the Main Heading.
Clicking on the [...] displays a color chooser.
Sub-Header Background Color darkgray The background color of the Sub-Heading.
Clicking on the [...] displays a color chooser.
Sub-Header Foreground Color White The foreground color of the Sub-Heading.
Clicking on the [...] displays a color chooser.
Custom Header The name of a Lianja/VFP program or procedure to output HTML5 for the display of a custom header. e.g.
? "<div style='background:lightgray;height:1px;width:100%;'></div>"
? "<br>"
? "<center>-- Custom Header --</center>"
? "<br>"

Clicking on the [...] displays a popup custom code editor and automatically generates a filename.

Print Header On All Pages False Whether the header should be printed on all pages (True | False).

Note that when files are selected via the [...] buttons, they are added to the report's directory. For example, if the report is 'customers', its directory is customers in the reports sub-directory of the Lianja library directory. If file names are entered manually, the files should be located in the report's directory.

Windows

C:\lianja\library\reports\<reportname>

Linux

/opt/lianja/library/reports/<reportname>

macOS

/usr/local/lianja/library/reports/<reportname>

Detail

The Detail settings allow the display of individual columns to be configured.

Setting Default Description
Column Select the column to be configured from the pulldown.
Column Expression The expression to be displayed in the column.
Heading The heading for the column.
Alignment The alignment for the column (Left | Center | Right).
Display Mask The display mask for the column.
Data Mapping The data mapping for the column. Note that double quotes should not be used in the definition; single quotes can be used.
Dynamic BackColor An expression returning a color value to be used as the background color, e.g.
'#ff0000'
'red'
iif({} > 15,'red','blue')
Dynamic ForeColor An expression returning a color value to be used as the foreground color, e.g.
'#0000ff'
'blue'
iif(startswith('{}','F'),'red','blue')
Sub-total False Whether the column's values should be sub-totalled and displayed in the group summary.
Min False Whether the column's minimum value should be calculated and displayed in the group summary.
Max False Whether the column's maximum value should be calculated and displayed in the group summary.
Avg False Whether the column's average value should be calculated and displayed in the group summary.
Hyperlink False Whether the column contents should be displayed as a hyperlink.
Column Width 0 Column width in pixels. The default is 0, which signifies that the column should be autosized.

Delegates

The Delegates settings define the event delegates for the report.

Clicking on the [...] displays a popup custom code editor and automatically generates a filename.

Setting Description
Before Generate Called before report is generated. This is a Lianja/VFP script (server-side for web/mobile Apps).
After Generate Called after report is generated. This is a Lianja/VFP script (server-side for web/mobile Apps).
Before Group Called before a group is processed. This is a Lianja/VFP script (server-side for web/mobile Apps).
After Generate Called after a group is processed. This is a Lianja/VFP script (server-side for web/mobile Apps).
Before Open Called before table is opened or sql is executed. This is a Lianja/VFP script (server-side for web/mobile Apps).
After Open Called after table is opened or sql is executed. This is a Lianja/VFP script (server-side for web/mobile Apps).
Chart Clicked Called when a chart is clicked. This is a JavaScript script.
It is passed four arguments:
  • id - the chart ID
  • tag - the data tag e.g. the groupby value
  • name - the label of the element clicked
  • value - the value of the element clicked
Cell Renderer Called to render cells in the report. This is a Lianja/VFP script (server-side for web/mobile Apps).
It should output HTML using the ? or echo commands.
It is passed two arguments:
  • fieldname - the name of the field
  • fieldvalue - the value of the field
Row Clicked Called when a row is clicked. This is a JavaScript script.
It is passed one argument:
  • fieldvalues - a '|' separated list of fields in the row
Row Double Clicked Called when a row is double-clicked. This is a JavaScript script.
It is passed one argument:
  • fieldvalues - a '|' separated list of fields in the row
Hyperlink Called when a hyperlink is clicked. This is a JavaScript script.
It is passed two arguments:
  • fieldname - the name of the field clicked
  • fieldvalue - the value of the field clicked
Data Changed Called after each data row changes during processing. This is a Lianja/VFP script (server-side for web/mobile Apps).
Group Summary Called after the group summary panel is rendered. This is a Lianja/VFP script (server-side for web/mobile Apps).
It should output HTML using the ? or echo commands.
It is passed one argument:
  • p_groupvalue - the current group value

When a 'Group By' column and a 'Group Summary' delegate are specified, an index is automatically built on the 'Group By' column and this is the master index order. This allows the use of key based data analysis functions in the 'Group Summary' delegate code.

Note that when files are created via the [...] buttons, they are added to the report's directory. See Header for further details on the report's directory location.

Sub Reports

The Sub Reports settings determine the display of up to 5 Sub Reports.

Setting Default Description
Sub Report # (1-5) Select an existing report from the pulldown.
Custom Renderer The name of a Lianja/VFP program or procedure to output HTML5 for the display of a custom generated sub-report. e.g.
? "<div style='background:lightgray;height:1px;width:100%;'></div>"
? "<center>--- Custom Rendered html --</center>"

Clicking on the [...] displays a popup custom code editor and automatically generates a filename.
When writing your own custom sub-reports you can access _plineno and _pageno if you need to check that there's enough space for you. If not you can execute the eject command which will print the footer (if one exists) on the current page, eject a page and print the header (if one is specified).
Hint: you can embed charts and other interesting content by generating an iframe with the src attribute containing a google charts url.

Filter The filter condition to be applied to the records, e.g. when the orders report is run as a sub report of the customers report, only records with a customerid matching the current value of the customer column in the customers report are included:
customerid='{customer}'
Run Select when the sub report should be run based on events in the main report:
  • After each row
  • Before each group
  • After each group
  • Before report
  • After report
Indent 0 The indent in pixels for the display of the sub report when the report is previewed or printed.

Footer

The Footer settings determine the display of the page footer when the report is printed/previewed.

Setting Default Description
Footer Height 25 The page footer height in pixels.
Footer Image The name of an image file to be displayed as the background to the footer.
Clicking on the [...] displays a file chooser.
Custom Footer The name of a Lianja/VFP program or procedure to output HTML5 for the display of a custom footer. e.g.
? "<div style='background:lightgray;height:1px;width:100%;'></div>"
? "<center>--- Custom Footer --</center>"

Clicking on the [...] displays a popup custom code editor and automatically generates a filename.

Footer Background Color White The background color of the footer.
Clicking on the [...] displays a color chooser.
Footer Print Offset 0 The height of the page footer margin offset in pixels (for scaling) when printing.

Note that when files are selected via the [...] buttons, they are added to the report's directory. See Header for further details on the report's directory location.