将参数传递给基于查询的报告的参数对话框

时间:2015-10-27 17:55:42

标签: axapta dynamics-ax-2012 x++

我有一个基于查询的报告,其中查询在其上启用了一些交互式范围。这很好,除了值为空,或者预先填充了最后使用的值。其中一个是供应商帐号。如果我想根据选择的供应商帐户记录(调用者)预先填充此帐户报告,我将如何实现此目标?

2 个答案:

答案 0 :(得分:1)

答案很简单,虽然很难找到。我不知道您可以从控制器中访问查询对象。解决方案是创建一个Controller类,只将main()方法定义为normal,并覆盖prePromptModifyContract方法。以下代码将解决问题:

SomeTable   someTable;
Query       query;

super();

if (this.parmArgs() && this.parmArgs().dataset() == tableNum(SomeTable))
{
    someTable = this.parmArgs().record();
    query = this.getFirstQuery();

    SysQuery::findOrCreateRange(query.dataSourceTable(tableNum(SomeOtherTable)), fieldNum(SomeOtherTable, SomeOtherField)).value(SysQuery::value(someTable.SomeField));
}

答案 1 :(得分:-1)

我没有试过这个,但你可以覆盖查询的init方法并调用element.args()。record(),就像在Form中一样。 像这样:

public void init()
{
    VendTable vendTable;

    super();

    if (element.args().dataset() == tableNum(VendTable))
    {
        vendTable = element.args().record();
        //populate your ranges with vendTable
    }
}

我希望它有效!