Ms access MS Access使表单上的导航选项不相互排斥

Ms access MS Access使表单上的导航选项不相互排斥,ms-access,ms-access-2010,Ms Access,Ms Access 2010,我正在创建一个导航表单,其中一些导航按钮只是将过滤器应用于子表单。现在的问题是,每个选项都是排他性的,即我可以按分支机构或职务选择员工。如何使选项不具有独占性,以便一次应用多个过滤器 编辑只是为了添加。我没有VBA的知识,所以我尝试使用图形界面和宏来实现这一点。如果无法使用这些工具完成,那么很好,我会找到一个不同的解决方案。如果将窗体(或子窗体)上的.Filter属性替换为新值,则上一个筛选器将消失。如果将新子句附加到现有的.Filter字符串上,例如通过更改 [Branch]="Main"

我正在创建一个导航表单,其中一些导航按钮只是将过滤器应用于子表单。现在的问题是,每个选项都是排他性的,即我可以按分支机构或职务选择员工。如何使选项不具有独占性,以便一次应用多个过滤器

编辑只是为了添加。我没有VBA的知识,所以我尝试使用图形界面和宏来实现这一点。如果无法使用这些工具完成,那么很好,我会找到一个不同的解决方案。

如果将窗体(或子窗体)上的
.Filter
属性替换为新值,则上一个筛选器将消失。如果将新子句附加到现有的
.Filter
字符串上,例如通过更改

[Branch]="Main"
…到

[Branch]="Main" AND [Title]="Manager"

…然后新过滤器应用这两个标准。

此解决方案需要适量的VBA(我想不出一个解决方案不需要它)。将用户的选择存储在模块级变量中,然后使用主
ApplyFilters
子例程应用过滤器

例如,为每个复选框指定一个AfterUpdate事件。此活动将做两件事:

  • 根据用户的选择设置模块级别变量
  • 启动ApplyFilters子系统
  • 由于用户的所有选择现在都存储在模块级变量中,因此ApplyFilter可以看到它们。它将:

  • 获取所有模块级变量并创建主字符串(提示,如果需要占位符,请使用
    1=1
  • 应用该字符串作为子窗体的筛选器
  • 其他说明: 从主窗体访问子窗体的控件很简单。要将子窗体的筛选器更改为字符串NewFilter,请尝试:

     Forms!MyMainFormsName!MySubFormsName.Filter=NewFilter
    

    请回答您的问题以提供更多上下文。当用户单击其中一个“导航按钮”时,您现有的代码实际上做了什么。。。将表单的
    .Filter
    属性设置为一个新的值,也许可以?默认情况下,子表单显示所有员工记录。导航窗格中的每个按钮都会对子窗体应用筛选器。我只是想弄清楚是否有一个选项允许它同时应用多个筛选器。是否希望它按分支
    标题或分支
    标题进行筛选?是的。我希望能够通过点击它们来应用任意组合的过滤器。我需要创建一个快速而肮脏的原型,我只是没有时间停下来学习一门新语言。作为一个原型,我希望以尽可能简单的方式实现功能。它不需要工作,它需要看起来好像工作。但当然,最好是有一个多选选项,而不是让我告诉客户“嘿,我们可以用一个多选选项来实现”。这难道不意味着我必须为每个可能的过滤器组合创建一个导航控件吗?@spacitron不一定。一种非常常见的方法是在搜索表单上有一个单选按钮来选择“必须全部匹配”(因此任何选择的条件在逻辑上都是
    ed)或“必须匹配任何”(因此任何选择的条件在逻辑上都是
    d)。如果我添加了一系列复选框,我甚至不知道这是否真的可能,每个复选框都会选择一个导航选项,该选项反过来会应用过滤器?由于可以同时选择多个复选框,这意味着可以同时选择多个导航选项。我的意思是,显然在这一点上,直接使用复选框更有意义,但是将它们连接到子表单是我一直遇到的问题。好消息,我认为我们在同一页上。我重新措辞了我的回答。现在它更有意义了吗?