我有一个查询left outer join
子句收集来自两个表的结果(我使用TZQuery
组件,但这可能无关紧要)。
我想使用过滤器仅显示名为ABC的列包含XXX的结果。
我的第一个方法是:
MyQuery.Filter := 'ABC = XXX';
MyQuery.Filtered := True;
虽然不起作用。
我认为原因是我的查询从两个表中收集结果。
这里有什么合适的解决方案?
谢谢!
答案 0 :(得分:1)
请记住,通过传递回引擎来应用过滤器,因此您必须像编写SQL中WHERE子句的条件一样编写过滤器。
MyQuery.Filter := 'ABC = 1';
MyQuery.Filter := 'ABC <> 1';
MyQuery.Filter := 'ABC = ' + QuotedStr('XXX');
MyQuery.Filter := 'ABC LIKE ' + QuotedStr('%XXX%');
如果引擎无法理解这些条件,则您的过滤器将不适用。
另外,请尝试并记住要明确,如果您正在使用联接,并且字段名称之间可能存在歧义,包括过滤器中的TABLENAME。
MyQuery.Filter := 'TABLENAME.ABC = 1';