2
我正尝试使用VBA中的嵌入式SQL访问SQL数据库。问题在于定义我想访问的条件(ID > @Identifie
是导致问题的部分)。当我运行代码时,我得到必须声明标量变量@Identifie
。但是,当我到我的本地窗口时,@Identifie被正确声明并具有我在单元格K6中分配的值。此外,如果我将我的条件(ID > @Identifie
)中的@Identifie
替换为某个值,我的代码运行完美,因此没有其他错误。看来我的问题来自append方法,但我无法弄清楚我做错了什么。使用参数化sql查询时必须声明标量变量
这里是我的代码:
(我删除了这篇文章的连接字符串,但这显然不是问题):
Option Explicit
Option Base 1
Sub LoadData()
Application.ScreenUpdating = False
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim cmd As New ADODB.Command
Dim lastID As Double
Dim parametre As New ADODB.Parameter
Dim Last_total_ID As Double
Last_total_ID = ActiveWorkbook.Worksheets("Consolidated").Range("K6").Value
cn.ConnectionString = ""
cn.Open
Set parametre = cmd.CreateParameter(Name:="@Identifie", Type:=adDouble, Direction:=adParamInput)
parametre.Value = Last_total_ID
cmd.Parameters.Append parametre
cmd.ActiveConnection = cn
cmd.CommandText = "Select ID, Issuer,LaunchDate,SettleDate,CADAmount,Description,Price,Currency, Maturity,IssuerID, Coupon FROM dbo.tblHistoricalIssuanceStats WHERE (IsProvy = 1) AND (ID > @Identifie)"
Set rs = cmd.Execute
它应该是'Set cmd.ActiveConnection = cn',因为cn是一个对象 – barrowc