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