我知道可以通过在ADODB Connection对象上使用sp作为方法来调用SQL Server存储过程并在Access VBA中填充记录集:
Dim cnnTest As New ADODB.Connection
Dim rsTest As New ADODB.Recordset
cnnTest.ConnectionString = strMyConnectionString
cnn.Open
cnn.procMyTestProcedure param1, param2, rsTest
这将调用存储过程procMyTestProcedure
通过prarmeters param1
和param2
,将结果返回到我的本地rsTest
记录集。这一切都很好,我多年来一直在使用这种技术。我现在遇到一种情况,我需要能够传递一个NULL作为参数之一,但到目前为止我没有尝试过任何东西似乎工作。我试过传递一个空字符串,值Null和一个类型variant的局部变量设置为Null。这些都没有奏效。有人知道怎么做吗?存储过程中的参数类型为smalldatetime
。
答案 0 :(得分:0)
只需在VBA中使用null
。您使用哪种数据类型都没有关系。
即
Dim parm1 As ADODB.Parameter
Set parm1 = New ADODB.Parameter
parm1.Direction = adParamInput
parm1.Name = "StatisticsDate"
parm1.Type = adVarChar
parm1.Size = 50
If IsEmpty(wsCell) Then
parm1.Value = Null 'there is no DBNull - sorry
Else
parm1.Value = CDec(wsCell)
End If