由于我对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位访问数据库。
有人知道这个错误的原因和解决方法是什么吗?
答案 0 :(得分:1)
您很有可能在一个或多个字段中具有 Null 值,并且该值将失败-对于CLng(Null)
。
您应该可以改为使用 Int ,例如:
Int([" & tbl.Name & "]![SORT_SEQ])
,或者,如果返回的 Null 不可接受,请使用 Nz :
CLng(Nz([" & tbl.Name & "]![SORT_SEQ],0))