将空白VBA变量插入SQL十进制(x,y)字段为Null

时间:2015-01-28 14:52:42

标签: vba excel-vba adodb sql-server-2014-express excel

我在Excel 2013 VBA中有一个ADODB命令,用于在表格中执行插入字符串,其中某些字段在我的SQL Server 2014中是十进制(x,y)。当我的Excel单元格为空时,我遇到问题将其作为NULL插入SQL。

VBA代码:

让我们说变量 sPrice 可以指向一个空的excel单元格。

sDate = .Cells(iRowNo, 1)
sPrice = .Cells(iRowNo, 2)
sQuantity = .Cells(iRowNo, 3)

我的插入的参数让我们说:

conn.Execute "INSERT INTO [dbo].[Prices] ([date], [Price], [Quantity])
              values ('" & SDate & "', " & sPrice & ",'" & sQuantity & "')"

注意SQL数据类型是:

[date] Datetime
[Price] Deciaml(28,12)
[Quantity] Real

所以我不包括sPrice的双单引号,因为它是一个十进制。 感谢,

1 个答案:

答案 0 :(得分:0)

您可以做的快速解决方法是将sPrice的值更改为" NULL"如果它的值是= 0

sDate = .Cells(iRowNo, 1)
sPrice = .Cells(iRowNo, 2)
sQuantity = .Cells(iRowNo, 3)

If sPrice = 0 Then
    sPrice = "NULL"
End If

conn.Execute "INSERT INTO [dbo].[Prices] ([date], [Price], [Quantity])
              values ('" & SDate & "', " & sPrice & ",'" & sQuantity & "')"

我不确定是否包含" NULL"是你正在寻找的,但你可以改变sPrice =" NULL"您的SQL DB将接受的任何值作为NULL值

希望这有帮助!