3

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

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

我使用视图作为表单数据源,可能是问题所在。即使在网格上手动添加过滤器,任何想法都可以始终应用范围并保留它?谢谢你的帮助

4

1 回答 1

5

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
于 2013-01-23T11:13:08.240 回答