我正在尝试使用MS Access在查询中进行计算。我对此非常陌生,我几天前开始使用它,有些事情使我感到困惑。
我的计算涉及预订系统。因此,在系统中,用户可以预订成人,儿童和汽车选项(是/否)。通过将它们与我的DESTINATION表中的Cost字段相匹配,我可以为成人和孩子获得正确的计算结果。 E.g汽车价格,成人价格,儿童价格。需要注意的是,如果选中是/否框,用户可以通过将成人/儿童的数量乘以价格并添加汽车价值来查看下一个窗口中的总数。但我不知道如何将汽车价值添加到总数中,因为它是是/否。我有其他的计算只是把所有事情搞砸了,我来到下面的代码:
总计:IIf([BOOKING]![Car] = True,[BOOKING]![Car] = [DESTINATION]![Price 对于汽车],[预订]![汽车] = 1) [预订]![数量] 成人] [目的地]![成人价格] + [预订]![数量] 儿童] * [目的地]![儿童价格]
但是,它不会将汽车价格添加到总成本中。使用“查询设计”中“表达式生成器”中的上述代码设法阻止计算返回随机结果。我是以错误的方式来做这件事的吗?如果是这样,我该怎么做?
答案 0 :(得分:1)
让我们在使用时解析Iif
函数:
IIf(
[BOOKING]![Car]=True,
[BOOKING]![Car]=[DESTINATION]![Price for a Car],
[BOOKING]![Car]=1
)
第一个参数是布尔值,可以是True
或False
。第二个参数是第一个参数为True
时返回的值,否则返回第三个参数。
您的第一个参数测试[BOOKING]![Car]=True
。到现在为止还挺好。现在,如果该比较的计算结果为true,则返回第二个参数。由于您的第二个参数是[BOOKING]![Car]
和[DESTINATION]![Price for a Car]
的比较,因此会返回True
或False
,而不是您可能希望它返回的内容:[DESTINATION]![Price for a Car]
只需从第二个和第三个参数中删除[BOOKING]![Car]=
,一切都应该没问题。