在Access VBA中,计算变量组的数组总数

时间:2017-03-16 00:49:51

标签: sql vba access-vba access

我有一个我从动态查询创建的数组。对于范围中的每个项目和日期,我会得到几个值。这一切都很好。但我需要能够计算每个组(不是每一行)的总数,并将该总数用作29周的下一个日期范围的起始值。

在VBA中,我有每行数据的结尾总数。然后,我可以在以下日期范围内使用该总计。

我的代码的问题是每行的结尾总数,而不是每个组。

使用查询(我将其用作报告的数据源),我可以使用表达式获得正确的结束总数。

查询的问题是起始值不可用。

    If cRequired < Week1 Then

    recOut.AddNew
    recOut.Fields("ItemNumber") = cItem
    recOut.Fields("tB") = cOnHand
    recOut.Fields("tPO") = cPO
    recOut.Fields("tBC") = cBC
    recOut.Fields("tSO") = CSO
    recOut.Fields("tPD") = cPD
    recOut.Fields("tIN") = cIN
    recOut.Fields("tJT") = cJT
    recOut.Fields("tWO") = cWO
    recOut.Fields("tE") = cOnHand + cPO + cBC + CSO + cPD + cIN + cJT + cWO
    recOut.Fields("RequiredDate") = cRequired
    recOut.Fields("GroupDate") = Week1
    recOut.Update

    tEPast = cOnHand + cPO + cBC + CSO + cPD + cIN + cJT + cWO

   End If

通过查询可以获得以下数据。结束总计是查询中的计算表达式并且是正确的。 Beginning值由代码写入表中。这不对。

[tB]+[SumOftPO]+[SumOftBC]+[SumOftSO]+[SumOftPD]+[SumOftIN]+[SumOftJT]+[SumOftWO]

009 1623.39 0   -106.404    0   0   0   0   0   2/19/2017   1516.87
009 1572.39 0   -390.477    0   0   0   0   0   2/26/2017   1182.14
009 1522.39 0   -414.684    0   0   0   0   0   3/5/2017    1107.07

对于第一行,代码获得cOnHand的值4次,因为有4个原始日期(下面)。 tE的计算针对相同的值cOnHand运行4次,每行一次。因此,下一个存储桶的起始值是错误的。

009  1623.39    0   -9.724  0   0   0   0   0   1613.667    2/12/2017
009  1623.39    0   -44.88  0   0   0   0   0   1578.511    2/13/2017
009  1623.39    0   -1.4    0   0   0   0   0   1621.991    2/15/2017
009  1623.39    0   -50.4   0   0   0   0   0   1572.991    2/17/2017

通过代码(正确的结束总数)或通过查询(正确的起始值),不太确定采取何种方法或如何获得正确的总计。

我想看到什么......

009 1623.91 0   -106.40     0   0   0   0   0   2/19/2017   1516.87
009 1516.87 0   -390.47     0   0   0   0   0   2/26/2017   1126.39
009 1126.39 0   -414.68     0   0   0   0   0   3/5/2017     711.71

1 个答案:

答案 0 :(得分:0)

管理以获得有效的解决方案。由于我在查询中计算了正确的值,因此我将其读回变量并用于设置下一个起始值。使用以下DLookup而不是尝试直接处理计算。

而不是:

 tEPast = cOnHand + cPO + cBC + CSO + cPD + cIN + cJT + cWO

更改为:

Dim tryme As Double
        tryme = DLookup("teMe", "qBuckets", "GroupDate = Week1")
        tE0 = tryme