MS Access VBA代码中的错误:2147217900(80040e14)

时间:2018-10-08 10:39:12

标签: sql vba access-vba

由于我对VBA的了解很少,因此我正在MS Access数据库中使用一段预先编写的代码。

这是代码段:

If tbl.Name = "TEMP_LOAD" Then
            Set rs1 = New ADODB.Recordset
            rs1.Open "SELECT " & tbl.Name & ".[SPECIFICATION], CLng([" & tbl.Name & "]![SORT_SEQ]) AS SORT_SEQ, CLng([" & tbl.Name & "]![SORT]) AS SORT, CLng([" & tbl.Name & "]![SEQ]) AS SEQ, " & tbl.Name & ".[CLASS], " & tbl.Name & ".[CHAR], " & tbl.Name & ".[VALUE], " & tbl.Name & ".[VALIDITY_AREA], " & tbl.Name & ".[BUS_ID], " & tbl.Name & ".[TEXT_CAT], " & tbl.Name & ".[TEXT], " & tbl.Name & ".[DOKNR], " & tbl.Name & ".[ORD] FROM " & tbl.Name & " INNER JOIN CFG_Data_Providers ON " & tbl.Name & ".[CLASS] = CFG_Data_Providers.[Class] WHERE (((CFG_Data_Providers.[Data_Provider])='" & data_origin & "')) ORDER BY TEMP_LOAD.Total, " & tbl.Name & ".[SPECIFICATION], CLng([" & tbl.Name & "]![SORT_SEQ]), CLng([" & tbl.Name & "]![SORT]), CLng([" & tbl.Name & "]![SEQ]), " & tbl.Name & ".[ORD];", Application.CurrentProject.Connection

代码运行时,我得到Error: 2147217900(80040e14)在最后一行声明Invalid Use Of Nulls。我正在Windows 10上使用32位访问数据库。

有人知道这个错误的原因和解决方法是什么吗?

1 个答案:

答案 0 :(得分:1)

您很有可能在一个或多个字段中具有 Null 值,并且该值将失败-对于CLng(Null)

您应该可以改为使用 Int ,例如:

Int([" & tbl.Name & "]![SORT_SEQ])

,或者,如果返回的 Null 不可接受,请使用 Nz

CLng(Nz([" & tbl.Name & "]![SORT_SEQ],0))