在较早版本的AX中我们运行一个报表时会用到类RunBaseReport,从它扩展一个子类,再由它运行报表,一个典型的Axapta3中的例子:

class ReportProdInfo extends RunBaseReport
{
ProdId _prodid;
} static void main(Args args)
{
ReportProdInfo _prodInfo;
ProdTable pdt;
;
if(args.dataset()!=tablenum(ProdTable)||(!args.record()))
{
throw error("@SYS22539");
}
pdt=args.record();
_prodInfo = new ReportProdInfo(pdt.ProdId);
if (_prodInfo.prompt())
_prodInfo.run();
} identifiername lastValueElementName()
{
return reportStr(ReportProdInfo);//指定Mophx报表的名称
}

我们可以根据Main方法的传入参数args的方法dataset/record来获取从一个MenuItem运行该类时传入的Datasource记录,进而根据它对要展示的数据进行过滤。

在AX2012中Runbase框架已经被SysOperation框架替代,RunbaseReport类的替代就是SrsReportRunController(从SysOperationController扩展而来),下面来看看如何使用这个新的控制类来传递记录参数到SSRS报表。

如果SSRS报表使用的是RDP class作为数据源,那你已经有了DataContract类,我们可以直接传入参数到DataContract类:

class SrsRdpSampleReportController extends SrsReportRunController
{
} public static void main(Args _args)
{
SrsRdpSampleReportController controller = new SrsRdpSampleReportController();
controller.parmReportName('RdpSampleReport.AutoDesign1');
controller.parmArgs(_args);
controller.startOperation();
} protected void preRunModifyContract()
{
SrsRDPContractSample rdpContract=this.parmReportContract().parmRdpContract();
; if(args && args.record()) rdpContract.parmRecord(args.record());
}

这里通过rdpContract.parmRecord(args.record())将从Menuitem args参数得到的记录传入data contract类,后续在data provider class中根据data contract的parmRecord()得到的记录处理数据就可以了。

如果SSRS报表使用Query作为数据源,同样我们在preRunModifyContract方法中获取报表的Query对象做处理就可以了,得到Query对象可以使用

Query query=this.getFirstQuery();

或者

Query query=this.parmReportContract().parmQueryContracts().lookup(this.getFirstQueryContractKey());

最后我们只要创建一个Menu Item来运行SrsRdpSampleReportController就可以了。

[AX2012]在SSRS报表中获取从Menuitem传入的记录的更多相关文章

  1. [AX2012 R3]在SSRS报表中使用QR二维码

    AX2012是自带生成QR二维码的类,可以很方便的用在SSRS报表中,下面演示如何在RDP的报表中使用二维码,首先从定义临时表开始: 字段URL是要用于二维码的字符串,QrCode是container ...

  2. AX2012/D365 SSRS报表开发

    大家好,好久没有做SSRS报表了,近期刚好有做2张,就整理起来供初学者参考. AX中SSRS报表开发的框架,父类非常多,这里跟大家简单分享2种比较常用的场景供大家使用. 1.简单的过滤字段,无特殊过滤 ...

  3. Dynamics CRM 在报表中获取当前登陆用户的guid

    <span style="font-size:18px;">CRM提供函数,只需在报表中调用即可.</span> <pre class="s ...

  4. SSRS 报表中的Chart在IE中不显示

    解决办法: 重启SSRS服务...

  5. MYSQL中获取得最后一条记录的语句

    方法1:select max(id) from tablename 方法2:select last_insert_id(); 在MySQL中,使用auto_increment类型的id字段作为表的主键 ...

  6. .NET[C#]使用LINQ从List<T>集合中获取最后N条数据记录的方法有哪些?

    https://codedefault.com/2018/using-linq-to-get-the-last-n-elements-of-a-collection-in-csharp-applica ...

  7. 从BIRT报表文件中获取页面设置信息(页边距、纸张大小、输出方向)的方法

     从BIRT报表文件中获取页面设置信息(页边距.纸张大小.输出方向)的方法    报表打印时,尤其是套打的报表,页面设置信息非常重要,比如页边距,纸张大小,输出方向等,而且每个报表的相关参数有可能不同 ...

  8. AutoCAD中的扩展字典及扩展记录(C#)

    在学习CAD扩展记录的过程中,遇到了一些问题,也积累了一些经验,现在给大家分享一些我的学习心得.在学习扩展字典之前需要读者了解cad的组码,也就是DxfCode.感兴趣的也可以了解一下扩展数据的相关内 ...

  9. Dynamics AX 2012 R2 SSRS报表在VS2010中预览没有数据

    今天,Reinhard 在VS中制作SSRS报表,预览的时候发现显示不出数据. 仔细检查了数据处理环节和临时表里的数据,都发现没有问题. 用同事的账号登陆同样的开发环境,发现他的账号可以在VS中预览到 ...

随机推荐

  1. Lucene增删改查

    IndexManager.java package com.witwicky.lucene; import java.io.File; import java.util.ArrayList; impo ...

  2. Java设计模式(2)单态模式(Singleton模式)

    定义:Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在. 在很多操作中,比如建立目录 数据库连接都需要这样的单线程操作. 还有,singleton能够被状态化 ...

  3. DPI (深度报文检测) 关于DPI的学习笔记

    关于DPI的学习笔记 先看一下定义 : DPI(Deep Packet Inspection)是一种基于数据包的深度检测技术,针对不同的网络应用层载荷(例如HTTP.DNS等)进行深度检测,通过对报文 ...

  4. [转]android ANR产生原因和解决办法

    ANR (Application Not Responding) ANR定义:在Android上,如果你的应用程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,这个对话框称作应用程序无响应(AN ...

  5. SpringMVC系列(十四)Spring MVC的运行流程

    Spring MVC的运行流程图: 1.首先看能不能发送请求到Spring MVC的DispatcherServlet的url-pattern2.如果能发送请求,就看在Spring MVC中是否存在对 ...

  6. e801. 创建一个JProgressBar组件

    A progress bar is used to visually indicate how much a task has been progressed. A progress bar can ...

  7. systemd的运行级别与服务管理命令简介

    从很久很久以前我们就在使用静态运行级别.而systemd提供了更为动态灵活的机制,来管控你的系统. 在开始介绍systemd命令前,让我们先简单的回顾一下历史.在Linux世界里,有一个很奇怪的现象, ...

  8. cocos2d - CCSprite各种动画

    转自 ITeye技术网站 // 触摸屏 -(void) ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { for( UITouc ...

  9. scala 日期格式转换

    scala> val format = new java.text.SimpleDateFormat("dd-MM-yyyy") 注意MM必须要大写 format: java ...

  10. php创建文件夹

    $dir = iconv("UTF-8", "GBK", "Public/bookcover"); if (!file_exists($di ...