计算MS Access中的季节性成本

时间:2012-09-07 22:37:40

标签: ms-access

我正在构建一个需要计算每晚季节性成本(基于酒店ID)的Access数据库,并在查询中填充日期范围的整个成本。目前,所有必须分段计算和/或手动输入。

我已经尝试了各种表格和查询,但它们都留下很多东西要手工输入。我想看看是否有办法完全自动化这个计算,真的很感激任何帮助。

下表显示的日期范围为一晚需要118美元,另一晚为159美元,总计277美元。我希望能够运行一个自动查询来填充总成本,并删除除了签入和签出日期之外的所有内容(请原谅差距,仍然可以在这里找出帖子的格式。)

  ID | Hotel | CheckIn  | CheckOut | NumPeak | PeakCost | NumNonPeak | NonPeakCost | TotalCost

   1 | CILBV | 04/06/12 | 04/08/12 | 0000001 | $118.00  | 0000001    | $159.00     | $277.00

1 个答案:

答案 0 :(得分:0)

您绝对应该能够构建一个接受签入和签出日期的查询,并返回总费用。关键信息是酒店对各个日期的收费标准。

假设表中有这样的列(如果它分散在多个表中,那么你将不得不用适当的内连接构建一个查询。)

hotel_id    peak_start_date    peak_end_date    peak_price    non_peak_price

棘手的部分是有很多可能的情况:

  1. 峰值之前开始和结束
  2. 在峰值之前开始,以峰值结束
  3. 在峰值之前开始,在峰值之后结束
  4. 从高峰开始,以高峰结束
  5. 从峰值开始,在峰值结束后
  6. 高峰后开始,高峰后结束
  7. 这就是开始和结束日期在同一年的情况;结帐时间是下一年还有六种情况。

    所以问题是如何最好地进行计算,高峰日数和非高峰日数#。你可以:

    1. 构建一系列复杂的嵌套IIF语句
    2. 使用VBA方法执行逻辑,首先从表中提取必要的信息
    3. 1和2的某种组合
    4. 我可能会去#3,构建一些简单的帮助器查询,但将实际的逻辑放入VBA方法。


      如果你尝试并陷入困境,你可以随时提出另一个问题(更具体的问题往往会得到更好的答案)。