0

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

IE。

VBA代码:

假设变量sPrice可以指向一个空的 excel 单元格。

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

我的 Insert 的论点可以说:

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

SQL 数据类型中的注意事项是:

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

所以我不包括 sPrice 的双单引号,因为它是小数。谢谢,

4

1 回答 1

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 值的任何值

希望这可以帮助!

于 2015-01-28T18:43:00.863 回答