Microsoft Access - 更新给定日期的总字段的表单

时间:2013-01-21 17:17:11

标签: forms ms-access access-vba

我正在尝试创建一个用于跟踪/发货的表单。主要关注的是运送的样品数量和运输的米袋数量。用户要求表单中的几个字段显示给定日期的每个字段的总数。对于给定的日期,通常有6个左右的记录。

我目前有一个选择查询,可以生成这些总计,按日期分组。我似乎无法正确组合事件或按钮来工作。我也尝试过各种形式的活动。

总而言之,我想要一个表单中的字段,该字段可以保留给定日期的样本总数。我遇到的问题似乎总是最终填满了它在表中遇到的第一个日期。例如,19/11/12有388个样本,最终在表格中所有记录的总样本字段中。

示例:

 Private Sub Samples_AfterUpdate()
    Forms![2013_Assay_Tracking]![Total Samples] = DLookup("[Total_Samples]", "Assay Tracking Totals", "Date_Shipped='" & [Forms]![2013_Assay_Tracking]![Date_Shipped] & "'")
End Sub

这样可行,但会在表格中填入第一个出货日期的样本总数。目前有4个不同的日期。

任何想法都会受到赞赏。

1 个答案:

答案 0 :(得分:0)

如果发货日期是日期,请使用#,此外,您似乎需要使用DSum:

Private Sub Samples_AfterUpdate()
    Forms![2013_Assay_Tracking]![Total Samples] = _
       DSum("[Total_Samples]", "Assay Tracking Totals", "Date_Shipped=#" _
       & [Forms]![2013_Assay_Tracking]![Date_Shipped] & "#")
End Sub

您可以通过将表单引用放在引号中来简化区域设置问题:

DSum("[Total_Samples]", "Assay Tracking Totals", _
        "Date_Shipped=[Forms]![2013_Assay_Tracking]![Date_Shipped]")

最后,从上面看来,您使用的是连续表单,因此对表单的引用仅包含当前记录。如果是这种情况,您可能希望将文本框设置为:

=DSum("[Total_Samples]","Assay Tracking Totals","Date_Shipped=#" & [Date_Shipped] & "#")