Also ich hab das mal getestet :

Wenn ein Command wie QCMDEXC über das ADODB.Command Objekt aufgerufen wird, sind folgende Hostserver im Zugriff.

1. Remote-Command Server QZRCSRVS, wenn
.CommandText = "{{CALL QSYS/QCMDEXC PARM('ADDLIBLE LIB(LIBRARY1)' 0000000022.00000)}}"
oder
.CommandText ={{CALL /QSYS.LIB/QCMDEXC.PGM('ADDLIBLE LIB(LIBRARY1)' 0000000022.00000)}}

2. Database Server QZDASOINIT, wenn
.CommandText = "{CALL QSYS.QCMDEXC('ADDLIBLE LIB(LIBRARY1)', 0000000022.00000)}"
oder
.CommandText = "CALL QSYS.QCMDEXC('ADDLIBLE LIB(LIBRARY1)', 0000000022.00000)"

Da der ADDLIBLE ja im QZDASOINIT erfolgen soll, damit die Triggerprogramme gefunden werden, ist in den Beispielen eine {..} zu viel.
Zwei geschweifte Klammern rufen immer den Remote-Command Server, weile der CommandText dann von IBMDA400 als Command interpretiert wird und nicht als SQL-String !!!.

Hab das eben auch in der technischen Doku zu OLE DB für IBMDA400 gefunden (ist bei iSeries access als Windows-Hilfe Dokument cwbzmtch.hlp dabei):

"Einfache geschweifte Klammern geben an, dass eine gespeicherte SQL-Prozedur aufgerufen werden soll. Doppelte geschweifte Klammern geben an, dass ein iSeries-Programm aufgerufen werden soll."


Sven.