Argumentübergabe und Rückgabe eine gespeicherten Prozedur
MS-Access 2000, MS SQL-SERVER 2000, VBA ruft mittels *.adp eine gespeicherte Prozedur.
Fehler: Zu viele Argumente übergeben.
Ein *.adp Projekt unter MS-Access 2000 ruft eine gespeicherte Prozedur auf einem MS-SQL 2000 Server auf. (Das Textfeld eines Übungsformulars: hier TF_Param soll nur zum Testen der Übergabe verschiedener Werte dienen.)
I
Private Sub TF_Param_AfterUpdate()
Dim Param As ADODB.Parameter
Dim Com As ADODB.Command
'Neues Befehlsobjekt erstellen
Set Com = New ADODB.Command
'Eingabeparameter erstellen
Set Param = Com.CreateParameter("LB", adVarChar, adParamInput, 4)
Param.Value = Me.TF_Param.Value
Com.Parameters.Append Param
'Rückgabeparameter erstellen
Set Param = Com.CreateParameter("Return", adVarChar, adParamReturnValue, 20)
Com.Parameters.Append Param
Com.CommandType = adCmdStoredProc
Com.CommandText = "Meine_Procedure"
'Auslösen
Com.ActiveConnection = CurrentProject.Connection
Com.Execute
'Ergebnisse anzeigen
MsgBox Com.Parameters(0).Value & " " & Com.Parameters(1).Value
end sub
Die TestProzedur lautet:
CREATE Procedure Meine_Procedure
(
@lb varchar(4)
)
As
SET nocount on
DECLARE @rückgabe char(2)
Set @rückgabe = 'xx'
RETURN @rückgabe
Fehlermeldung: Für die Prozedur ' Meine_Procedure' wurden zu viele Argumente angegeben.
Wenn ich den Rückgabeparameter nicht erstelle, gibt es keine Fehlermeldung. Ich kann so aber nicht testen, ob die Übergabe der Werte und die Rückgabe sauber funktioniert.
Kennt jemand eine Lösung ?
Fehler: Zu viele Argumente übergeben.
Ein *.adp Projekt unter MS-Access 2000 ruft eine gespeicherte Prozedur auf einem MS-SQL 2000 Server auf. (Das Textfeld eines Übungsformulars: hier TF_Param soll nur zum Testen der Übergabe verschiedener Werte dienen.)
I
Private Sub TF_Param_AfterUpdate()
Dim Param As ADODB.Parameter
Dim Com As ADODB.Command
'Neues Befehlsobjekt erstellen
Set Com = New ADODB.Command
'Eingabeparameter erstellen
Set Param = Com.CreateParameter("LB", adVarChar, adParamInput, 4)
Param.Value = Me.TF_Param.Value
Com.Parameters.Append Param
'Rückgabeparameter erstellen
Set Param = Com.CreateParameter("Return", adVarChar, adParamReturnValue, 20)
Com.Parameters.Append Param
Com.CommandType = adCmdStoredProc
Com.CommandText = "Meine_Procedure"
'Auslösen
Com.ActiveConnection = CurrentProject.Connection
Com.Execute
'Ergebnisse anzeigen
MsgBox Com.Parameters(0).Value & " " & Com.Parameters(1).Value
end sub
Die TestProzedur lautet:
CREATE Procedure Meine_Procedure
(
@lb varchar(4)
)
As
SET nocount on
DECLARE @rückgabe char(2)
Set @rückgabe = 'xx'
RETURN @rückgabe
Fehlermeldung: Für die Prozedur ' Meine_Procedure' wurden zu viele Argumente angegeben.
Wenn ich den Rückgabeparameter nicht erstelle, gibt es keine Fehlermeldung. Ich kann so aber nicht testen, ob die Übergabe der Werte und die Rückgabe sauber funktioniert.
Kennt jemand eine Lösung ?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 100313
Url: https://administrator.de/contentid/100313
Ausgedruckt am: 24.11.2024 um 04:11 Uhr
2 Kommentare
Neuester Kommentar
Moin Moin
Meine Kenntnisse in VBA und SoreProc Programmierung sind zwar schon etwas eingerostet, aber so wie ich das sehe verwechselst du Rockgabecode und Rückgabeparameter.
Der Rückgabecode ist immer INT und wird mit RETURN gesetzt wie in deinem Bsp.
Rückgabeparameter mussen in der StoreProc deklariert werden, z.B.
Gruß L.
Meine Kenntnisse in VBA und SoreProc Programmierung sind zwar schon etwas eingerostet, aber so wie ich das sehe verwechselst du Rockgabecode und Rückgabeparameter.
Der Rückgabecode ist immer INT und wird mit RETURN gesetzt wie in deinem Bsp.
Rückgabeparameter mussen in der StoreProc deklariert werden, z.B.
CREATE Procedure Meine_Procedure(
@LB varchar(4),
@Ret varchar(4) OUTPUT )
As
SET nocount on
Set @Ret= 'xx'
Gruß L.