padawan
28-07-11, 10:47
Hallo,
MS ACESS, ADO, WIN XP, V5R4
Call auf der AS400 funktioniert einwandfrei, aber
ich möchte in VBA ein Call mit Parameter übergeben, bekomme aber folgenden Fehler:
SQL0103: Numerische Konstante 1456459C ungültig
Code AS400 (funktioniert) - Parameter werden hexadezimal übergeben:
PGM PARM(&VAR1 &VAR2)
DCL VAR(&VAR1) TYPE(*DEC) LEN(7 0)
DCL VAR(&VAR2) TYPE(*DEC) LEN(4 0)
DCL VAR(&VAR1A) TYPE(*CHAR) LEN(7)
DCL VAR(&VAR2A) TYPE(*CHAR) LEN(4)
/* */
CHGVAR VAR(&VAR1A) VALUE(&VAR1)
CHGVAR VAR(&VAR2A) VALUE(&VAR2)
/* */
CLRPFM FILE(DTALIB/MVREKP)
/* MONMSG MSGID(CPF0000) */
ADDLIBLE LIB(DTALIB)
MONMSG MSGID(CPF0000)
CALL PGM(OBJLIB/MVREKLA1) PARM(&VAR1A &VAR2A)
MONMSG MSGID(CPF0000)
/*** */
ENDPGM: ENDPGM
VBA Code:
Dim VAR1, VAR11, VAR2, VAR22, CallCmd As String
VAR1 = "1456459"
VAR11 = "X'" & VAR1 & "C'"
VAR2 = "0101"
VAR22 = "X'0" & VAR2 & "C'"
'CallCmd = "CALL OBJLIB/TTREKLA1(" & VAR11 & ", " & VAR22 & ")"
CallCmd = "CALL PGM(OBJLIB/TTREKLA1) PARM(" & VAR11 & ", " & VAR22 & ")"
Dim cnn As New ADODB.Connection
Dim cmd As ADODB.Command
'Dim CallCmd As String
cnn = New ADODB.Connection
cnn.Open ("Provider=IBMDA400;" & _
"Data Source=ICHAS;" & _
"User ID=USERE;" & _
"Password=PW;")
'CallCmd = "CALL OBJLIB/TTREKLA1 PARM(VAR1 VAR2)"
'cnn.Execute ("CALL QSYS.QCMDEXC ('" & CallCmd & "', " & Format(Len(CallCmd), "0000000000.00000") & ")")
cnn.Execute ("CALL QSYS.QCMDEXC ('" & CallCmd & "', " & Format(Len(CallCmd), "0000000000.00000") & ")")
cnn.Close
Fehler tritt bei cnn.execute auf.
Danke.
Gruss
Tobias
MS ACESS, ADO, WIN XP, V5R4
Call auf der AS400 funktioniert einwandfrei, aber
ich möchte in VBA ein Call mit Parameter übergeben, bekomme aber folgenden Fehler:
SQL0103: Numerische Konstante 1456459C ungültig
Code AS400 (funktioniert) - Parameter werden hexadezimal übergeben:
PGM PARM(&VAR1 &VAR2)
DCL VAR(&VAR1) TYPE(*DEC) LEN(7 0)
DCL VAR(&VAR2) TYPE(*DEC) LEN(4 0)
DCL VAR(&VAR1A) TYPE(*CHAR) LEN(7)
DCL VAR(&VAR2A) TYPE(*CHAR) LEN(4)
/* */
CHGVAR VAR(&VAR1A) VALUE(&VAR1)
CHGVAR VAR(&VAR2A) VALUE(&VAR2)
/* */
CLRPFM FILE(DTALIB/MVREKP)
/* MONMSG MSGID(CPF0000) */
ADDLIBLE LIB(DTALIB)
MONMSG MSGID(CPF0000)
CALL PGM(OBJLIB/MVREKLA1) PARM(&VAR1A &VAR2A)
MONMSG MSGID(CPF0000)
/*** */
ENDPGM: ENDPGM
VBA Code:
Dim VAR1, VAR11, VAR2, VAR22, CallCmd As String
VAR1 = "1456459"
VAR11 = "X'" & VAR1 & "C'"
VAR2 = "0101"
VAR22 = "X'0" & VAR2 & "C'"
'CallCmd = "CALL OBJLIB/TTREKLA1(" & VAR11 & ", " & VAR22 & ")"
CallCmd = "CALL PGM(OBJLIB/TTREKLA1) PARM(" & VAR11 & ", " & VAR22 & ")"
Dim cnn As New ADODB.Connection
Dim cmd As ADODB.Command
'Dim CallCmd As String
cnn = New ADODB.Connection
cnn.Open ("Provider=IBMDA400;" & _
"Data Source=ICHAS;" & _
"User ID=USERE;" & _
"Password=PW;")
'CallCmd = "CALL OBJLIB/TTREKLA1 PARM(VAR1 VAR2)"
'cnn.Execute ("CALL QSYS.QCMDEXC ('" & CallCmd & "', " & Format(Len(CallCmd), "0000000000.00000") & ")")
cnn.Execute ("CALL QSYS.QCMDEXC ('" & CallCmd & "', " & Format(Len(CallCmd), "0000000000.00000") & ")")
cnn.Close
Fehler tritt bei cnn.execute auf.
Danke.
Gruss
Tobias