使用excel单元格值更新数据库中的条目 - 类型不匹配

时间:2014-09-22 07:21:38

标签: sql sql-server excel vba

我正在尝试使用Excel单元格中的数字更新SQL数据库中的条目。

当我尝试发送的数字没有小数部分时,代码工作正常,但如果数字有小数部分,则宏返回类型不匹配错误。

DB字段的类型是:(float,null)。 excel中的Cell格式为“常规”。格式化为“数字”会得到相同的结果。

我已经尝试了Range(“C2”)。值,但结果是一样的。 我应该如何读取单元格中的值以将其正确发送到DB?

Sub Send2DB()

    Dim conn As ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim sConnString As String
    Dim strResult As String

    ' Connection string.
    sConnString = .......

    ' Connection and Recordset 
    Set conn = New ADODB.Connection
    Set rs = New ADODB.Recordset

    ' Open connection
    conn.Open sConnString

    ' Read Cell
    Set rs = conn.Execute("UPDATE dbo.TABLE_A SET m_value = '" + Range("C2").Text + "' FROM TABLE_B AS b INNER JOIN TABLE_C AS c ON c.tc_id=b.tb_id WHERE c.ref_value LIKE '" + ActiveSheet.Name + "%'")

1 个答案:

答案 0 :(得分:0)

可能是由小数点分隔符引起的。 SQL Server期望'。'作为十进制分隔符,请尝试将您的分隔符(例如',')替换为'。'

update = "UPDATE dbo.TABLE_A SET m_value = " & VBA.Strings.Replace(Range("C2").Value, ",", ".")

Set rs = conn.Execute(update)

此代码将在SQL Server上以SQL:

执行
UPDATE dbo.TABLE_A SET m_value = 8.8