0

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

在 SalesTable 表单中,我在 SalesTable 表单上有一个自定义按钮,我在其中重写了 clicked 方法以调用自定义输出菜单项,以提供 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 表单中,手动选择仍然存在。

4

2 回答 2

1

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

这是一些参考:

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

于 2013-11-27T09:17:26.337 回答
0

你能提供代码示例吗?

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

于 2013-11-22T09:30:56.830 回答