Tips for writing a BDL report program.
- The Reporting
API functions fgl_report_loadCurrentSettings and fgl_report_CommitCurrentSettings are required and must be called in
sequence. (Calls to these functions bracket any calls to other functions that change
the default output options.) These functions must be called in the program prior to
executing the START REPORT command in the Report Driver. If your program does not
change the default output options, you can simply call the single function fgl_report_loadAndCommit instead.
- Always use ORDER EXTERNAL in the REPORT program block to tell the report that the
input records have already been sorted by the SELECT statement, and there is no need
for the program to resort the fields. This will improve performance.
- Restrict your use of control blocks in the REPORT program block to FIRST PAGE
HEADER, BEFORE GROUP OF, AFTER GROUP OF, ON EVERY ROW, or ON LAST ROW. See The Report Program
Block.
- Prefer the use of fields over expressions to hold report values. Since expressions
don't have names, it will be difficult to reference them in the Report Design
Document (they could only be referenced by index).
- Prefer calculating values in the REPORT program block over
calculating in the Report Design Document, to use the power of the DVM.
- Don't be stingy when outputting fields; this will enhance the ability to use the BDL
source for multiple report formats. Define a record, orderline for example,
that contains all the data fields retrieved from the database by the database
cursor; use that record definition in the OUTPUT to REPORT
statement:
OUTPUT TO REPORT <reportname> (orderline.*)
- Check if the user has aborted the report, as well as if any errors have occurred, by
calling fgl_report_getErrorStatus() after OUTPUT TO
REPORT or FINISH REPORT.