我正在开发一个数据库(MS access 2010),以支持学校定义明确的学费报价模型。为每个报价组装产品列表,然后应用各种折扣。折扣可以是百分比或绝对美元金额。到目前为止,这么容易。问题是他们的业务逻辑需要:
这似乎是“获取前一行中字段的值”问题的变体,但附加的扭曲是“字段的值”实际上是累积计算。它具有递归的味道:折扣仍然存在,小计(前一个小计)。
我不清楚如何在报告中实现这一点,因为上面提到的计算是自我指涉的。我不是在这里寻找代码,只是指导问题的一般方法(即某种全局变量,使用VBA - 在这种情况下,我不确定VBA中查询之间的“粘合剂”和虽然我花了很多时间试图找出一个,但报告将是 - 或者计算字段的一些技巧。有什么想法吗?
答案 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),但可能会非常慢。然后,您可以按购买标识符对表格进行排序,然后按值降序,因为顺序折扣本身就会正确排序。