我想在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”。
答案 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值上进行过滤,还需要在子表单与其父表单之间的链接字段上进行过滤。它只是变得如此挑剔,我会说最好能够从已经加载到表单中的记录集中获得一些东西。