Axapta 将参数传递到基于查询的报表的参数对话框
我有一个基于查询的报告,其中查询启用了一些交互式范围。这很好,除非值为空,或者使用了预填充的最后一个值。其中之一是供应商账号。如果我想让此报告根据所选的供应商帐户记录(调用方)预填充供应商帐户,我将如何实现这一点?我还没有尝试过这一点,但您可以覆盖查询的init方法并以表单的形式调用element.args().record()。 大概是这样的:Axapta 将参数传递到基于查询的报表的参数对话框,axapta,dynamics-ax-2012,x++,Axapta,Dynamics Ax 2012,X++,我有一个基于查询的报告,其中查询启用了一些交互式范围。这很好,除非值为空,或者使用了预填充的最后一个值。其中之一是供应商账号。如果我想让此报告根据所选的供应商帐户记录(调用方)预填充供应商帐户,我将如何实现这一点?我还没有尝试过这一点,但您可以覆盖查询的init方法并以表单的形式调用element.args().record()。 大概是这样的: public void init() { VendTable vendTable; super(); if (elemen
public void init()
{
VendTable vendTable;
super();
if (element.args().dataset() == tableNum(VendTable))
{
vendTable = element.args().record();
//populate your ranges with vendTable
}
}
我希望它能起作用 答案很简单,但很难找到。我不知道您可以从控制器中访问查询对象。解决方案是创建一个控制器类,其中只有一个定义为normal的main()方法,并且覆盖了
precomptmodifycontract
方法。以下代码将解决此问题:
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));
}
查询调用者的问题是SSRS报告,报告本身不能附加记录。相反,使用控制器类,控制器成为查询的调用者并将其传递给报表。