在控制器中获取查询

时间:2015-12-29 13:02:09

标签: axapta dynamics-ax-2012 dynamics-ax-2012-r3

我有两个版本在我的控制器类中获取查询,

prePromptModifyContract方法:

this.parmReportContract().parmQueryContracts().lookup(this.getFirstQueryContractKey())

this.getFirstQuery()

这里有一个奇怪的混合,我的查询作为属性添加到数据提供程序类和临时表。在processReport方法中执行查询,但范围仅在控制器中设置,因此......确切的流量是什么以及控制器如何使用上面突出显示的行获取对查询的引用?

还有一件事,上述方法调用之间的区别是什么?他们目前都在工作,但有什么理由我应该使用一个而不是另一个?

1 个答案:

答案 0 :(得分:1)

第二个问题首先,方法应该给出相同的结果,除了一些错误测试,所以更喜欢getFirstQuery

怎么看?阅读代码:

protected final Query getFirstQuery()
{
    Query firstQuery;
    Map   queryContractsMap = this.getReportContract().parmQueryContracts();
    str   firstQueryKey = this.getFirstQueryContractKey();    
    if (queryContractsMap && firstQueryKey && queryContractsMap.exists(firstQueryKey))
        firstQuery = queryContractsMap.lookup(firstQueryKey);
    return firstQuery;
}

我不确定你的意思是第一个问题,确切的流程。

但是,作为用户,您可以在提示中更改查询。 processReport中的查询应该是用户提供的查询。

prePromptModifyContract中的查询是上次运行作业(或初始查询,如果从不运行)的保存查询。在用户看到查询之前,您可以选择更改某些范围或其他任何范围。