Running multiple reports using Revelation Reporter (Functions/Subroutines/Programs,Reporting and Printing)
Created at 03 JAN 1997 01:03PM
The Revelation Reporter uses OpenEngine to access all non-ODBC data, including Linear Hash tables. This presents a problem if the Reporter is called multiple times from a Basic+ script, since OpenEngine will be executing the Basic+ script when Reporter needs to use OpenEngine to access data. To work around the blocking effect, the Basic+ script must complete, then the Reporter must execute the report, then the Basic+ script must be instructed to run the next report. Using the call-back feature in Utility("RUNWIN"), this sample code shows how to sequentially run multiple reports using the Revelation Reporter.
This check-out contains the following items:
Window (source and executable): REVRPT
Insert: REVRPT_EQUATES
Procedure (source, debug, and executable): REVRPT
Note: There are no events on the REVRPT window; instead, it uses QuickEvents to call the REVRPT procedure, passing an instruction identifier. See the description of the example, below.
Here is how the RevRpt example works:
1. Using a Basic+ script (e.g. an event script), you call the REVRPT procedure passing CMD_RUNRPT$ (defined in REVRPT_EQUATES) and an @fm-delimited list of reports to execute.
2. The REVRPT procedure (in Execute:), saves the list of reports to run in a labelled common (named global) variable.
3. The REVRPT procedure (in Execute:), starts the REVRPT window, which displays which report is currently running to the user.
4. The CREATE event on the REVRPT window uses a QuickEvent to call the REVRPT procedure passing CMD_CREATE$
5. The REVRPT procedure (in Create:), calls the REVRPT procedure (itself) passing CMD_NEXT$, in order to print the first report.
6. The REVRPT procedure (in ExecNext:), calls Utility("RUNWIN") to execute the reporter, specifying that when the Reporter is finished, REVRPT should be called back with CMD_NEXT$ (to run the next report).
The source for the REVRPT procedure can be viewed on-line by clicking on the following icon: {{kb0076_2.png}}