【问题标题】:AOT query can reference a TempDB table as a data sourceAOT 查询可以引用 TempDB 表作为数据源
【发布时间】:2016-06-24 02:43:57
【问题描述】:

我们使用 AX 2012 R3。

Temporary TempDB Tables [AX 2012] 声明 AOT > Queries 下的查询可以引用 TempDB 表作为数据源。
我的问题:AOT 查询如何读取写入作为 TempDB 表的数据源的记录?

我遇到的问题是 AOT 查询似乎无法从我的 TempDB 表数据源中读取任何记录:

我在 AOT 下定义了一个 TempDB 表,并且我还创建了一个 AOT 查询,该查询将此 TempDB 表作为数据源引用。
我编写了一个方法来填写 TempDB 表,然后我编写了一个 while queryRun 循环,并与上面提到的 AOT 查询对象一起传递。但是,循环体从未运行过。
我已确保代码编写正确:如果我将 TempDB 表更改为常规表,则输入循环体并正确生成结果。

(或者,我写了一个while select而不是AOT查询的queryRunwhile select循环生成正确的结果,无论连接表是TempDB还是Regular。但是,我想允许添加其他范围。while select 循环似乎无法做到这一点。所以,我在一些SysQuery::findOrCreateRange 之后使用while queryRun 循环。)

上面的链接还指出,TempDB 表只存在于实例化它的方法范围内。 TempDB表的填写和我写的循环都是用同样的方法完成的。但是,由于我从不实例化表,实例化它(TempDB 表)是什么意思

EDITs:1)我也尝试在while queryRun循环之后写一些代码,看看TempDB表中是否有记录,发现记录仍然存在于TempDB中桌子。 2) 澄清一下,while queryRun 循环的含义如下

QueryRun queryRun = new QueryRun(query);
while(queryRun.next()){...}

上面queryRun的实例化中的query是一个AOT查询对象。

【问题讨论】:

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


    【解决方案1】:

    填写TempDb 表后,您需要通过queryRun.setRecord([TempDb Table]) 将其传递给查询

    然后做你的while(queryRun.next()){...}

    【讨论】:

    • 谢谢!它解决了我的问题!如果您能提供一些解释或参考就更好了。
    • 很高兴我能帮上忙。在你弄清楚碎片之后,它是相当直截了当的。 TempDb 是存在于它实例化的范围内的临时表。AOT 中的 Query 对象是一种连接模式对象的抽象结构,可以在 AX 查询框架中进行解释。因此,当您尝试使用查询时,您需要像变量一样传递临时表的实例。
    • 我面前没有 AX,所以我从记忆中开始,但需要注意的是,TempDb 表格在传递数据或设置表单时应使用 linkPhysicalTableInstance(...)In-Memory 表应使用 setTmpData(...)。见blogs.msdn.microsoft.com/axsupport/2012/08/09/…
    • 我们如何使用 AOT 查询来做到这一点?用户界面查询?我在哪里覆盖查询行为以填充临时表然后加入值?我们可以在 AOT 查询中这样做吗?
    猜你喜欢
    • 2011-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-27
    • 1970-01-01
    相关资源
    最近更新 更多