Axapta AOT查询可以引用TempDB表作为数据源
我们使用AX2012 R3 声明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
我的问题: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查询中这样做吗?