Tho*_*ost 3 ax range x++ axapta
我在表单上遇到一个奇怪的问题:我在数据源executeQuery()方法中添加了一个范围来过滤记录,这在打开表单时可以正常工作,但是如果我在网格标题中手动设置了一个过滤器,则ExecuteQuery()方法中设置的范围不会应用。我的范围定义如下:
this.query.dataSourceNo(1).AddRange(fieldnum(MyTable,MyField)).Value('MyRangeValue');
Run Code Online (Sandbox Code Playgroud)
我将视图用作DataSource表单,可能就是问题所在。有什么想法可以始终应用范围并保持范围,即使在网格上手动添加过滤器时也是如此?谢谢你的帮助
您必须在super()in 之前应用过滤器executeQuery()。
但是我认为您的问题是您每次executeQuery()运行时都添加过滤器,从而导致在SQL表达式中生成OR。
这是这样做的方法:
QueryBuildRange qr = SysQuery::findOrCreateRange(this.query.dataSourceNo(1), fieldnum(MyTable,MyField));
qr.value(queryValue('MyRangeValue'));
qr.status(RangeStatus::Locked); // Or ::Hidden
Run Code Online (Sandbox Code Playgroud)