我在表单上遇到了一个奇怪的问题:我在数据源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/