PDA

View Full Version : CALL aus EXCEL VBA



Eric
04-11-09, 19:06
Hallo,
ich möchte aus Excel VBA einen Befehl auf der AS400 ausführen, zB. runqry oder ein CL aufrufen, leider klappt das mit dem Script nicht :

Option Explicit
Sub as400()
Dim cnn As ADODB.Connection
Dim cmd As ADODB.Command
Set cnn = New ADODB.Connection
cnn.Open "Provider=IBMDA400;" & _
"Data Source=192.***.***.***;" & _
"User ID=********;" & _
"Password=********;"
Set cmd = New ADODB.Command
With cmd
.CommandType = adCmdText
.ActiveConnection = cnn
.CommandText = [HIER SOLL EINE ABFRAGE MIT ZB. "RUNQRY" GESTARTET WERDEN
z.B. runqry qry (LIB/ORY) oder mit call ein CL]
.CommandTimeout = 20
.Execute
End With
cnn.Close
End sub

Bitte um Hilfe, vielen Dank.
ERIC

Fuerchau
05-11-09, 08:21
Hierzu musst du einen CALL QCMDEXC verwenden, ein Command-Object ist dazu nicht nötig:

dim CallCmd as String

' Achtung: ggf. Hochkomma verdoppeln!
CallCmd = "runqry ..."

cnn.Execute "CALL QCMDEXC ('" & CallCmd & "', " & format(len(CallCmd), "0000000000.00000") & ")"

Eric
05-11-09, 17:28
Hallo,

hab nur noch diese kleine Änderung vorgenommen und schon klappte es !



von :
cnn.Execute "CALL QCMDEXC ('" & CallCmd & "', " & Format(Len(CallCmd), "0000000000.00000") & ")"


auf :
cnn.Execute "CALL QSYS.QCMDEXC ('" & CallCmd & "', " & Format(Len(CallCmd), "0000000000.00000") & ")"SUPER,vielen Dank
MFG ERIC

Eric
05-11-09, 17:37
Nochmals DANKE und so klappte es :


Option Explicit
Sub as400()
Dim cnn As ADODB.Connection
Dim cmd As ADODB.Command
Set cnn = New ADODB.Connection
Dim CallCmd As String


cnn.Open "Provider=IBMDA400;" & _
"Data Source=192.***.***.***;" & _
"User ID=********;" & _
"Password=********;"


CallCmd = "runqry qry([LIB]/[QRY])"
cnn.Execute "CALL QSYS.QCMDEXC ('" & CallCmd & "', " & Format(Len(CallCmd), "0000000000.00000") & ")"
cnn.Close


End SubDANK FUERCHAU