将VBA中的Empty / Null Datevariables传递给SQL UPDATE语句

我有一个excel用户表单与各种文本框,一些是inputdate的字段。 用户然后可以保存他们的条目。

此时,我通过ADO连接连接到访问后端。 用户input的值传递给一个SQLstring,例如

strSQL = "UPDATE tblDECONVERSION_DATA SET tblDECONVERSION_DATA.Status = '" & NewBusiness_WorkQueue.Decon_CaseStatus & "', " & _ "tblDECONVERSION_DATA.DMS = '" & NewBusiness_WorkQueue.Decon_DMS & "', " & _ "tblDECONVERSION_DATA.DateRecieved = #" & Format(NewBusiness_WorkQueue.Decon_DateRecieved, "mm/dd/yyyy") & "#, " & _ "tblDECONVERSION_DATA.WireDate = #" & Format(NewBusiness_WorkQueue.Decon_WireDate, "mm/dd/yyyy") & "#, " & _ "tblDECONVERSION_DATA.LastEditXID = '" & CurrUser & "', tblDECONVERSION_DATA.LastEditDate = #" & Now & "# " & _ "WHERE (((tblDECONVERSION_DATA.CaseID)=" & ID & "));" adoRecSet.Open Source:=strSQL, ActiveConnection:=dbconnect, CursorType:=adOpenDynamic, LockType:=adLockOptimistic 

但是,某些date字段可以留空,例如NewBusiness_WorkQueue.Decon_DateRecievedvariables为空。 这会导致语法错误。 如何在VBA和Access数据库都可以接受的SQL语句中传递Null或Emptydatevariables?

 strSQL = "UPDATE tblDECONVERSION_DATA SET tblDECONVERSION_DATA.Status = '" & _ NewBusiness_WorkQueue.Decon_CaseStatus & "', " & _ "tblDECONVERSION_DATA.DMS = '" & NewBusiness_WorkQueue.Decon_DMS & "', " & _ "tblDECONVERSION_DATA.DateRecieved = " & _ DateOrNull(NewBusiness_WorkQueue.Decon_DateRecieved) & ", " & _ "tblDECONVERSION_DATA.WireDate = " & _ DateOrNull(NewBusiness_WorkQueue.Decon_WireDate) & ", " & _ "tblDECONVERSION_DATA.LastEditXID = '" & CurrUser & _ "', tblDECONVERSION_DATA.LastEditDate = #" & Now & "# " & _ "WHERE tblDECONVERSION_DATA.CaseID=" & ID & ";" 

一个示例函数:

 Function DateOrNull(v) As String Dim rv as String If IsDate(v) Then rv = " #" & Format(v, "mm/dd/yyyy") & "# " Else rv = " null " End If DateOrNull = rv End Function