gpt4 book ai didi

sql - 从 VBA 调用 SQL 时的动态 WHERE 条件

转载 作者:行者123 更新时间:2023-12-02 07:48:48 27 4
gpt4 key购买 nike

在 Excel 中,我有一列 ID。我想根据 ID 列中的值从表中选择值。到目前为止,我已经得到了这个,其中 ws.Cells(i,10) 指的是 K 列中每行的值。

With ActiveSheet.ListObjects.Add(SourceType:=0, Source:=Array(Array( _
"ODBC;DSN=xxxx;Description=xxxxx;UID=xxx;APP=2007 Microsoft Office system;WSID=xxx" _
), Array("56;DATABASE=xxx;Trusted_Connection=Yes")), Destination:=Range( _
"$M$3")).QueryTable

For i = 1 To 691
sText = "SELECT Instrument.ID, Instrument.MATURITY FROM xxxx.dbo.Instrument Instrument WHERE Instrument.ID=" & ws.Cells(i, 10).Value & ""
.CommandText = Array(sText)
Next

End With

我在 sText 行上收到错误“424”,错误消息“需要对象”。

我也有预感这不是最好的方法。必须有一个更简单的设置来运行具有列中 WHERE 条件的 SQL。

感谢您的帮助!

最佳答案

我几乎肯定 iDevlop 是正确的 - 您尚 undefined variable ws,这会导致“需要对象”错误消息。

无论如何,您可能更喜欢这个解决方案:

Dim IDs as String
Dim ws As Worksheet
Set ws = ActiveSheet
IDs = Join(WorksheetFunction.Transpose( _
ws.Range(ws.Cells(1, 10), ws.Cells(691, 10))), ",")
.CommandText = "SELECT ... FROM ... WHERE Instrument.ID in (" + IDs + ")"

无需循环。

关于sql - 从 VBA 调用 SQL 时的动态 WHERE 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7878029/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com