Ausführen einer gespeicherten SQL-Prozedur über Excel (VBA) mit mehreren Parametern

Ausführen einer gespeicherten SQL-Prozedur über Excel (VBA) mit mehreren Parametern

Danke für Ihre Hilfe, @FreeMan.

Ich bin damit jedoch immer noch ratlos.

Lassen Sie mich einfach von vorne beginnen.

Dies ist meine Anfrage in der Zusammenfassung (ich hoffe, sie ist klar)

SELECT DISTINCT Q1,Q2,Q3

from(SELECT A,B,C) Q1

full outer join

(SELECT A,B,C

from tblA as a

join tblB as b

on a.aID = b.bID

join tblC as c

on b.bID = c.cID

where (a,b, cdate <= ?

group by c) Q2

ON Q1.A = Q2.B

WHERE Convert(DATETIME, Q1.[B], 103) <= ?

order by Q1.[A]

When I try to refresh my table, I get the following error message

"[Microsoft][ODBC SQL Server Driver]Invalid Parameter number" and then

"[Microsoft][ODBC SQL Server Driver]Invalid Descriptor Index"

Ich benötige eine Methode, die es mir ermöglicht, diese Abfrage mit den Parametern in einer angegebenen Zelle, also Zelle C3, auszuführen.

Ich hoffe, dass dies die Dinge etwas klarer macht. Ich bin mit VBA nicht vertraut, daher sind alle oben empfohlenen Befehle für mich verwirrend.

Ursprüngliche Frage

*[Ich bin ein Neuling, was VBA angeht, und habe daher Probleme, meine Abfrage mit mehr als einem Parameter auszuführen. Ich verwende dieses Makro, aber wenn ich es ausführe, wird mir angezeigt, dass der zweite Parameter nicht angegeben wurde.

Sub RefreshQuery()

With ActiveWorkbook.Connections("MYSERVER").OLEDBConnection
    .CommandText = "EXECUTE dbo.Tng_Market_Feed '" & Range("B2").Value & "'"
End With
ActiveWorkbook.Connections("MYSERVER").Refresh

End Sub

Meine Fragen sind:- 1. Wie stelle ich die Variablen auf Datumsformate ein? Ich brauche einen Bericht, der mir alle Transaktionen <= ein bestimmtes Datum anzeigt (variabler Parameter). 2. Die Position der Variablen in der Tabelle, Zelle b2, bleibt für beide Parameter gleich. Ich brauche beispielsweise eine Liste aller Transaktionen <= 31.12.2014 und einen Wert/Summe der Wertberichtigungen für uneinbringliche Forderungen zum gleichen Datum, dem 31.12.2014.]*

Antwort1

Hier ist ein kurzes Beispiel zum Erstellen und Festlegen von Parametern innerhalb Ihres Codes:

Sub CreateParam()

     Dim oQuery As QueryTable
     Dim oParam As Parameter

     Set oQuery = Sheet3.QueryTables(1)

     oQuery.CommandText = Replace(oQuery.CommandText, "='Berlin'", "=?")

     Set oParam = oQuery.Parameters.Add("CityParam")

     oParam.SetParam xlRange, Sheet3.Range("J1")
     oParam.RefreshOnChange = True

     oQuery.Refresh

End Sub

Code schnell abgeschrieben vondicks-clicks.com

Im Grunde müssen Sie die .Parameter.Add()Zeile für jeden Parameter in Ihrer gespeicherten Prozedur ausführen, und schon kann es losgehen. Beachten Sie, dass Sie Sub()dafür kein Ganzes schreiben müssen, sondern die Set oParam = oQuery.Parameters.Add()Zeile einfach in Ihren vorhandenen Code einfügen können.

Möglicherweise möchten Sie sich etwas eingehender mit den Optionen befassen, da Sie die Art der zu sendenden Daten angeben und auch einen Parameter einrichten können OUT, um Daten von der Abfrage zurückzunehmen.

verwandte Informationen