PDA

View Full Version : Remote Funktionen mit MS Access aufrufen



Seiten : 1 [2]

andreaspr@aon.at
19-02-10, 12:52
mit
Set rsAS400 = cmdAS400SQL.Execute
bekommst du einen datensatz zurück.

wie die syntax in vb aussehen muss, weis ich leider nicht. entweder mit F1 auf das objekt bzw. in der MSDN nachschauen gehen oder googlen.
vlt. gibts aber noch jemandem der sich da genau auskennt.

tw89
19-02-10, 13:01
Ok,

können wir das kurz nochmal aufschlüsseln?

Aufruf der Funktion!, Die Fragezeichen in den Klammern bedeuten das hier Parameter eingefügt werden, oder?


cmdAS400SQL.CommandText = "{call ILS_ABRUF.ILS_ADD_Abrufpack (?, ?, ?)}"

Insgesamt muss ich 3 Parameter übergeben?! Das mache ich mit:
Die erste Stelle ist der Wert, die Zweite die Deklaration (integer), und das dritte sagt aus ich füge einen Parameter hinzu (adParamInput)? Richtig?


cmdAS400SQL.Parameters.Append = cmdAS400SQL.CreateParameter("@nPackStueckId", adInteger, adParamInput)

2. Parameter?


cmdAS400SQL.Parameters.Append = cmdAS400SQL.CreateParameter("@nAbrufId", adInteger, adParamInputOutput)

3. Parameter?

cmdAS400SQL.Parameters.Append = cmdAS400SQL.CreateParameter("@nError", adInteger, adParamOutput)

Fuerchau
19-02-10, 14:03
Bei Funktionen (Aufruf Select) kannst du nur adParamInput verwenden, bei Prozeduren (Aufruf Call) gibts du alles an.

Wenn du keine NULL-Werte verarbeiten willst, dann reicht (wie Dieter sagt), Parameterstyle generell und du kannst jedes Programm, dass keine Strukturen sondern nur einzelne Werte verwendet definieren und aufrufen.

Führe einfach per cnnAs400.Execute folgenden Befehl aus:

CREATE PROCEDURE MyLib/MyPgm
(IN Parm1 Integer
,INOUT Parm2 Integer
,OUT Parm3 Integer
)
LANGUAGE RPG
DETERMINISTIC
EXTERNAL NAME 'MyLib/MyPgm'
PARAMETER STYLE GENERELL

Wichtig ist, dass die Parameter deines AS/400-Programmes zu den SQL-Typen auch passen.
Integer ist in RPG "B 9 0", in ILERPG "10I 0".

Ansonsten kannst du auch CHAR, VARCHAR usw. verwenden.

Wenn der Execute auf Fehler läuft, gibts eigentlich nur 3 Gründe:
1. Syntaxfehler
2. Journalisierung inaktiv und Connection ist nicht mit CMT=0
3. Prozedur schon vorhanden