static void RunSSRSReport(Args _args)
{
SrsReportRunController reportRunController;
Map queryContracts;
MapEnumerator mapEnum;
Query query;
QueryBuildRange range;
;
// Create the report run controller
reportRunController = new SrsReportRunController();
reportRunController.parmReportName('Vend.Report');
reportRunController.parmLoadFromSysLastValue(false);
// NB call to parmLoadFromSysLastValue must occur before any reference to
// parmReportContract, otherwise the previous values (query ranges etc)
// are defaulted in.
// Set printer settings (print to file, format, filename, etc).
reportRunController.parmReportContract().parmPrintSettings().printMediumType(SRSPrintMediumType::File);
reportRunController.parmReportContract().parmPrintSettings().overwriteFile(true);
reportRunController.parmReportContract().parmPrintSettings().fileFormat(SRSReportFileFormat::PDF);
reportRunController.parmReportContract().parmPrintSettings().fileName('c:\\test.pdf');
// Find/enumerate queries in the contract. The return from parmQueryContracts is
// a map of type <ParameterName,Query(class)>
queryContracts = reportRunController.parmReportContract().parmQueryContracts();
mapEnum = queryContracts.getEnumerator();
while(mapEnum.moveNext())
{
// Get the query and update the datasource as required
query = mapEnum.currentValue();
range = SysQuery::findOrCreateRange(query.dataSourceTable(tableNum(VendTable)),fieldNum(VendTable,AccountNum));
range.value('1*');
}
// Run the report
reportRunController.runReport();
}
Note that this displays a message to the inflog once the file has been written. This may not be desirable if the file generation is part of a background process - If you need more control of this, have a look at adding an additional flag (eg supressInfoLog) to the classSrsReportRunPrinter.
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.