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
März 2019
MoDiMiDoFrSaSo
 123
45678910
11121314151617
18192021222324
25262728293031
 
© 2006-2019 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