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 ?
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 ?
Please also mark the comments that contributed to the solution of the article
Content-Key: 100313
Url: https://administrator.de/contentid/100313
Printed on: April 26, 2024 at 08:04 o'clock
2 Comments
Latest comment
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.