计算访问表单上参数值的实例

时间:2011-01-25 04:05:56

标签: database ms-access

我想在Microsoft Access表单的表单页脚中显示我尝试使用的字段(“类别”)的特定值的计数

=Sum(IIf([Category]="S",1,0))

作为页脚中文本控件的控件源,但是失败了。我无法弄清楚为什么我无法在此控制/字段组合上执行此计算。我怀疑它与“类别”有关,不是任何控件的控制源,即使它在我的组合框的第二列中可用。

我已经在“Appliance”字段上执行了计数,并且sum函数正常工作,所以我很确定我的一般语法和引用并没有完全被破坏。两个基础值都是文本字段。

我喜欢帮助我如何使用Sum函数获取查询的第二个参数?

具体细节:

组合框
名称是“lstAppliance”。绑定列:1,行源:

SELECT qryApplianceDetails.Appliance, qryApplianceDetails.Category FROM qryApplianceDetails;

文字框 名称是“txtCategory”,控制来源:

=Appliance.Column(1)

如果不够清楚,我希望看到的内容如下:


表单标题: 设备,类别


表单详细信息

卡车,S
卡车,L
汽车,S
自行车,M
House,L
星球,S


表单页脚
“S”事的数量:3


在页脚中使用此源:

=Sum(IIf([Appliance]="Truck",1,0))

如您所料,显示“2”,但是:

=Sum(IIf([Category]="S",1,0))

按照我的预期显示“#error”,而不是“3”。

2 个答案:

答案 0 :(得分:2)

我会尝试更简单的方法,但不确定这对于你需要的东西是否过于简单。

使用此表达式作为txtCategory的控制源:

=DCount("*", "qryApplianceDetails", "Category='S'")

然后在表单的On Current和After Update事件中添加:

Me.txtCategory.Requery

答案 1 :(得分:1)

关于在表达式(或VBA代码)中使用表单的记录源中的字段的问题,自A2000起,事情变得更加困难。如果您使用的字段尚未用作表单上控件的ControlSource,则不可靠。解决方法是使用字段作为其ControlSource创建一个不可见的控件。

解决该问题的另一种方法是使用此ControlSource创建一个控件:

  =Val(IIf([Category]="S", 1, 0))

...然后在该控件上使用Sum()。

我不喜欢使用DCount()的想法,因为它需要在数据库中点击已经在表单中的数据。其次,如果这是在子表单中,则DCount()不仅需要在Category值上进行过滤,还需要在子表单与其父表单之间的链接字段上进行过滤。它只是变得如此挑剔,我会说最好能够从已经加载到表单中的记录集中获得一些东西。