过滤以拆分形式显示为组合框的列

时间:2015-05-21 22:27:33

标签: sql ms-access access-vba

我有一个基于表(tblMain)的拆分表单。表单显示了许多列,其中一些是文本框,另一些是组合框。除了两列之外,我可以轻松地对表单的数据表部分中的每一列进行排序和过滤。

这两列是具有相同控制源和相同行源表的组合框,但有以下区别:

cboPUNUM: 
control source tblMain.[PU_ID]; 
row source SELECT tblPU.[PU_ID], tblPU.PUNUM FROM tblPU;

cboPUTYPE: 
control source tblMain.[PU_ID]; 
row source SELECT tblPU.[PU_ID], tblPU.PUTYPE FROM tblPU; 

表tblPU具有以下结构:

PU_ID  PUNUM  PUTYPE
1      11234  SMC
2      21234  DPL
3      11234  NEC
4      21123  SMC
and so on...

我们的想法是在拆分表格中为PUNUM和PUTYPE设置两个独立的列,并且能够过滤它们。

拆分表单中的两列都显示复选框中的所有可用值,以便在列顶部的下拉列表中进行过滤,直到应用过滤器:

enter image description here

问题是我只能过滤其中一列(见下图)。例如,如果我在PUNUM字段中选择84174,那么我将无法过滤PUTYPE字段。理想情况下,PUTYPE应该为我提供检查FHP或ADH的选项,但复选框不会出现在下拉列表中。

enter image description here

反之亦然,如果我从过滤PUTYPE开始,即我选择FHP并期望PUNUM有很多选项,但它没有显示过滤的复选框(见下文)。

enter image description here

请告知我能做些什么,因为我没有想法......?

P.S。 DLookup函数代替组合框不允许根据列过滤。

我知道我可以将表单基于查询并在该查询中保存DLookup表达式,但这会显着降低性能。

1 个答案:

答案 0 :(得分:0)

好的,看起来我在想这个问题......

我刚刚更改了拆分表单的查询,并将tblPU包含在这两个字段中。然后将表单控件转换为文本框,并将它们直接发送到该字段。像我想的那样工作。