0

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

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

4

2 回答 2

1

If you replace the .Filter property on a form (or subform) with a new value then the previous filter goes away. If you append a new clause onto an existing .Filter string, e.g. by changing...

[Branch]="Main"

...to...

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

...then the new filter applies both criteria.

于 2013-04-17T19:29:41.710 回答
1

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

例如,给每个复选框一个 AfterUpdate 事件。本次活动将做两件事:

  1. 使用用户的选择设置模块级变量
  2. 启动ApplyFilters

由于所有用户的选择现在都存储在模块级变量中,ApplyFilters可以看到它们。它会:

  1. 获取所有模块级变量并创建一个主字符串(提示,如果您需要占位符,请使用1=1
  2. 应用该字符串作为子表单的过滤器。

其他注意事项:从主窗体访问子窗体的控件很简单。要将子表单的过滤器更改为字符串 NewFilter,请尝试:

 Forms!MyMainFormsName!MySubFormsName.Filter=NewFilter
于 2013-04-17T19:42:26.260 回答