0

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

  1. 折扣数量没有限制。
  2. 以定义的顺序应用的特定折扣(在我的例子中使用“折扣序数”列实现,值 1(第一次应用)到 100(最后一次应用)。
  3. 折扣的每个顺序应用都是报价的总和。例如:总产品 $1000。折扣:50%。价值:500 美元。小计 500 美元。小计:500 美元。折扣:25 美元。价值:25 美元。小计:475 美元。小计:475 美元。折扣:10%。价值:47.50 美元。小计:427.50 美元。

这似乎是“获取前一行中字段的值”问题的变体,但增加了“字段值”实际上是累积计算的转折。它有递归的味道:虽然折扣仍然存在,但小计(之前的小计)。

我不清楚如何在报告中实现这一点,因为上面提到的计算是自引用的。我不是在这里寻找代码,只是关于解决问题的一般方法的指导(即某种全局变量,使用 VBA - 在这种情况下,我不确定 VBA 中的查询和该报告将是 - 或一些计算字段的技巧,尽管我花了很多时间试图弄清楚)。有什么想法吗?

4

2 回答 2

1

在这种情况下,我总是创建一个新表,当报表打开时该表将被填满,并将报表基于该表,而不是原始表。这样我就可以进行所有我需要的计算,甚至可以通过几次。然后,该报告只是表格的“转储”。复杂总计可以是附加列,仅在总计部分中显示。

于 2013-06-03T15:56:04.810 回答
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

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

于 2013-06-03T16:07:02.243 回答