Difference between revisions of "Lianja 5 Report Options"

From Lianjapedia
Jump to: navigation, search
(Created page with "''Under Construction'' ==See Also== Developing Quick Reports, Report Section Attributes ==Overview== {{ns:file}}:report_web.png|450px|thumb|left|link={{filepath:re...")
 
(Header image)
 
(18 intermediate revisions by the same user not shown)
Line 1: Line 1:
''Under Construction''
 
 
 
==See Also==
 
==See Also==
[[Developing Quick Reports]], [[Report Section Attributes]]
+
[[Developing Quick Reports]], [[Report Section Attributes]], [[Reports Workspace]]
  
 
==Overview==
 
==Overview==
[[{{ns:file}}:report_web.png|450px|thumb|left|link={{filepath:report_web.png}}|Report Section in Lianja Web Client]]
 
 
 
 
 
 
Report Sections are used to display tabular reports.
 
Report Sections are used to display tabular reports.
 
+
[[{{ns:file}}:l5_report_web.png|800px|left|link={{filepath:l5_report_web.png}}|Report Section in Lianja Web Client]]
 
<br clear=all>
 
<br clear=all>
  
 
==Lianja Web UI Demo==
 
==Lianja Web UI Demo==
[[{{ns:file}}:report1.png|450px|thumb|left|link={{filepath:report1.png}}|example_webapp2 App]]
+
The 'Lianja Web UI Demo' (example_webapp2) is included in the Lianja App Builder distribution.
 +
[[{{ns:file}}:l5_example_webapp2.png|border|left|link={{filepath:l5_example_webapp2.png}}|example_webapp2 App]]
 +
<br clear=all>
  
 +
It has four full page Report Sections.
 +
[[{{ns:file}}:l5_report2.png|800px|border|left|link={{filepath:l5_report2.png}}|example_webapp2 App]]
 +
<br clear=all>
  
 
+
==Database and Table==
 
+
The '''Details''' section at the top of the attributes for a Report Section holds the specification of the '''Database''' and '''Table''' to be used.
The 'Lianja Web UI Demo' (example_webapp2) is included in the Lianja App Builder distribution.  
+
[[{{ns:file}}:l5_report_options.png|800px|border|left|link={{filepath:l5_report_options.png}}|Database and Table]]
 
+
 
<br clear=all>
 
<br clear=all>
  
[[{{ns:file}}:report2.png|450px|thumb|left|link={{filepath:report2.png}}|example_webapp2 App]]
+
The '''Table''' attribute is optional and is used for reports based on a single table or [[:Category:Third Party Database Connectivity|Virtual Table]].  Virtual Tables can return data from a SQL Select query or stored procedure from local or remote tables. 
  
 +
