Access 2007:如何使这个表达式不那么复杂?

Access 2007:如何使这个表达式不那么复杂?

Access 告诉我,我的新表达式太复杂了。以前我们有 10 个服务级别时,它还能正常工作,但现在我们有 19 个!太棒了!

我的表达式是在 [PriceCharged] 字段中检查我们服务的成本,然后在执行计算以计算出每位同事为客户工作时获得的收入时分配适当的小时数 [Servicelevel]。[EstimatedTime] 字段存储每位同事实际工作的小时数。

[EstimatedTime]/[ServiceLevel]*[PriceCharged]

太棒了。下面是我按小时计算成本的表达式的细分。我把它们放在不同的行上,以便于阅读——请不要被这篇文章的长度吓到,毕竟它们都是相同的信息。

非常感谢,迈克

服务级别:IIf([收费价格]=100(费用),6(小时),

IIf([pricecharged]=200 或 [pricecharged]=210,12.5,

IIf([收费价格]=300,19,

IIf([pricecharged]=400 或 [pricecharged]=410,25,

IIf([收费价格]=500,31,

IIf([收费价格]=600,37.5,

IIf([收费价格]=700,43,

IIf([pricecharged]=800 或 [pricecharged]=810,50,

IIf([收费价格]=900,56,

IIf([收费价格]=1000,62.5,

IIf([收费价格]=1100,69,

IIf([pricecharged]=1200 或 [pricecharged]=1210,75,

IIf([pricecharged]=1300 或 [pricecharged]=1310,100,

IIf([收费价格]=1400,125,

IIf([收费价格]=1500,150,

IIf([收费价格]=1600,175,

IIf([收费价格]=1700,200,

IIf([收费价格]=1800,225,

IIf([价格收费]=1900,250,0)))))))))))))))))))))))

答案1

您应该将表达式中使用的值存储在表中。这样,您就可以使用 SQL 连接和一些 IIf() 进行计算。而且,您将避免使用复杂的表达式(这几乎不可能调试)和对 VBA 的依赖(这将使您的查询在 Access 本身之外无法访问)。

答案2

您使用的是 JET 还是 Access?如果您使用的是 Access,请创建一个 VBA 函数,使用Select Case并将那堆乱七八糟的代码替换为GetServiceLevel([PriceCharged]) AS ServiceLevel。更好的方法是编写一个名为 的函数GetRevenue

也升级到 SQL Server。

答案3

该表达式在表格、报告或查询中的哪里使用?

我认为最好的方法是创建一个全局函数并使用该函数。

编辑:顺便说一下,已经尝试过了转变功能已经起作用了吗?

相关内容