使用Access VBA中的ADODB Connection对象将NULL参数传递给SQL存储过程

时间:2017-01-25 17:20:23

标签: access-vba adodb

我知道可以通过在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 param1param2,将结果返回到我的本地rsTest记录集。这一切都很好,我多年来一直在使用这种技术。我现在遇到一种情况,我需要能够传递一个NULL作为参数之一,但到目前为止我没有尝试过任何东西似乎工作。我试过传递一个空字符串,值Null和一个类型variant的局部变量设置为Null。这些都没有奏效。有人知道怎么做吗?存储过程中的参数类型为smalldatetime

1 个答案:

答案 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