axapta - 手动添加过滤器时如何保留表单数据源的范围?

标签 axapta x++ ax range

我在表单上遇到了一个奇怪的问题:我在数据源executeQuery()方法中添加了一个范围来过滤记录,这在打开表单时工作正常,但如果我在网格标题中手动设置过滤器,则在ExecuteQuery()中设置范围方法不适用。我的范围定义如下:

this.query.dataSourceNo(1).AddRange(fieldnum(MyTable,MyField)).Value('MyRangeValue');

我使用 View 作为表单数据源,可能是问题所在。 有什么想法可以始终应用范围并保留它,即使在网格上手动添加过滤器时也是如此? 感谢您的帮助

最佳答案

您必须在 executeQuery() 中的 super() 之前应用过滤器。

但我认为你的问题是你每次运行 executeQuery() 时都添加过滤器,导致生成的 SQL 表达式中出现 OR。

这样做的方法是:

QueryBuildRange qr = SysQuery::findOrCreateRange(this.query.dataSourceNo(1), fieldnum(MyTable,MyField));
qr.value(queryValue('MyRangeValue'));
qr.status(RangeStatus::Locked); // Or ::Hidden

关于axapta - 手动添加过滤器时如何保留表单数据源的范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14477062/

相关文章:

c# - 使用 Dynamics AX 2009 业务连接器创建表和检索查询结果

axapta - CustTableListPage过滤太慢

tfs - 如何在 AX 2012 中通过 TFS 使用分支?

report - X++ 在报告表单中传递当前选定的记录

axapta - 批处理参数

axapta - Dynamics AX 对需要事件缓冲区的表单发出警报

axapta - ax 查询和选择有什么区别

axapta - Dynamics AX 2012 - 将表添加到数据库记录选择列表

axapta - 同时选择并加入firstOnly

axapta - Axapta/Dynamics Ax 中的主/明细表