Wie Werte von einer gespeicherten SQL Server-Prozedur zurückgegeben und in Access VBA verwendet werden

8

Ich habe eine gespeicherte Prozedur in SQL Server eingerichtet, die einwandfrei funktioniert. Ich kann es jetzt von VBA aufrufen, möchte aber einen Wert zurückgeben, um zu wissen, ob Fehler aufgetreten sind. Der letzte Parameter in meinem SP ist als OUTPUT eingerichtet:

%Vor%

Mein VBA zum Aufrufen des SP ist unten, aber es wird jetzt nicht funktionieren, nachdem ich den neuen Parameter hinzugefügt habe und ich nicht sicher bin, wo ich falsch liege, bekomme ich 3708 - Parameter object is improperly defined. Inconsistent or incomplete information was provided. :

%Vor%

Wie kann ich den VBA dazu bringen, mit dem Parameter OUTPUT zu arbeiten und den Rückgabewert vom vba lesbar zu machen?

BEARBEITEN - Ich habe die Frage geändert, um genauer auf die Rückgabe von Werten einzugehen und nicht nur auf die Verwendung von OUTPUT-Parametern.

    
aSystemOverload 13.09.2012, 13:25
quelle

4 Antworten

7
%Vor%     
AnandPhadke 13.09.2012, 13:54
quelle
4

Ich habe mir zunächst die OUTPUT-Parameter angeschaut, konnte aber nicht herausfinden, wie ich sie zurück zu Access (in VBA) bringen kann, um dem Benutzer Feedback zu geben. Ein Kollege schlug vor, ein SELECT in der Stored-Prozedur zu verwenden und dies zu verwenden.

GESPEICHERTES VERFAHREN: Am Ende folgendes hinzugefügt:

%Vor%

VBA:

%Vor%

Dies gibt Folgendes zurück: Operation appears to have failed, check the DataSets Listing... Also, the Server returned the following information: [| errStatusOK / False || countCurrent / 0 || countHistorical / 10 |]

    
aSystemOverload 13.09.2012 13:58
quelle
4

Es gibt mehrere Möglichkeiten, um Werte mithilfe von VBA wiederherzustellen.

  1. Recordset
  2. Anzahl der betroffenen Datensätze (nur für Einfügen / Aktualisieren / Löschen, sonst -1)
  3. Ausgabeparameter
  4. Rückgabewert

Mein Code zeigt alle vier. Hier ist eine gespeicherte Prozedur, die einen Wert zurückgibt:

%Vor%

Hier ist das Sub, das ich in Excel VBA verwende. Sie benötigen einen Verweis auf Microsoft ActiveX Data Objects 2.8-Bibliothek.

%Vor%     
D_Bester 31.07.2015 07:44
quelle
2

Unter den anderen Parameteraufzählungen, von denen "adParamInput" genommen wird, ist eine andere "adParamOutput", die einen out-Parameter aus einer gespeicherten Prozedur und "adParamInputOutput" für einen Parameter angeben soll, der "beide Richtungen" nimmt wurden. In Ihrem Fall glaube ich, dass "adParamOutput" angemessen wäre. Ich hoffe, das ist was du suchst.

    
David W 13.09.2012 13:30
quelle