首页 > 解决方案 > 多步 OLE DB 操作生成错误。检查每个 OLE DB 状态值

问题描述

请帮我。Excel VBA 抛出此错误:多步 OLE DB 操作生成错误

上线: cmd.Parameters("[days]") = ActiveWorkbook.Sheets("MABI_Extracts").Range("B18").Value

我正在尝试使用整数参数在名为“AGBA_Conversion”的访问中运行查询。我该如何解决?提前致谢 :)

Sub RECT_MBTCLeads2_Extracts()
Dim cmd As New ADODB.Command, rs As ADODB.Recordset
Dim sht As Worksheet
Dim b As String
Dim d As Long
Dim a As String

 
Set sht = ActiveWorkbook.Sheets("AGBA_Conversion")
sht.Range("B1").ClearContents

 


cmd.ActiveConnection = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\nemberga\OneDrive - AXA\Documents\Automation\MBTC Conversion.accdb"

 

cmd.CommandType = adCmdText
cmd.CommandText = "AGBA_Conversion"  '<<<--here is where you write your query sql
cmd.Parameters("[days]") = ActiveWorkbook.Sheets("MABI_Extracts").Range("B18").Value

 

Options = adCmdTable
Set rs = cmd.Execute
sht.Range("A1").CopyFromRecordset rs  '--bulk copy to the Excel sheet
rs.Close
cmd.ActiveConnection.Close

   
    
    MsgBox "All data were  successfully retrieved from the queries!", vbInformation, "Done"
    
End Sub

标签: excelvbams-access

解决方案


参数是参数的集合。您需要首先使用 CreateParameter 创建对象,然后使用 Append 将其添加到集合中。

代替

cmd.Parameters("[days]") = ActiveWorkbook.Sheets("MABI_Extracts").Range("B18").Value

经过

Dim p
Set p = cmd.CreateParameter("days", adInteger, adParamInput)
p.Value = ActiveWorkbook.Sheets("MABI_Extracts").Range("B18").Value
cmd.Parameters.Append p

请参阅https://docs.microsoft.com/fr-fr/sql/ado/reference/ado-api/append-and-createparameter-methods-example-vb?view=sql-server-ver15


推荐阅读