1. 其中一种解决方式为编写脚本实现,这种方式我就不进行介绍了,想来大家都比较清楚。(BusComp_PreQuery实现)
2. 还有一种方式,通过计算字段(Field 中的Calculate,Calculate Value属性),将比较复杂的Sql 条件,分解为几个计算字段,而后在Search Specification中使用计算字段查询。
Example:([Class2]='0101'and[BMCC Filter Sign]='Y')or([Class2]='0103'and[Class Reason]='06'and[BMCC Filter Sign]='Y')or([Class2]='0104'and[Class Reason]='06'and[BMCC Filter Sign]='Y')or([Class2]='0106'and[Class Reason]='06'and[BMCC Filter Sign]='Y')or([Class2]='0109' and [Class Reason]='06' and [BMCC Filter Sign]='Y')
上面的是一个Search Specification的条件,但因为超长,不能直接应用。
可以将它分解为:
BMCC Filter Flag1:IIf(([Class2]='0101' and [BMCC Filter Sign]='Y'),'Y','N')
BMCC Filter Flag2:IIf(([Class2]='0103' and [Class Reason]='06' and [BMCC Filter Sign]='Y'),'Y','N')
BMCC Filter Flag3:IIf(([Class2]='0104' and [Class Reason]='06' and [BMCC Filter Sign]='Y'),'Y','N')
BMCC Filter Flag4:IIf(([Class2]='0106' and [Class Reason]='06' and [BMCC Filter Sign]='Y'),'Y','N')
BMCC Filter Flag5:IIf(([Class2]='0109' and [Class Reason]='06' and [BMCC Filter Sign]='Y'),'Y','N')
在Applet的Search Specification中,直接使用:([BMCC Filter Flag1]='Y' or [BMCC Filter Flag2]='Y' or [BMCC Filter Flag3]='Y' or [BMCC Filter Flag4]='Y' or [BMCC Filter Flag5]='Y')
这样就可以了.
不过我通过查看SQL日志,查询数据库时并没有直接使用到,这些查询条件,可能数据是在内存中过滤的,性能是否存在问题有待考察。