将参数从Form传递到AOT Query AX 2012

时间:2013-11-19 19:48:24

标签: reporting-services axapta microsoft-dynamics dynamics-ax-2012 dynamics-ax-2012-r2

我目前使用AX 2012 R2。我目前在AOT中有一个自定义查询对象,用于向自定义SSRS报告提供数据。

在SalesTable表单中,我在SalesTable表单上有一个自定义按钮,我在其中重写了单击的方法以调出自定义的输出菜单项,以提供SalesTable.CustAccount和SalesTable.SalesId的参数。

但是,当我在SalesTable表单上选择另一条记录并单击自定义按钮时,将显示查询对话框(用于选择确切值的对话框),但我的参数的最后选定值仍然完好无损。我假设由于使用数据。

通过使用查询创建SSRS报告,是否有一种方法可以将当前所选记录值从表单提供给对话框作为参数,而不是使用数据中保存的内容?

请提前通知并提前致谢

void clicked()
{
    MenuFunction            jobCardReport;
    Args                    args = new Args();
    Query                   query = new Query();
    QueryRun                queryRun;
    QueryBuildDataSource    qbds;
    QueryBuildRange         queryBuildRange;
    SalesTable              salesTableRecord;
    ;

    salesTableRecord = element.args().record();
    qbds = query.addDataSource(tableNum(SalesTable));
    queryBuildRange = qbds.addRange(fieldNum(SalesTable, CustAccount));
    queryBuildRange.value(salesTableRecord.CustAccount);

    queryBuildRange = qbds.addRange(fieldNum(SalesTable, SalesId));
    queryBuildRange.value(salesTableRecord.SalesId);
    queryRun = new QueryRun(query);

    jobCardReport = new MenuFunction(menuitemOutputStr(TestCard), MenuItemType::Output);
    args.parm(strFmt("TestCard_DynamicParameter=%1, %2", salesTableRecord.CustAccount, salesTableRecord.SalesId));
    jobCardReport.run(args);        

    super();
}

最后3行代码允许我使用“选择”按钮从查询对话框中传递手动选择。但是在后续运行中,尽管在SalesTable表单中显示了哪条记录,手动选择仍然存在。

2 个答案:

答案 0 :(得分:1)

我认为最好的方法是使用SrsReportRunController类。在类中,有一个方法,名称:prePromptModifyContract。此方法可以包含SalesTable表单中的参数,将其传递给Report Contract类并处理Data Provider类中的查询。

以下是一些参考:

我希望这个解释和参考可以给你不同的观点。

答案 1 :(得分:0)

您能提供代码示例吗?

我假设你现在使用query(),但为了获得运行时过滤器值,你应该使用queryRun()。两者都可以从数据源获得。