累积使用MS访问报告中的运行总计

时间:2013-06-03 15:46:37

标签: ms-access

我正在开发一个数据库(MS access 2010),以支持学校定义明确的学费报价模型。为每个报价组装产品列表,然后应用各种折扣。折扣可以是百分比或绝对美元金额。到目前为止,这么容易。问题是他们的业务逻辑需要:

  1. 折扣数量没有限制。
  2. 以定义的顺序应用的特定折扣(在我的情况下使用“折扣序数”列实现,值1(首次应用)到100(最后一次应用)。
  3. 折扣的每个顺序应用都是报价的运行总计。例如:总产品1000美元。折扣:50%。价值:500美元。小计$ 500。 小计:500美元。折扣:25美元。价值:25美元。小计:475美元。 小计:475美元。折扣:10美元。价值:47.50美元。小计:427.50美元。
  4. 这似乎是“获取前一行中字段的值”问题的变体,但附加的扭曲是“字段的值”实际上是累积计算。它具有递归的味道:折扣仍然存在,小计(前一个小计)。

    我不清楚如何在报告中实现这一点,因为上面提到的计算是自我指涉的。我不是在这里寻找代码,只是指导问题的一般方法(即某种全局变量,使用VBA - 在这种情况下,我不确定VBA中查询之间的“粘合剂”和虽然我花了很多时间试图找出一个,但报告将是 - 或者计算字段的一些技巧。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

在这种情况下,我总是创建一个新表,它将在报表打开时填满,并将报表基于该表,而不是原始表。这样我就可以完成所需的所有计算,甚至可以进行多次传递。然后,报告只是表格的“转储”。复杂的总计可以是其他列,只会显示在总计部分中。

答案 1 :(得分:0)

您可以使用整数来购买历史记录表来链接每次购买,因为自动编号本身不会链接每个折扣阶段。

所以在excel中我会使用这样的东西:

v = Starting Value
i = 1

Do Until i = Last Discount
    d = ws.Cells(i, 9).Value
    v = v * (1 - d)
    ws.Range("B2").Value = v
    i = i + 1
Loop

在每个阶段,您可以写入表格(使用docmd.runsql)所应用的折扣(d)和值(v),但可能会非常慢。然后,您可以按购买标识符对表格进行排序,然后按值降序,因为顺序折扣本身就会正确排序。