我正在尝试通过VBA从DAO Recordset更新MS Access表。问题是,如果其中一个字段值为null。代码出错了。我可以使用IsNull(rst.Fields("FirstName").value,"")
这样的东西吗?我尝试使用它,但它会抛出错误"无效使用Null"。请帮忙。
strSQL = Update myTable SET myField ='" & rs.Fields("recField").Value & "' where id = 25
db.Execute strSQL
在这种情况下,rs.Fields("recField").Value
为空
答案 0 :(得分:0)
NZ
是MS Access的内置函数来处理空值
Nz(变体,[value_if_null])
Nz (rst.Fields("FirstName").Value, 0)
或者,您可以使用VBA IIF
语句。
IIf(Expression,TruePart,FalsePart)
要返回空字符串,请使用:
Nz (rst.Fields("FirstName").Value, "")
或IIf(rst.Fields("FirstName").Value, "", rst.Fields("FirstName").Value)
如果要更新的字段是数字,那么如果为null,则需要返回零值:
Nz (rst.Fields("FirstName").Value, 0)
或IIf(rst.Fields("FirstName").Value, 0, rst.Fields("FirstName").Value)
答案 1 :(得分:0)
您可以使用我的 CSql 函数here,如:
strSQL = "Update myTable Set myField = " & CSql(rs.Fields("recField").Value) & " Where id = 25"
这将是一个价值回报:
"Update myTable Set myField = 'ValueOfField' Where id = 25"
,值为Null:
"Update myTable Set myField = Null Where id = 25"