首页 > 解决方案 > 如何在 Microsoft Access 查询中自动执行 CTRL + H 函数?

问题描述

我将数字显示为 Ranges Ex。3-7 天或 24-72 小时。我需要将这些更改为 168 或 72 之类的数字,以便最终可以进行比较或 if 语句。我知道我可以单击 CTRL H 并通过每个条件来格式化数据,但我一直在尝试找到一种方法来通过查询发生这种情况。我对 Access 很陌生,所以我可能认为这一切都错了。我尝试Expr1: Replace("0-4 Hours", "0-4 Hours", "4")在该字段中键入此内容,有时它会要求输入参数,但它只是创建了一个名为 Expr1 的列,其中包含参数。我遵循了我在这个网站上找到的替换功能的语法,所以我必须离开。

标签: vbams-access

解决方案


查询正在寻找一个名为0-4 Hours它当然找不到的字段,因此提示(应该总是发生,而不仅仅是有时,所以这是一个谜)。正确语法:
Expr1: Replace([fieldname], "0-4 Hours", "4").
但是,此计算结果将仅显示具有0-4 Hours值的记录。应该可以通过以下方式动态计算每条记录:

SELECT *, Val(Mid([fieldname], InStr([fieldname], "-")+1)) As Num FROM tablename;

每条记录都必须有值,因为 Null 会导致错误。

如果所有记录的单位(天、小时等)不同,这将变得更加复杂。如果 Days 和 Hours 是唯一涉及的单位,并且您希望将所有单位转换为 Hours:

Val(Mid([fieldname], InStr([fieldname], "-")+1)) * IIf(InStr([fieldname],"Days")>0,24,1) As Num

可能需要更多复杂性和 VBA 自定义函数。


推荐阅读