访问查询中的错误处理#Error
Error Handling in Queries of Access #Error
我正在 Access 中处理出勤 table,其中我有 InTime
和 OutTime
。这些字段属于 Date/Time 字段。
有些记录只包含时间,如 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
,但都是徒劳的。
- 我做错了什么?
- 还有其他工作时间的方法吗?
您基本上只需要在执行计算之前确保两个必填字段都不为空。您可以使用两个 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
我正在 Access 中处理出勤 table,其中我有 InTime
和 OutTime
。这些字段属于 Date/Time 字段。
有些记录只包含时间,如 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
,但都是徒劳的。
- 我做错了什么?
- 还有其他工作时间的方法吗?
您基本上只需要在执行计算之前确保两个必填字段都不为空。您可以使用两个 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