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

Passing parameters to parameter dialog for Query-based reports

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

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

public void init()
{
    VendTable vendTable;

    super();

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

希望有用!

答案很简单,虽然很难找到。我不知道您可以从控制器中访问查询对象。解决方案是创建一个 Controller class,仅将 main() 方法定义为正常,并覆盖 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));
}