我正在尝试使用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 + "%'")
答案 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