Anmelden

View Full Version : Warum funktioniert CALL QSYS.QCMDEXC über ADO mit AS400 Provider nicht ?



Tom74
04-06-09, 12:15
Hallo,

Ich muss von einem PC-Programm über ein ADO-Connection Objekt sowohl SQL-Statements als auch Systembefehle auf der AS400 ausführen.

Wenn ich als ConnectionString über eine ODBC Verbindung gehe


Provider=MSDASQL.1;Persist Security Info=False;Data Source=meine ODBC Datenquelle;funktioniert der folgende Befehl einwandfrei:


CALL QSYS.QCMDEXC('SNDMSG MSG(TEST) TOUSR(TEST)',0000000028.00000)Nehme ich aber als Provider den AS400 Provider, der mit Client Access installiert wird


Provider=IBMDA400;Data Source=Server IP; User Id=user; Password=passwort;so liefert der obige Befehl eine Fehlermeldung die besagt, dass die Zeichenkette ',0000000028.00000' nicht zulässig sei und eingentlich eine Klammer erwartet wird. Lasse ich diesen Teil aber weg, lässt sich der Befehl genauso wenig ausführen.

Ich möchte auf ODBC komplett verzichten und keine Unterscheidung von SQL-befehlen(AS400 Provider) und AS400-befehlen(ODBC Provider) machen müssen. Wie gehe ich da am besten vor ? Was gibt es da für Unterschiede ?

Grüße
Thomas

Fuerchau
04-06-09, 12:29
Bei ODBC erkennt SQL automatisch was du willst.
Bei OLEDB musst du den SQL anpassen:
{call MyProcedure (...)}
{{call ExtPgm (...) }}

B.Hauser
04-06-09, 12:33
Hallo,

mach mal ein *Blank nach dem 1. Komma und vor der 1. Null.


CALL QSYS.QCMDEXC('SNDMSG MSG(TEST) TOUSR(TEST)' , 0000000028.00000)

Es könnte sein, dass das Komma als Dezimal-Trennzeichen interpretiert wird.
ggf. müsstest Du auch mal 0000000028,00000 schreiben.

Birgitta

Tom74
04-06-09, 12:57
Danke,

es funktioniert jetzt.

(Das mit dem Blank hat funktioniert)

Viele Grüße
Thomas