我对Access 2010中的过滤器有一个奇怪的问题。 过滤器在过去几天工作得非常好,但今天我注意到它停止工作(过滤掉所有东西)它是一个非常简单的Me.Filter。我将VBA代码重置为我知道它正在工作的状态,但它仍然拒绝按预期工作。这是我正在使用的示例过滤器:
Me.Filter = (Hersteller LIKE '*Test*' OR ID LIKE '*Test*' OR Typ LIKE '*Test*' OR Nennmaß LIKE '*Test*' OR Herstellertyp LIKE '*Test*') AND Status = 'Einsetzbar' AND ID is not null
当然,之后它被激活Me.FilterOn = True
看到我尝试了我的旧工作代码,它必须是我在表单或后端表中更改的内容。不幸的是,我没有改变任何我可以想象对过滤产生影响的东西。列名等是相同的......更糟糕的是我的日期过滤器Me.Filter = (Datum > #01/18/2015#) OR (Datum > #01/18/2015#)
完美无缺。任何想法都将不胜感激!!
答案 0 :(得分:1)
注意代码的最后部分是灰色的?这是由于字符串之外的单个撇号被评估为评论。
尝试:
Me.Filter = "(Hersteller LIKE '*Test*' OR ID LIKE '*Test*' OR Typ LIKE '*Test*' OR Nennmaß LIKE '*Test*' OR Herstellertyp LIKE '*Test*') AND Status = 'Einsetzbar' AND ID is not null"
您当前的代码过滤器的计算结果为:(Hersteller Like
,显然有效,但由于Like
之后没有任何内容,因此没有记录符合条件,也不会返回任何记录。< / p>
Me.Filter = (Datum > #01/18/2015#) OR (Datum > #01/18/2015#)
起作用的原因是因为没有撇号切断了条款的一部分。
每MSDN:
Filter属性是一个字符串表达式,由不带WHERE关键字的WHERE子句组成。
因此,无论何时使用Me.Filter =
,都应将以下子句封装在双引号中,以确保其计算为字符串,这是.Filter
所期望的。
答案 1 :(得分:1)
我把它弄清楚了!我不知道为什么它之前工作而不是现在但是使用*作为通配符对我的版本不起作用(Access 2010)我不得不将我的过滤器中的每个*更改为%,现在它已经完成了wnrs! Me.Filter = "(Hersteller LIKE '%test%' OR ID LIKE '%test%' OR Typ LIKE '%test%' OR Nennmaß LIKE '%test%' OR Herstellertyp LIKE '%test%') AND ID is not null"