MS使用布尔值访问calulcation

时间:2017-05-21 13:05:49

标签: ms-access

我正在尝试使用MS Access在查询中进行计算。我对此非常陌生,我几天前开始使用它,有些事情使我感到困惑。

我的计算涉及预订系统。因此,在系统中,用户可以预订成人,儿童和汽车选项(是/否)。通过将它们与我的DESTINATION表中的Cost字段相匹配,我可以为成人和孩子获得正确的计算结果。 E.g汽车价格,成人价格,儿童价格。需要注意的是,如果选中是/否框,用户可以通过将成人/儿童的数量乘以价格并添加汽车价值来查看下一个窗口中的总数。但我不知道如何将汽车价值添加到总数中,因为它是是/否。我有其他的计算只是把所有事情搞砸了,我来到下面的代码:

  

总计:IIf([BOOKING]![Car] = True,[BOOKING]![Car] = [DESTINATION]![Price   对于汽车],[预订]![汽车] = 1) [预订]![数量]   成人] [目的地]![成人价格] + [预订]![数量]   儿童] * [目的地]![儿童价格]

但是,它不会将汽车价格添加到总成本中。使用“查询设计”中“表达式生成器”中的上述代码设法阻止计算返回随机结果。我是以错误的方式来做这件事的吗?如果是这样,我该怎么做?

1 个答案:

答案 0 :(得分:1)

让我们在使用时解析Iif函数:

IIf(
    [BOOKING]![Car]=True,
    [BOOKING]![Car]=[DESTINATION]![Price for a Car],
    [BOOKING]![Car]=1
)

第一个参数是布尔值,可以是TrueFalse。第二个参数是第一个参数为True时返回的值,否则返回第三个参数。

您的第一个参数测试[BOOKING]![Car]=True。到现在为止还挺好。现在,如果该比较的计算结果为true,则返回第二个参数。由于您的第二个参数是[BOOKING]![Car][DESTINATION]![Price for a Car]的比较,因此会返回TrueFalse,而不是您可能希望它返回的内容:[DESTINATION]![Price for a Car]

只需从第二个和第三个参数中删除[BOOKING]![Car]=,一切都应该没问题。