我正在尝试在Excel中创建一个模板,供客户批量更新SQL Server数据库。
棘手的部分是几个数字列,例如,我正在测试的是Estimated_Amt
。该值可能为null,我尝试了仍然无法弄清楚当它为null时,如何将值传递给更新存储过程。
以下是我如何设置参数:
Estimated_Amt = .Cells(iRowNo,8)
If (.Cells(iRowNo, 8) = "") Then
cmd.Parameters.Append cmd.CreateParameter("@Estimated_Amt", adVarChar, adParamInput, DBNULL.Value)
Else
cmd.Parameters.Append cmd.CreateParameter("@Estimated_Amt", adVarChar, adParamInput, CStr(Estimated_Amt))
End If
我分别尝试了AdDouble
和AdDecimal
,并且从未成功捕获空值或空值,并且使用AdVarchar
仍然无法正常工作
调用程序部分如下:
cmd.CommandText = "SP_RIBulkyUpdate @CaseNumber = " & CaseNumber & ", " & _
"@Estimated_Amt = " & Estimated_Amt
有关正确设置输入参数的建议吗?感谢。
答案 0 :(得分:0)
您可以尝试DBNULL.Value
或vbNullString
(https://msdn.microsoft.com/en-us/library/microsoft.visualbasic.constants.vbnullstring(v=vs.110).aspx)而不是Null
。
即。
...
cmd.Parameters.Append cmd.CreateParameter("@Estimated_Amt", adVarChar, adParamInput, Null)
...