【发布时间】:2021-08-05 06:29:13
【问题描述】:
我正在创建一个自动文件以在单击按钮时更新 CurrencyTable (dB) 中的货币汇率。我参考了this post 中的示例。 我的Excel数据如下:
CsName Rate
AUD 1.23
BHD 2.23
BND 3.23
EUR 4.23
IDR 5.23
INR 6.23
MYR 7.23
OMR 8.23
SGD 9.23
THB 10.23
USD 11.23
代码似乎工作正常,但它没有根据 Excel 数据进行更新,相反,它只取了所有内容的第 4 行值。 Here are the updated result.
以下是我的代码:
Sub UpdateCR()
Dim con As New ADODB.Connection
Dim cmd As New ADODB.Command
Dim i As Long
Dim vDB As Variant
Dim Ws As Worksheet
con.ConnectionString = "Provider=SQLOLEDB.1;Password=1234;Persist Security Info=False;User ID=Guest;Initial Catalog=ABC;Data Source=XYZ"
con.Open
Set cmd.ActiveConnection = con
Set Ws = ActiveSheet
vDB = Ws.Range("a1").CurrentRegion
For i = 2 To UBound(vDB, 1)
cmd.CommandText = "UPDATE CurrencyTable SET Rate='" & vDB(i, 2) & "' WHERE CsName ='" & vDB(i, 1) & "' "
cmd.Execute
Next i
con.Close
MsgBox "Exchange rates successfully updated"
Set con = Nothing
End Sub
有人知道为什么会这样吗?和UBound函数有关系吗?
对此的任何帮助将不胜感激!
【问题讨论】:
-
你能像源代码一样显示结果吗,我无法访问工作中的图像。
-
嗨,第一个 vDB 是 vDB(i, 2) >> vDB(i, 2).value 的范围。和 rate 通常是 number (doable, single ) 并且你更新 string ?所以 ( ...SET Rate=" & vDB(i, 2) & " WHERE......)
-
您好@Nathan_Sav,Rate 列中的所有值都已更新为 4.23 作为第 4 行中的值。
-
嗨@xshen,我尝试使用 F8 进行检查,并且每行的值看起来都不错,直到行尾。但是一旦执行,更新的值就出错了。
-
我没有看到代码有任何问题,您可以在 cmd.Execute Cells(i,3) = "your update string" 之后再添加一行,看看它会打印什么