The [[#SQL statement|SQL statement]] Report Option below allows multiple tables to be joined to display Crosstab queries.
  
 +
==Report options==
 +
The Report Section options are described here:
  
 +
===Report type===
 +
This has been deprecated in Lianja v5.0.
  
It has three full page Report Sections.
+
===Report===
 +
Select from a list of pre-built reports.  From v5.0.
  
 +
Reports can be built in the [[Report Builder]] and saved to the Library reports directory for use in multiple Apps.  The Lianja App Builder distribution comes with some pre-built demo reports.
 +
[[{{ns:file}}:l5_report_options1.png|800px|border|left|link={{filepath:l5_report_options1.png}}|Report Builder]]
 
<br clear=all>
 
<br clear=all>
  
==Report options==
+
===Connstr===
 +
The report data source connection string.  From v5.0.
  
[[{{ns:file}}:report_options.png|450px|thumb|left|link={{filepath:report_options.png}}|Report Section options]]
+
===SQL statement===
 
+
A SQL statement. This can join multiple tables together and optionally include GROUP BY, ORDER BY and aggregate functions to display Crosstab queries.  Use {} macros in the WHERE condition to relate parent->child sections.  From v5.0.
 
+
 
+
 
+
Double-click the Section header or click the cog icon to access the Section Attributes.
+
  
 +
The Report Section on the Orders Summary Page in the example_webapp2 App has an example using the '''SQL statement''' attribute to join two tables and return [[SQL Aggregate Functions|aggregate]] values.
 +
 +
[[{{ns:file}}:l5_report_options3.png|800px|border|left|link={{filepath:l5_report_options3.png}}|SQL statement]]
 
<br clear=all>
 
<br clear=all>
  
The Details section at the top of the attributes dialog holds the specification of the '''Database''' and '''Table'''.
+
Note that clicking on the [...] button opens an editor dialog.  The statement can be entered on multiple lines, but will be saved as a single line, so should not include line continuation semi-colons and should include additional spaces, e.g.
  
If the '''Database''' and '''Table''' are omitted, the ''southwind'' database and the ''example'' table are the default values.
+
<pre>select customerid as "Customer",
 
+
cnt(customerid) as "Orders",
Note that the report is based on a single tableHowever, this table can be a Virtual Table based on a SQL Select query to local or remote tablesSee [[:Category:Third Party Database Connectivity|here]] for information on Virtual Tables.
+
sum(order_details.unitprice*order_details.quantity) as "Total",
 
+
  min(order_details.unitprice*order_details.quantity) as "Min",
 
+
max(order_details.unitprice*order_details.quantity) as "Max"
The Report Section options are described here:
+
from orders inner join order_details
 
+
  on orders.orderid=order_details.orderid
===Report type===
+
  group by customerid</pre>
The '''Report type''' attribute specifies the report layout type. Currently, ''Tabular'' is supported.
+
  
 
===Heading===
 
===Heading===
 
The '''Heading''' attribute specifies text to use as the report heading.
 
The '''Heading''' attribute specifies text to use as the report heading.
 
+
[[{{ns:file}}:l5_report_options4.png|800px|border|left|link={{filepath:l5_report_options4.png}}|Heading]]
 +
<br clear=all>
 
e.g.
 
e.g.
  
<pre>Client Credit List (over limit)</pre>
+
<pre>ORDER LIST</pre>
 
+
The '''Heading''' attribute can be queried or changed programmatically using [[Working with the Lianja Object Model|Lianja.getElementByID("page.section").reportHeading]].
+
 
+
[[#Notes on Client Support|Notes on Client Support]]
+
  
 
===Filter===
 
===Filter===
Line 73: Line 74:
  
 
<pre>available < 0</pre>
 
<pre>available < 0</pre>
 
The '''Filter''' attribute can be queried or changed programmatically using [[Working with the Lianja Object Model|Lianja.getElementByID("page.section").reportFilter]].
 
 
[[#Notes on Client Support|Notes on Client Support]]
 
  
 
===Fields===
 
===Fields===
Line 88: Line 85:
  
 
<pre>*</pre>
 
<pre>*</pre>
 
The '''Fields''' attribute can be queried or changed programmatically using [[Working with the Lianja Object Model|Lianja.getElementByID("page.section").reportFields]].
 
 
[[#Notes on Client Support|Notes on Client Support]]
 
  
 
===Columns===
 
===Columns===
Line 100: Line 93:
 
<pre>2,4,3,5,6,7,8,9,10,11</pre>
 
<pre>2,4,3,5,6,7,8,9,10,11</pre>
  
The '''Columns''' attribute can be queried or changed programmatically using [[Working with the Lianja Object Model|Lianja.getElementByID("page.section").reportColumns]].
+
===Subtotals===
 +
The '''Subtotals''' attribute specifies the columns in the report to be sub-totalled. This should be a comma separated list of numeric column positions of numeric fields.
  
[[#Notes on Client Support|Notes on Client Support]]
+
e.g.
 +
 
 +
<pre>9,10,11</pre>
  
 
===Column headings===
 
===Column headings===
Line 117: Line 113:
 
<pre>Account,Fullname,Credit Limit</pre>
 
<pre>Account,Fullname,Credit Limit</pre>
  
The '''Column headings''' attribute can be queried or changed programmatically using [[Working with the Lianja Object Model|Lianja.getElementByID("page.section").reportColumnHeadings]] or [[Working with the Lianja Object Model|Lianja.getElementByID("page.section").reportHeadings]].
+
===Column alignments===
 +
A &#124; separated list of column alignments from the fields selected<br>e.g. left&#124;center&#124;right. From v5.0.
  
[[#Notes on Client Support|Notes on Client Support]]
+
===Column display masks===
 +
A &#124; separated list of column display masks from the fields selected<br>e.g. $&#124;99.999&#124;$.  From v5.0.
  
===Subtotals===
+
===Column data mapping===
The '''Subtotals''' attribute specifies the columns in the report to be sub-totalled.  This should be a comma separated list of numeric column positions of numeric fields.
+
A &#124; separated list of custom data mapping for columns when displaying data. From v5.0.
 
+
e.g.
+
 
+
<pre>9,10,11</pre>
+
  
The '''Subtotals''' attribute can be queried or changed programmatically using [[Working with the Lianja Object Model|Lianja.getElementByID("page.section").reportSubTotals]].
+
===Column dynamic background===
 +
A &#124; separated list of expressions that provides dynamic cell color formatting <br>e.g. &#124;&#124;iif({}>10000,"lightgreen","")&#124;&#124;iif({}<1000,"pink","").<br>Note the use of {}, which is substituted with the current cell value.<br>From v5.0.
  
[[#Notes on Client Support|Notes on Client Support]]
+
===Column dynamic foreground===
 +
A &#124; separated list of expressions that provides dynamic cell color formatting <br>e.g. &#124;&#124;iif({}>10000,"white","")&#124;&#124;.<br>Note the use of {}, which is substituted with the current cell value.<br>From v5.0.
  
 
===Group by===
 
===Group by===
Line 139: Line 135:
 
<pre>state</pre>
 
<pre>state</pre>
  
The '''Group by''' attribute can be queried or changed programmatically using [[Working with the Lianja Object Model|Lianja.getElementByID("page.section").reportGroupBy]].
+
===Group by list===
 +
A &#124; separated choicelist of fields/expressions that an end user can group by. From v5.0.
  
[[#Notes on Client Support|Notes on Client Support]]
+
===Sort by===
 +
The field name or expression that data will be sorted by for subtotalling.  From v5.0.
 +
 
 +
===Sort by list===
 +
A &#124; separated choicelist of fields/expressions that an end user can sort by.  From v5.0.
 +
 
 +
===Delegate argument===
 +
An expressionto be evaluated and passed as an argument to the click and dblclick delegates.  From v5.0.
  
 
===Hyperlinks===
 
===Hyperlinks===
 
The '''Hyperlinks''' attribute specifies the field or fields that will be rendered as hyperlinks for searching.  This should be a comma separated list of field names.
 
The '''Hyperlinks''' attribute specifies the field or fields that will be rendered as hyperlinks for searching.  This should be a comma separated list of field names.
 
The '''Hyperlinks''' attribute can be queried or changed programmatically using [[Working with the Lianja Object Model|Lianja.getElementByID("page.section").reportHyperlink]].
 
 
[[#Notes on Client Support|Notes on Client Support]]
 
  
 
===Show grid lines===
 
===Show grid lines===
 
The '''Show grid lines''' attribute specifies whether grid lines should be displayed for each row of the report (True &#124; False).  Grid lines are currently always shown.
 
The '''Show grid lines''' attribute specifies whether grid lines should be displayed for each row of the report (True &#124; False).  Grid lines are currently always shown.
  
The '''Show grid lines''' attribute can be queried or changed programmatically using [[Working with the Lianja Object Model|Lianja.getElementByID("page.section").reportGridLines]].
+
===Summary only===
 +
Display report summary lines only (True &#124; False).  From v5.0.
 +
 
 +
===Sortable===
 +
Whether report is sortable by clicking on column headers.  Shift+Click to sort by multiple columns (True &#124; False).  From v5.0.
 +
 
 +
===Editable===
 +
Whether report is editable by end user (True &#124; False).  This will be implemented in a future release.
 +
 
 +
===Enable custom SQL===
 +
Whether custom SQL is enabled as a data source (True &#124; False).  From v5.0.
 +
 
 +
===Include memos===
 +
Whether memo columns should be included in the report (True &#124; False). From v5.0.
 +
 
 +
===Include images===
 +
Whether image columns should be included in the report (True &#124; False). From v5.0.
 +
 
 +
===Image width===
 +
The width of the images in pixels.  From v5.0.
 +
 
 +
===Image height===
 +
The height of the images in pixels.  From v5.0.
 +
 
 +
===Selectable===
 +
Whether report is selectable by end user and operates as a report viewer (True &#124; False). From v5.0.
  
[[#Notes on Client Support|Notes on Client Support]]
+
===Needs filter===
 +
Whether report requires a filter (use [[QueryBuilder|Query Builder]]) (True &#124; False).  From v5.0.
 +
 
 +
===Max records===
 +
The maximum number of records to be processed.  From v5.0.
 +
 
 +
===Paper size===
 +
The paper size that the print will be printed on<br>(Letter &#124; 8.5x13 &#124; A4 &#124; Custom).  From v5.0.
 +
 
 +
===Custom Paper size===
 +
The paper size that the print will be printed on e.g. 8.5x13.  From v5.0.
 +
 
 +
===Rows per page===
 +
The number of rows to print in each page.  From v5.0.
 +
 
 +
===Row height===
 +
The height of the rows in pixels.  From v5.0.
 +
 
 +
===Scale print size===
 +
The percentage by which to scale the report when printing in the web client.  From v5.0.
 +
 
 +
===Header height===
 +
The height of the page header in pixels when printing.  From v5.0.
 +
 
 +
===Header margin===
 +
The height of the page header margin in pixels when printing.  From v5.0.
 +
 
 +
===Header image===
 +
The background image to display in the header.  From v5.0.
 +
 
 +
===Left header image===
 +
The left image to display in the header.  From v5.0.
 +
 
 +
===Left header image width===
 +
The width in pixels of the left image to display in the header. From v5.0.
 +
 
 +
===Right header image===
 +
The right image to display in the header.  From v5.0.
 +
 
 +
===Right header image width===
 +
The width in pixels of the right image to display in the header. From v5.0.
 +
 
 +
===Footer height===
 +
The height of the page footer in pixels when printing.  From v5.0.
 +
 
 +
===Footer margin===
 +
The height of the page footer margin in pixels when printing.  From v5.0.
 +
 
 +
===Footer image===
 +
The background image to display in the footer.  From v5.0.
 +
 
 +
===Footer page numbers===
 +
Whether to show 'page n of count' in the footer (True &#124; False).  From v5.0.
 +
 
 +
===Footer date/time===
 +
Whether to show date/time in the footer (True &#124; False).  From v5.0.
 +
 
 +
===CSS Stylesheet===
 +
You can override the CSS style for the report and style it yourself by specifying your own stylesheet.  From v5.0.
 +
 
 +
===Delegate library===
 +
The name of a custom library containing the server-side report delegates.  This should be a Lianja/VFP procedure library.  From v5.0.
  
 
===Pagination===
 
===Pagination===
The '''Pagination''' attribute specifies whether the rows displayed should be paginated (True &#124; False).
+
This has been deprecated in Lianja v5.0.
 
+
Pagination is not currently implemented.
+
  
 
===Pagination size===
 
===Pagination size===
The '''Pagination size''' attribute specifies the number of rows to display per page.
+
This has been deprecated in Lianja v5.0.
 
+
Pagination is not currently implemented.
+
  
 
===Other options===
 
===Other options===
Line 181: Line 263:
 
   
 
   
 
private myparam = getParameter("myparam","")
 
private myparam = getParameter("myparam","")
 
The '''Other options''' attribute can be queried or changed programmatically using [[Working with the Lianja Object Model|Lianja.getElementByID("page.section").reportOtherOptions]].
 
 
[[#Notes on Client Support|Notes on Client Support]]
 
  
 
==Delegate Behavior==
 
==Delegate Behavior==
Line 200: Line 278:
 
Delegate script name (URL is passed as character string).
 
Delegate script name (URL is passed as character string).
  
==Notes on Client Support==
+
==Lianja.loadReport()==
 
+
The [[Lianja|Lianja.loadReport()]] method can be used in desktop, web and mobile Apps to load an existing report into a report section programmatically in Lianja/VFP or JavaScript.
{| class="wikitable" width="100%"
+
<pre>Lianja.loadReport("pageX.sectionX","myreport")</pre>
!width="20%"|Attribute
+
!width="80%"|Notes
+
|-
+
|valign="top"|Report type||-
+
|-
+
|valign="top"|Heading||Lianja.getElementByID("page.section").reportHeading is exposed on the Desktop client only (Lianja/VFP).
+
|-
+
|valign="top"|Filter||Lianja.getElementByID("page.section").reportFilter is exposed on the Desktop client only (Lianja/VFP).
+
|-
+
|valign="top"|Fields||Lianja.getElementByID("page.section").reportFields is exposed on the Desktop client only (Lianja/VFP).
+
|-
+
|valign="top"|Columns||Lianja.getElementByID("page.section").reportColumns is exposed on the Desktop client only (Lianja/VFP).
+
|-
+
|valign="top"|Column headings||Lianja.getElementByID("page.section").reportColumnHeadings and Lianja.getElementByID("page.section").reportHeadings are exposed on the Desktop client only (Lianja/VFP).
+
|-
+
|valign="top"|Subtotals||Lianja.getElementByID("page.section").reportSubTotals is exposed on the Desktop client only (Lianja/VFP).
+
|-
+
|valign="top"|Group by||Lianja.getElementByID("page.section").reportGroupBy is exposed on the Desktop client only (Lianja/VFP).
+
|-
+
|valign="top"|Hyperlinks||Lianja.getElementByID("page.section").reportHyperlink is exposed on the Desktop client only (Lianja/VFP).
+
|-
+
|valign="top"|Show grid lines||Grid lines are currently always shown.<br>Lianja.getElementByID("page.section").reportGridLines is exposed on the Desktop client only (Lianja/VFP).
+
|-
+
|valign="top"|Pagination||Pagination is not currently implemented.
+
|-
+
|valign="top"|Pagination size||Pagination is not currently implemented.
+
|-
+
|valign="top"|Other options||Lianja.getElementByID("page.section").reportOtherOptions is exposed on the Desktop client only (Lianja/VFP).
+
|-
+
|valign="top"|Delegate hyperlinks||
+
|-
+
|valign="top"|Delegate page||
+
|-
+
|valign="top"|Delegate section||
+
|-
+
|valign="top"|Delegate script||
+
|-
+
|}
+
  
 
==report.rsp==
 
==report.rsp==
Line 256: Line 296:
 
|}
 
|}
  
It can be customized if required, but proceed with caution, as the modifications will apply to all Report Sections and will be overwritten by product upgrades.
+
For additional customization, report.rsp could be used as a template for your own rsp and specified as the URL/source for a WebView Section.
 
+
Alternatively, report.rsp could be used as a template for your own rsp and specified as the URL/source for a WebView Section.
+
  
 
The Reports in the 'Lianja Demo' (lianjademo) App use ''quickreport.rsp'' in this way, e.g. the ''Report overdue payments'' report:
 
The Reports in the 'Lianja Demo' (lianjademo) App use ''quickreport.rsp'' in this way, e.g. the ''Report overdue payments'' report:

Latest revision as of 07:42, 4 November 2019

See Also

Developing Quick Reports, Report Section Attributes, Reports Workspace

Overview

Report Sections are used to display tabular reports.

Report Section in Lianja Web Client


Lianja Web UI Demo

The 'Lianja Web UI Demo' (example_webapp2) is included in the Lianja App Builder distribution.

example_webapp2 App


It has four full page Report Sections.

example_webapp2 App


Database and Table

The Details section at the top of the attributes for a Report Section holds the specification of the Database and Table to be used.

Database and Table


The Table attribute is optional and is used for reports based on a single table or Virtual Table. Virtual Tables can return data from a SQL Select query or stored procedure from local or remote tables.

The SQL statement Report Option below allows multiple tables to be joined to display Crosstab queries.

Report options

The Report Section options are described here:

Report type

This has been deprecated in Lianja v5.0.

Report

Select from a list of pre-built reports. From v5.0.

Reports can be built in the Report Builder and saved to the Library reports directory for use in multiple Apps. The Lianja App Builder distribution comes with some pre-built demo reports.

Report Builder


Connstr

The report data source connection string. From v5.0.

SQL statement

A SQL statement. This can join multiple tables together and optionally include GROUP BY, ORDER BY and aggregate functions to display Crosstab queries. Use {} macros in the WHERE condition to relate parent->child sections. From v5.0.

The Report Section on the Orders Summary Page in the example_webapp2 App has an example using the SQL statement attribute to join two tables and return aggregate values.

SQL statement


Note that clicking on the [...] button opens an editor dialog. The statement can be entered on multiple lines, but will be saved as a single line, so should not include line continuation semi-colons and should include additional spaces, e.g.

select customerid as "Customer",
 cnt(customerid) as "Orders",
 sum(order_details.unitprice*order_details.quantity) as "Total",
 min(order_details.unitprice*order_details.quantity) as "Min",
 max(order_details.unitprice*order_details.quantity) as "Max"
 from orders inner join order_details
 on orders.orderid=order_details.orderid
 group by customerid

Heading

The Heading attribute specifies text to use as the report heading.

Heading


e.g.

ORDER LIST

Filter

The Filter attribute specifies a logical expression used to restrict which records will be included in the report.

e.g. the Clients over credit limit report filters on the available field being less than zero:

available < 0

Fields

The Fields attribute specifies the fields to be included in the report. This should be a comma separated list of field names or expressions.

e.g.

account_no, upper(concat(title," ",first_name,last_name)),limit

or, to select all fields in the table as in the example_webapp2 reports:

*

Columns

The Columns attribute specifies the column positions for the selected fields in the report. This should be a comma separated list of numeric column positions. If Columns is left blank, all fields are displayed and in the same order as in the Fields attribute.

e.g. the Clients over credit limit report omits field 1 (example.account_no) from the display and swaps the order of fields 3 (example.first_name) and 4 (example.last_name).

2,4,3,5,6,7,8,9,10,11

Subtotals

The Subtotals attribute specifies the columns in the report to be sub-totalled. This should be a comma separated list of numeric column positions of numeric fields.

e.g.

9,10,11

Column headings

The Column headings attribute specifies the text to be used as the report column headings. This should be a comma separated list of text strings.

If Column headings is left blank, the descriptions from the fields in the table are used. Unless Fields is *, the Column headings should be entered to match the chosen field selection and order.

e.g. if Fields is:

account_no, upper(concat(title," ",first_name,last_name)),limit

then Column headings is:

Account,Fullname,Credit Limit

Column alignments

A | separated list of column alignments from the fields selected
e.g. left|center|right. From v5.0.

Column display masks

A | separated list of column display masks from the fields selected
e.g. $|99.999|$. From v5.0.

Column data mapping

A | separated list of custom data mapping for columns when displaying data. From v5.0.

Column dynamic background

A | separated list of expressions that provides dynamic cell color formatting
e.g. ||iif({}>10000,"lightgreen","")||iif({}<1000,"pink","").
Note the use of {}, which is substituted with the current cell value.
From v5.0.

Column dynamic foreground

A | separated list of expressions that provides dynamic cell color formatting
e.g. ||iif({}>10000,"white","")||.
Note the use of {}, which is substituted with the current cell value.
From v5.0.

Group by

The Group by attribute specifies the name of the field or the expression that the report data will be grouped by for sub-totalling.

e.g.

state

Group by list

A | separated choicelist of fields/expressions that an end user can group by. From v5.0.

Sort by

The field name or expression that data will be sorted by for subtotalling. From v5.0.

Sort by list

A | separated choicelist of fields/expressions that an end user can sort by. From v5.0.

Delegate argument

An expressionto be evaluated and passed as an argument to the click and dblclick delegates. From v5.0.

Hyperlinks

The Hyperlinks attribute specifies the field or fields that will be rendered as hyperlinks for searching. This should be a comma separated list of field names.

Show grid lines

The Show grid lines attribute specifies whether grid lines should be displayed for each row of the report (True | False). Grid lines are currently always shown.

Summary only

Display report summary lines only (True | False). From v5.0.

Sortable

Whether report is sortable by clicking on column headers. Shift+Click to sort by multiple columns (True | False). From v5.0.

Editable

Whether report is editable by end user (True | False). This will be implemented in a future release.

Enable custom SQL

Whether custom SQL is enabled as a data source (True | False). From v5.0.

Include memos

Whether memo columns should be included in the report (True | False). From v5.0.

Include images

Whether image columns should be included in the report (True | False). From v5.0.

Image width

The width of the images in pixels. From v5.0.

Image height

The height of the images in pixels. From v5.0.

Selectable

Whether report is selectable by end user and operates as a report viewer (True | False). From v5.0.

Needs filter

Whether report requires a filter (use Query Builder) (True | False). From v5.0.

Max records

The maximum number of records to be processed. From v5.0.

Paper size

The paper size that the print will be printed on
(Letter | 8.5x13 | A4 | Custom). From v5.0.

Custom Paper size

The paper size that the print will be printed on e.g. 8.5x13. From v5.0.

Rows per page

The number of rows to print in each page. From v5.0.

Row height

The height of the rows in pixels. From v5.0.

Scale print size

The percentage by which to scale the report when printing in the web client. From v5.0.

Header height

The height of the page header in pixels when printing. From v5.0.

Header margin

The height of the page header margin in pixels when printing. From v5.0.

Header image

The background image to display in the header. From v5.0.

Left header image

The left image to display in the header. From v5.0.

Left header image width

The width in pixels of the left image to display in the header. From v5.0.

Right header image

The right image to display in the header. From v5.0.

Right header image width

The width in pixels of the right image to display in the header. From v5.0.

Footer height

The height of the page footer in pixels when printing. From v5.0.

Footer margin

The height of the page footer margin in pixels when printing. From v5.0.

Footer image

The background image to display in the footer. From v5.0.

Footer page numbers

Whether to show 'page n of count' in the footer (True | False). From v5.0.

Footer date/time

Whether to show date/time in the footer (True | False). From v5.0.

CSS Stylesheet

You can override the CSS style for the report and style it yourself by specifying your own stylesheet. From v5.0.

Delegate library

The name of a custom library containing the server-side report delegates. This should be a Lianja/VFP procedure library. From v5.0.

Pagination

This has been deprecated in Lianja v5.0.

Pagination size

This has been deprecated in Lianja v5.0.

Other options

The Other report options attribute specifies additional option=value pairs to be passed to the report. These should be specified as an ampersand (&) separated list.

Note: to access these options within library:/report.rsp, add a getParameter() for each additional option.

If 'Other options' is set to:

username={username()}&myparam=some text

Library:/report.rsp should include:

private username = getParameter("username","")

private myparam = getParameter("myparam","")

Delegate Behavior

Delegate hyperlinks

Delegate hyperlinks in page to page and/or section (True | False).

Delegate page

Delegate page name to search (leave blank if current page).

Delegate section

Delegate section name (leave blank if default searchkey section on page).

Delegate script

Delegate script name (URL is passed as character string).

Lianja.loadReport()

The Lianja.loadReport() method can be used in desktop, web and mobile Apps to load an existing report into a report section programmatically in Lianja/VFP or JavaScript.

Lianja.loadReport("pageX.sectionX","myreport")

report.rsp

The rsp Lianja Server Page script (report.rsp) used by the Report Section WebViewWidget is located in the Lianja Library directory.

Client Location
App Builder \lianja\library\
App Center \lianja\cloudserver\tenants\public\library
Web/Mobile Clients \lianja\cloudserver\tenants\public\wwwroot\library

For additional customization, report.rsp could be used as a template for your own rsp and specified as the URL/source for a WebView Section.

The Reports in the 'Lianja Demo' (lianjademo) App use quickreport.rsp in this way, e.g. the Report overdue payments report:

URL:quickreport.rsp?database=southwind&table=example&fields=*&groupby=state
    &filter=available<0&heading=Customer Credit List (over limit)
    &columns=2,4,3,5,6,7,8,9,10,11,12&subtotals=9,10,11&gridlines=true

Reporting Alternatives

The Lianja ODBC Driver, in conjunction with the Lianja SQL Server, can be used with third party report writers such as Crystal Reports or Microsoft Report Builder.