0

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

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

下表显示了一个日期范围,其中一晚费用为 118 美元,另一晚为 159 美元,总计 277 美元。我希望能够运行自动查询来填充总成本并删除除入住和退房日期之外的所有内容(请原谅间距不佳,仍在确定此处帖子的格式。)

  身份证 | 酒店 | 签到 | 结帐 | 数字峰值 | 峰值成本 | 数字非峰值 | 非峰值成本 | 总消耗

   1 | CILBV | 2012 年 4 月 6 日 | 2012 年 4 月 8 日 | 0000001 | $118.00 | 0000001 | $159.00 | $277.00
4

1 回答 1

0

您绝对应该能够构建一个接受签入+签出日期的查询,并返回总成本。关键信息是酒店对每个日期范围的收费。

假设该表有这样的列(如果它分散在多个表中,那么您必须使用适当的内部连接构建查询)。

hotel_id peak_start_date peak_end_date peak_price non_peak_price

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

  1. 高峰前开始和结束
  2. 高峰前开始,高峰结束
  3. 高峰前开始,高峰后结束
  4. 高峰开始,高峰结束
  5. 高峰开始,高峰结束
  6. 高峰后开始,高峰后结束

这只是开始+结束日期在同一年的情况;下一年结帐时还有六种情况。

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

  1. 构造一系列复杂的嵌套IIF语句
  2. 使用 VBA 方法执行逻辑,首先从表中提取必要的信息
  3. 1和2的某种组合

我可能会选择#3,构建几个简单的帮助查询,但将实际逻辑放入 VBA 方法中。


如果您尝试并遇到困难,您可以随时在这里提出另一个问题(更具体的问题往往会得到更好的答案)。

于 2012-09-10T17:32:08.890 回答