0
Ich versuche, eine parametrisierte SQL-Abfrage mit ADODB auszuführen, aber ich erhalte die Fehlermeldung "Muss die skalare Variable @Id deklarieren".VBA: Verwenden von ADODB-Parameter
Ich bin ein komplettes noob bei VBA und ich habe versucht zu lesen, wie es getan wird, als auch nach einem Beispiel, aber ohne Erfolg.
Hat jemand eine Vorstellung davon, was mit meinem Code falsch sein könnte?
Public Function IndataTest()
Dim conn As ADODB.Connection
Dim ConnString As String
ConnString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=True;Data Source=DB;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=B5037093;Use Encryption for Data=False;Tag with column collation when possible=False;Initial Catalog=DB"
Dim sqlstr As String Dim rs As Object Dim cmd As Object Dim ParamId As Object Dim Id As String
Id = 1084924
sqlstr = sqlstr & "use DB " sqlstr = sqlstr & "Select * " & vbCrLf sqlstr = sqlstr & "From tblA" & vbCrLf sqlstr = sqlstr & "where fldA = @Id"
Set conn = New ADODB.Connection conn.Open ConnString
Set cmd = CreateObject("ADODB.Command") cmd.ActiveConnection = conn cmd.CommandText = sqlstr
Set ParamId = cmd.CreateParameter("@Id", 129, 1, 52, Id) cmd.Parameters.Append ParamId
Set rs = CreateObject("ADODB.Recordset") rs.Open cmd
If Not rs.EOF Then
' Transfer result.
Sheets("Valuta").Cells(5, 5).CopyFromRecordset rs ' Close the recordset
rs.Close Else
MsgBox "Error: No records returned.", vbCritical End If
' Clean up If CBool(conn.State And adStateOpen) Then conn.Close Set conn = Nothing Set rs = Nothing
End Function