2

我正在尝试使用 VBA 中的嵌入式 SQL 访问 SQL 数据库。问题在于定义我想要访问的条件(ID > @Identifie是导致问题的部分)。当我运行代码时,我得到 Must declare the scalar variable @Identifie。但是,当我转到本地窗口时,@Identifie 已正确声明并具有我在单元格 K6 中分配的值。此外,如果我用某个值替换@Identifie我的条件 ( ID > @Identifie),我的代码运行完美,因此没有其他错误。看来我的问题来自 append 方法,但我无法弄清楚我做错了什么。

这是我的代码:

(我在这篇文章中删除了连接字符串,但这显然不是问题):

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
4

1 回答 1

0

为什么不:

cmd.CommandText = "Select ID, Issuer,LaunchDate,SettleDate,CADAmount,Description,Price,Currency, Maturity,IssuerID, Coupon FROM dbo.tblHistoricalIssuanceStats WHERE (IsProvy = 1) AND (ID > " & Last_total_ID & ");"

我认为您不需要使用 ADODB 参数。

于 2015-07-23T21:11:39.103 回答