Dynamics AX 中的Reporting Service开发动态参数报表

各阶段中可能涉及一些地址无法访问,这些地址是内网的,很抱歉

第一阶段:


百度了一下,发现只能在MS SQL完整服务安装好后才能用自带的工具开发“商业智能项目”,如果要想在VS 2008或者2010中开发,需要安装SQL Server 2008 Business Intellegence Development Studio
开发参考博客:http://www.cnblogs.com/waxdoll/category/49402.html

第二阶段:

环境搭建好了,摸索着做了一个简单的报表,发布到了Reporting Service服务器上,地址是http://secsi006/ReportServer/
很简单的一个报表,不带任何参数,直接读取数据源中的数据,全部显示出来,报表上自带了分页,缩放,查找,导出和打印功能

接下来开始研究带参数,动态查询的报表

第三阶段:

参数化报表
研究了一会,添加了几个参数,但是怎么也找不到如何从URL中取值,只能做到打开来报表后在报表上面的form中填写参数,效果如下地址:http://secsi006/ReportServer/Pag ... rs%3aCommand=Render
我也尝试了直接在URL后面加参数列表,
http://secsi006/ReportServer?%2fReportProjectDemo%2fParameterizedReport&rs%3aCommand=Render?id=3&name=3
但是一直报错:
Reporting Services 错误


  • 此报表需要报表参数“id”的默认值或用户定义值。若要运行或订阅此报表,必须提供参数值。 (rsReportParameterValueNotSet) 获取联机帮助

SQL Server Reporting Services

再经过百度谷歌之后发现了以下帮助文档:
Passing a Report Parameter Within a URL
Setting Parameters on a Report URL

才发现是我加的参数里表格式错了,应该加上 &id=1&name=1,前面已经有参数了,所以要加&而不是?,完整的url是 http://secsi006/ReportServer/Pages/ReportViewer.aspx?%2fReportProjectDemo%2fParameterizedReport&rs%3aCommand=Render&id=1&name=1

注:1、传递的参数名字要跟报表中定义的相同
       2、传递空值要注明name:isnull=true

第四阶段:

以上开发是在MS SQL自带的商务智能开发工具下做的,做出来的报表不能导入AX中,泪奔。。。

然后继续搭建开发环境,在本机安装AX的报表工具,发现安装不了,一直报错,错误原因大概是因为AX服务器上报表工具没有安装,然后就只能死心了,转战虚拟机吧,幸好上周把电脑全盘格式化了,不然玩虚拟机空间都不够啊(80G->250G)

昨晚开机拷贝了一个20多G的2003虚拟机,今天又申请了3G->4G内存的作业,不然卡啊

在虚拟机下开始摸索,先安装AX的报表工具,安装很顺利,然后安装VS 2008,安装后发现没有Dynamics AX Reporting Project模板,于是重新安装AX的报表工具之后就有了

Design上新建AutoDesign,然后添加DataSource(可以是AX中的Queries和Business Logic),现在AX中新建一个表,然后添加几条测试数据,再新建一个Query,然后再回到VS中设置DataSource的属性,然后添加两个报表参数id(精确匹配)和name(模糊查询),好了,简单的带参数报表设计结束,接下来右击解决方案选择Save to AOD。
然后在AX中找到这个报表右击部署到SSRS中,AX中新建一个Menu Items的OutPut,设置类型为报表,参数填写id=1&name=ro,保存后打开,看到了id为1的记录,兴奋啊,成功一小半了,现在要搞定怎么动态传参数了,现在是写死的参数。

有一种按钮叫MenuItemButton,点击之后直接打开报表,查看了它所有的属性,没有找到设置参数的地方,转变思路,想到过用普通按钮,点击后进行报表实例化、设置参数、显示,因我对AX开发不熟悉,系统中有哪些内置对象都不熟悉,所以没有动手处理。

我研究的同时王工也一直在尝试各种方法,一开始想到对Query进行下手,设置Query的参数,然后调用报表,但最终失败了,可喜可贺,最终找到了解决方案,思路跟我的类似,使用MenuFunction类来处理,关键代码如下:

MenuFunction    menufunction;
Args            args = new Args();
AccountNum      accountNum;
str             custGroup;
;
accountNum  = CustTable_AccountNum.valueStr();
custGroup   = CustTable_CustGroup.valueStr();
menufunction    = new MenuFunction(menuItemoutputstr(A_Cust),MenuItemType::Output);
//多个参数用&分割
menufunction.parameters("Cust_DS_AccountNum="+accountNum+"&Cust_DS_CustGroup="+custGroup);
menufunction.run(args);
super();


看一下效果图

至此Reporting Service开发报表动态参数传递告一段落了

欢迎各位关注Dynamics第三个中文BBS:http://dynamics.wx-wtsc.cn/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值