PDA

View Full Version : Befehl aus VBA an iseries



Hubert
11-01-19, 09:47
Hallo zusammen,

ich versuche einen Befehl aus einem Word Makro per VBA auf der iseries zu starten.

Dim strSelect, strBefehl As String
Dim rsObjekt As New ADODB.Recordset

strBefehl = "WRKSPLF OUTPUT(*PRINT)"
strSelect = "CALL QSYS.QCMDEXC ('" & strBefehl & " ' " & Format(Len(strBefehl), "0000000000.00000") & ")"
rsObjekt.Open strSelect, conAuB


Dabei bekomme ich immer einen Laufzeitfehler:

-2147217887(80040e21)

Der ODBC Treiber unterstützt die angeforderte Eigenschaften nicht.

Der Connection String ist


strConnect = "Driver={iseries Access ODBC Driver};" & _
"System=10.0.30.10;" & _
"Uid=" & puser & ";" & _
"Pwd=" & pPassword & ";"

Muss ich einen anderen Treiber benutzen und wenn ja, welchen?

Installiert ist Iseries Access für Windows 6.0

Fuerchau
11-01-19, 13:01
Ein Kommando kann nur per Command-Objekt mit der Execute-Methode ausgeführt werden.
Dim MyCmd as new ADODB.Command
MyCmd.CommandText = strSelect
set MyCmd.ActiveConnection = MyConnection
MyCmd.Execute

Hubert
15-01-19, 13:26
Das hat leider auch nicht funktioniert, ich habe es jetzut anders gelöst.

Herzlichen Dank für die Mühe

Hubert

Fuerchau
15-01-19, 13:32
a) mit welcher Fehlermeldung hat das nicht geklappt
b) wie hast du es denn nun gelöst?

Also ich habe immer per CALL QCMDEXC erfolgreich Befehle per SQL abgesetzt.

Hubert
17-01-19, 11:10
ad a) Es ist die gleiche Fehlermeldung wie vorher
ad b) Ich habe das Programm auf der AS/400 erweitert, so dass die Informationen bereitgestellt werden, auch wenn ich sie nicht wirklich brauche.

Ich befürchte, dass es an Iseries Access liegt; möglicherweise muss ein Service Pack(PC) bzw. PTF(AS/400) eingespielt werden, denn bei der BS Sitzung funktioniert "Anmeldung umgehen" auch nicht. Ich lass das jetzt erst mal auf sich beruhen.

Vielen Dank für Deine Mühe

Hubert

Fuerchau
17-01-19, 17:26
"Anmeldung umgehen" wird über einen Systemwert gesteuert (ich weiß i.M. nicht welchen). Dort kann man Force-Signon einstellen, der das dann verhindert.

CALL QSYS.QCMDEXC(....) ging schon mit V3R2!

Aber vielleicht habe ich deinen Fehler ja gerade gesehen:

strSelect = "CALL QSYS.QCMDEXC ('" & strBefehl & "' , " & Format(Len(strBefehl), "0000000000.00000") & ")"

Parameter müssen in SQL nämlich mit Komma getrennt werden!!!