我在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的双单引号,因为它是一个十进制。 感谢,
答案 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值
希望这有帮助!