访问#Error查询中的错误处理
Posted
技术标签:
【中文标题】访问#Error查询中的错误处理【英文标题】:Error Handling in Queries of Access #Error 【发布时间】:2015-07-02 17:03:51 【问题描述】:我正在处理 Access 中的考勤表,其中有 InTime
和 OutTime
。这些字段属于日期/时间字段。
有些记录只包含时间,如11:40:00
,有些记录包含日期和时间,如21-07-2015 11:45:00
。因此使用下面的代码来获得工作时间。
HrsPresent: Round(DateDiff("n",TimeValue(TimeSerial(Hour([TimeIn]),Minute([TimeIn]),Second([TimeIn]))),TimeValue(TimeSerial(Hour([TimeOut]),Minute([TimeOut]),Second([TimeOut]))))/60,2)
使用上面的代码,在查询的列中给出正确的工作小时数,但如果任何字段为空白,我会在结果中得到#error
。
我尝试过使用Nz
、IsError
、IsNumeric
,但都是徒劳的。
【问题讨论】:
【参考方案1】:您基本上只需要在执行计算之前确保两个必填字段都不为空。您可以使用两个 IIF
语句来做到这一点。如果一个字段是空白的,那么您只需分配一个默认值或按照您的意愿处理它。
在我的示例中,默认值为零,尽管这是徒手完成的,但我必须警告您,而且我对我的括号是否正确排列不是很有信心。另外,我很抱歉这一切都在一条线上,我想不出一种合乎逻辑的方法来分解它。
HrsPresent: IIF(Nz([TimeIn],"") = "", 0, IIF(Nz([TimeOut],"") = "", 0, Round(DateDiff("n",TimeValue(TimeSerial(Hour([TimeIn]),Minute([TimeIn]),Second([TimeIn]))),TimeValue(TimeSerial(Hour([TimeOut]),Minute([TimeOut]),Second([TimeOut]))))/60,2)))
有关IIF
语句的更多信息,您可以访问此处:http://www.techonthenet.com/access/functions/advanced/iif.php
【讨论】:
非常感谢,现在明白了,在哪里添加Nz
。我正在添加整个功能。
@Adarsh 没问题,很高兴我能帮上忙。以上是关于访问#Error查询中的错误处理的主要内容,如果未能解决你的问题,请参考以下文章