SSRS-Report per Code aufrufen

Eine häufige Anforderung ist es, daß zu einem bestimmten Zeitpunkt ein Bericht/Report vollautomatisch ausgedruckt werden soll.

Dabei gilt es meist, dem auszudruckenden Bericht bestimmte Parameter mitgeben zu können und je nachdem wie der Bericht entwicklungsseitig aufgebaut ist, kann dies mehr oder weniger aufwendig sein.

Der folgende Code ruft einen relativ einfachen Dataprovider-basierten Bericht auf:

TutorialMyReportDataContract dataContract;
SrsReportDataContract srsReportDataContract;

controller = new SrsReportRunController();
controller.parmReportName(ssrsReportStr(TutorialMyReport, MyDesign)); 
controller.parmShowDialog(false);    
controller.parmLoadFromSysLastValue(false);  

srsReportDataContract =
controller.parmReportContract();

dataContract = srsReportDataContract.parmRdpContract();

dataContract.parmSalesId("S1000"); 

Das nächste Beispiel ruft den Standardbericht Buchungen (Debitorenkonten > Berichte > Buchungen > Debitor) auf. Die Besonderheit dieses Berichtes ist es, daß hier ein Query innerhalb des Dataproviders verwendet wird. Auf diesen zuzugreifen war die Herausforderung:

CustTransListContract dataContract;
SrsReportDataContract srsReportDataContract;
Map map;
MapEnumerator me;
SysOperationQueryDataContractInfo SysOperationQueryDataContractInfo;
QueryBuildRange queryBuildRange;
QueryBuildDataSource queryBuildDataSource;    
Object dataContractInfoObject;

controller = new SrsReportRunController();
controller.parmReportName(ssrsReportStr(CustTransList, Report)); 
controller.parmShowDialog(false);
controller.parmLoadFromSysLastValue(false);  

srsReportDataContract =
controller.parmReportContract();

dataContract = srsReportDataContract.parmRdpContract();

// Modify parameters
dataContract.parmOnlyOpen(true);  

// Modify query
map = controller.getDataContractInfoObjects();
me = map.getEnumerator();

while(me.moveNext())
{
    dataContractInfoObject = me.currentValue();
     
    if(dataContractInfoObject is SysOperationQueryDataContractInfo)
    {
        SysOperationQueryDataContractInfo = dataContractInfoObject; 

        // Add range
        queryBuildDataSource =
SysQuery::findOrCreateDataSource(SysOperationQueryDataContractInfo.parmQuery(), tableNum(CustTable));

        queryBuildRange = SysQuery::findOrCreateRange(queryBuildDataSource, fieldNum(CustTable, AccountNum));

        queryBuildRange.value("1001");            
    }
}
Dieser Beitrag bezieht sich auf die Version:
Dynamics AX 2012

Kommentar hinzufügen
 
 

 

 
 
 
Beiträge des aktuellen Monats
April 2024
MoDiMiDoFrSaSo
1234567
891011121314
15161718192021
22232425262728
2930 
 
© 2006-2024 Heinz Schweda | Impressum | Kontakt | English version | Mobile Version
Diese Webseite verwendet Cookies, um Benutzern einen besseren Service anzubieten. Wenn Sie weiterhin auf der Seite bleiben, stimmen Sie der Verwendung von Cookies zu.  Mehr dazu