Axapta AOT查询可以引用TempDB表作为数据源

Axapta AOT查询可以引用TempDB表作为数据源,axapta,dynamics-ax-2012,x++,Axapta,Dynamics Ax 2012,X++,我们使用AX2012 R3 声明AOT下的查询可以引用TempDB表作为数据源。 我的问题:AOT查询如何读取写入TempDB表的数据源中的记录 我遇到的问题是AOT查询似乎无法从TempDB表数据源读取任何记录: 我在AOT下定义了一个TempDB表,还创建了一个AOT查询,该查询将TempDB表作为数据源引用。 我编写一个方法来填充TempDB表,然后编写一个while queryRun循环,与上面提到的AOT查询对象一起传递。但是,循环体从未运行过。 我已确保代码编写正确:如果我将T

我们使用AX2012 R3

声明AOT下的查询可以引用TempDB表作为数据源。
我的问题:AOT查询如何读取写入TempDB表的数据源中的记录

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

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

(或者,我已经编写了一个
while select
而不是AOT查询的
queryRun
。while select循环生成正确的结果,而不管连接的表是TempDB还是正则表。但是,我想允许添加其他范围。
while select
循环似乎无法o这样做。因此,我使用
while queryRun
循环,在一些
SysQuery::findOrCreateRange
之后

上面的链接还指出,TempDB表仅在实例化它的方法的作用域内存在。TempDB表的填充和我编写的循环都是在同一个方法中完成的。但是,由于我从未实例化过表,实例化它(TempDB表)意味着什么

EDITs:1)我还尝试在queryRun循环时在
之后编写一些代码,以查看TempDB表中是否有记录,并发现TempDB表中仍然存在这些记录。
2) 为了澄清,一个
while queryRun
循环意味着

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

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

填充
TempDb
表后,需要通过
queryRun.setRecord([TempDb table])将其传递给查询。


然后执行
while(queryRun.next()){…}

谢谢!它解决了我的问题!如果你能提供一些解释或参考,那就更好了。很高兴我能帮忙。在你弄清楚这些碎片之后,这是相当直接的。TempDb是在其实例化的作用域中存在的临时表。AOT中的查询对象是一种连接模式对象的抽象结构,可以在AX查询框架中进行解释。因此,当您尝试使用查询时,需要像传递变量一样传递temp表的实例。我前面没有AX,所以我使用内存,但需要注意的是,
TempDb
在表单上传递数据或设置时,表应该使用
linkPhysicalTableInstance(…)
在内存中时
表应使用
setTmpData(…)
。看看我们如何使用AOT查询来实现这一点?用户界面查询?我在哪里重写查询行为来填充临时表,然后连接值?我们可以在AOT查询中这样做吗?