【发布时间】:2021-08-06 14:06:28
【问题描述】:
我正在开展一个从计费角度跟踪损益的项目。我们有一个我用来跟踪费用的单件成本。最终用户希望能够在更新表格之前不时更改单件成本。我正在尝试使用宏从 Excel 工作表中的 sheet3 单元格 B2 中获取一个值,以便更新 SQL Server 中的表。我缺少一些东西,因为当我运行宏时它不会更新表。谁能告诉我我错过了什么。这是我第一次尝试使用 VBA,所以我暂时卡住了。
Sub UpdateSQLData()
Dim cnn As ADODB.Connection
Dim MySQL As String
Worksheets("Sheet3").Visible = True
Worksheets("Sheet3").Select
Set cnn = New ADODB.Connection
cnn.Open "Provider=SQLOLEDB.1;Initial Catalog=database;Data Source=server;UID=uid;PWD=pwd;"
Worksheets("Sheet3").Activate
For i = 2 To Range("B2").Select
MySQL = "UPDATE opi_bill_cost " & _
"SET Cost ='" & Range("B2").Value & "', Outcome = '"
cnn.Execute MySQL
Next i
cnn.Close
Set cnn = Nothing
End Sub
【问题讨论】:
-
您的 SQL 永远不会执行,因为 Range("B2").Select 返回 True,VBA 将解释为 -1。
-
你的 SQL 有引号包围似乎是一个数值,你是否从它的末尾删除了一些东西?