BDL programs / Writing the Genero BDL report program |
Users can choose the format to see the report output.
In the GRW demo program Order Report, this form allows the user to make choices regarding the output:
Figure 1. Report demo Form
This code implements this functionality. The form definition file, Configuration.4fd, is included in the demo files for Reports, the GRW Demo.
The MAIN block of SimpleReport.4gl would change as follows:
MAIN DEFINE handler om.SaxDocumentHandler, -- report handler data_file String, -- XML file containing data report_ok boolean, -- return value from function r_filename STRING, -- filename of desired report r_output STRING, -- output format preview INTEGER -- preview indicator -- call the mandatory functions that configure the report using the -- choices made by the user -- in your new select_output function CALL select_output() RETURNING r_filename, r_output, preview IF fgl_report_loadCurrentSettings(r_filename) THEN -- if the file loaded OK CALL fgl_report_selectDevice(r_output) -- changing default CALL fgl_report_selectPreview(preview) -- changing default LET handler = fgl_report_commitCurrentSettings() -- commit changes ELSE EXIT PROGRAM END IF -- run the report by calling the report driver contained in -- your function runReportFromDatabase IF handler IS NOT NULL THEN CALL runReportFromDatabase() END IF END MAIN
FUNCTION select_output() DEFINE r_output STRING, -- output format option r_action STRING, -- used to set preview option r_filename STRING, -- filename of Report Design document (4rp filename) preview INTEGER -- preview option TRUE/FALSE, to display -- report in Report Viewer CLOSE WINDOW SCREEN OPTIONS INPUT WRAP -- display form allowing user to select the 4rp filename and output options OPEN WINDOW f_configuration WITH FORM "Configuration" LET INT_FLAG=FALSE LET preview = FALSE INPUT BY NAME r_filename,r_output,r_action ON ACTION CANCEL EXIT PROGRAM ON ACTION CLOSE EXIT PROGRAM END INPUT CLOSE WINDOW f_configuration CALL ui.interface.refresh() -- set preview variable to match output option r_action IF r_action IS NOT NULL THEN IF r_action == "preview" THEN LET preview = TRUE END IF END IF -- return report name (filename of Report Design Document) and output -- option variables to be used to configure the report engine RETURN r_filename||"4rp", r_output, preview END FUNCTION