访问#Error查询中的错误处理

Posted

技术标签:

【中文标题】访问#Error查询中的错误处理【英文标题】:Error Handling in Queries of Access #Error 【发布时间】:2015-07-02 17:03:51 【问题描述】:

我正在处理 Access 中的考勤表,其中有 InTimeOutTime。这些字段属于日期/时间字段。 有些记录只包含时间,如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

我尝试过使用NzIsErrorIsNumeric,但都是徒劳的。

这是怎么回事,我做错了吗? 还有其他方式来获得工作时间吗?

【问题讨论】:

【参考方案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查询中的错误处理的主要内容,如果未能解决你的问题,请参考以下文章

php 中的错误处理机制

异常处理

未处理的异常访问冲突错误

Apollo GraphQL 本地和全局错误处理

MySQL存储过程错误处理

PHP 处理错误函数