2016-01-19 45 views
0

我想使用3个文本框和3个组合框搜索数据列表。我创建了一个命令按钮来触发事件。它的工作原理,过滤器应用,但只有约30分钟。之后,数据未经过滤显示。我没有收到任何错误,只是停止使用过滤器。DoCmd.ApplyFilter停止工作,Access 2007

Private Sub Command370_Click() 
    DoCmd.ApplyFilter "", "[Ervaring 1].Value Like ""*"" & [Forms]![Werknemers lijst]![cboervaring].value & ""*"" And [Opleiding1].Value Like ""*"" & [Forms]![Werknemers lijst]![combo619].Value & ""*"" And [Taal 1].Value Like ""*"" & [Forms]![Werknemerslijst]![combo621].Value & ""*""", "" 
    DoCmd.ApplyFilter "", "[Voornaam] Like ""*"" & [Forms]![Werknemers lijst]![tref1] & ""*"" Or [Achternaam] Like ""*"" & [Forms]![Werknemers lijst]![tref1] & ""*"" Or [Geslacht] Like ""*"" & [Forms]![Werknemers lijst]![tref1] & ""*""", "" 
    DoCmd.ApplyFilter "", "[Cedula] Like ""*"" & [Forms]![Werknemers lijst]![tref1] & ""*"" Or [Nationaliteit] Like ""*"" & [Forms]![Werknemers lijst]![tref1] & ""*""", "" 
    DoCmd.ApplyFilter "", "[Voornaam] Like ""*"" & [Forms]![Werknemers lijst]![tref2] & ""*"" Or [Achternaam] Like ""*"" & [Forms]![Werknemers lijst]![tref2] & ""*"" Or [Geslacht] Like ""*"" & [Forms]![Werknemers lijst]![tref2] & ""*""", "" 
    DoCmd.ApplyFilter "", "[Cedula] Like ""*"" & [Forms]![Werknemers lijst]![tref2] & ""*"" Or [Nationaliteit] Like ""*"" & [Forms]![Werknemers lijst]![tref2] & ""*""", "" 
    DoCmd.ApplyFilter "", "[Voornaam] Like ""*"" & [Forms]![Werknemers lijst]![tref3] & ""*"" Or [Achternaam] Like ""*"" & [Forms]![Werknemers lijst]![tref3] & ""*"" Or [Geslacht] Like ""*"" & [Forms]![Werknemers lijst]![tref3] & ""*""", "" 
    DoCmd.ApplyFilter "", "[Cedula] Like ""*"" & [Forms]![Werknemers lijst]![tref3] & ""*"" Or [Nationaliteit] Like ""*"" & [Forms]![Werknemers lijst]![tref3] & ""*""", "" 
End Sub 
+1

原则上它可能只是应用过滤器并停止。你怎么知道它不工作?没有你的数据库就不可能重现问题,你的过滤器的目的是模糊的。你能用一些数据做一个简单的例子吗?你是否尝试过每次使用每一个'ApplyFilter'行来查看它们是否单独工作? –

+0

我确实尝试使用每个ApplyFilter行本身,他们都完美地工作。当我输入代码并尝试运行它时,它按照我想要的方式完全过滤。我创建了一个数据列表来显示我所有的员工,我希望能够通过使用三个文本框搜索名字,姓氏,塞杜拉,国籍和性别,并搜索我拥有的经验,教育和语言创建了三个组合框,因为这些是多值域。我是这个网站的新手,不确定如何为您提供包含一些数据的清晰示例? – fleur

+0

请参阅:http://stackoverflow.com/help/mcve。在你的情况下,尽管创建一个最小可验证的Access07数据库可能会很棘手。无论如何,澄清:当你说过滤器“工作30分钟”,你的意思是说,30分钟后,它开始显示未经过滤的数据? –

回答

1

这里有一个简单的解决方案(而不是使用确定applyFilter方法)...

  1. 作出这样的过滤数据,你想要的方式查询。

  2. 制作使用筛选查询而不是表格的表单副本。

  3. 在主窗体上,有一个运行代码的命令按钮来关闭窗体并打开窗体的过滤版本。

  4. 在过滤的窗体上,有一个命令按钮关闭该窗体并打开管理窗体。

+0

不幸的是,我并不熟悉查询,所以这听起来更复杂。 – fleur

+0

嗯我会认为在vba代码中执行ApplyFilter命令会比编辑查询更复杂。你真的应该学会构建查询。它们是Access的主要功能之一。 –

+1

@fleur你已经在做一个查询了,效率非常低。查询=从数据库请求数据。您可以不过滤,然后手动应用过滤器。您可以按照您的要求从已经过滤的数据库中*请求数据。数据库为此进行了优化。 –