Dynamics AX 2012 R2 从代码中调用SSRS Report
平时,我们制作SSRS Report的方法主要有两种:使用Query或RDP。如果需要为报表传递参数,就要在代码中为报表参数赋值,然后在代码中调用报表。下面我总结下这两种报表在代码中传参和调用的方式:
1、使用Query作为报表数据源
1.1、Dynamic Filters属性
在VS中,需要注意Report DataSource的Dynamic Filters属性。
1.1.1、如果Dynamic Filters属性为True的话,会在Report Parameter中生成一个叫做DS_DynamicParameter的参数。
并在Report Preview时,生成一个Select Button,用于配置Report Parameter。
1.1.2、如果Dynamic Filters属性为False的话,会将AOT Query Range中的参数,一个一个添加到Report Parameter中。比如我的AOT Query Range中有4个Parameter,那么在Report Parameter中就自动添加四个相应的参数:
并在Report Preview时,生成4个TextBox,用于输入Report Parameter。
1.2、如何在X++ 代码中调用这种类型的报表
Reinhard这里将前面的Dynamic Filters属性为False。然后在代码中这样写:
SrsReportRunController controller; controller=new SrsReportRunController(); controller.parmReportName(ssrsReportStr(YourSSRSReportName,YourReportDesignsName)); if(controller.parmReportContract().parmRdlContract()) { controller.parmReportContract().parmRdlContract().setValue('DS_PersonnelNumber','PersonnelNumber0101'); } controller.parmDialogCaption('DialogCaption'); controller.startOperation();
2、RDP Report
如果使用RDP报表,也将之前提到的Dynamic Filters属性设为False。然后在代码中这样写:
SrsReportRunController controller; YourReportDataContract contract; controller=new SrsReportRunController(); controller.parmReportName(ssrsReportStr(YourSSRSReportName, YourReportDesignsName)); contract=controller.parmReportContract().parmRdpContract() as YourReportDataContract; contract.YourParameter('YourParameterValue010101101'); controller.parmDialogCaption('DialogCaption'); controller.startOperation();
学习本是一个不断模仿、练习、创新的过程。对于自己,博文只是总结。在总结的过程发现问题,解决问题。对于他人,在此过程如果还能附带帮助他人,那就再好不过了。 感谢您的阅读。如果文章对您有用,那么请打赏我一杯咖啡,也可以轻轻点个推荐,以资鼓励。
![](http://files.cnblogs.com/files/msdynax/ReinhardHsuWeChat.gif)
微信打赏
![](http://files.cnblogs.com/files/msdynax/ReinhardHsuAlipay.gif)
支付宝打赏