PDA

View Full Version : Aufruf CL-Programme aus MS-Access



Franz Karl
24-08-12, 09:02
Hallo ,

ich habe hier aus dem Forum für dieses Thema die Lösung bekommen

CALL QSYS.QCMDEXC ('CALL LIB_CL/SIS@CL1', 0000000019.00000)


Funktioniert Tip-Top.

Meine Frage:

Wäre es auch noch möglich wenn das Programm auf der AS400 fertig ist, dass ich diese Nachricht im Access anzeigt bekäme oder geht das nicht ?

Danke
;)

andreaspr@aon.at
24-08-12, 09:56
Hallo,

Sobald dein CALL fertig ist, ist auch das Programm auf der AS/400 fertig. Wenn du in deinem CL kein Submit-Job machst.

lg Andreas

Franz Karl
24-08-12, 12:42
hallo,

vielen Dank für die Antwort - die CL's werden mit SUBMIT JOB aufgerufen - ich möchte nur erreichen das der Anwender der nicht auf "grün" arbeitet eine entsprechende Meldung bekommt wenn der Job beeendet ist.

andreaspr@aon.at
24-08-12, 12:59
Dann würde ich mal sagen, dass
*) entweder für den CALL aus Access kein SBMJOB gemacht wird
*) oder irgendwo (Bevorzugt in einer Tabelle) ein Flag gesetzt wird wenn das Programm fertig ist, dass später aus Access heraus abgefragt werden kann. Entweder durch den Benutzer (durch einen Aktualisieren-Button) oder durch das System selbst mittels Timer-Funktion in definierten Zeitabschnitten.

Oder jemand hat eine bessere Idee.

lg Andreas

Franz Karl
24-08-12, 13:21
Hallo ,

wie gesagt rufe das ganze wie folgt auf

1. ACCESS- PASS-THROUGH Abfrage

CALL QSYS.QCMDEXC ('CALL LIB_CL/SIS@CL2' (LIB_CL/SIS@CL2'), 0000000019.00000)

2. CL auf AS400

SBMJOB CMD(CALL PGM(LIB_CL/SISVER100))

andreaspr@aon.at
24-08-12, 13:32
Ja das habe ich schon verstanden.
Meine vorherige Antwort basierte auf diese Tatsache.

Im PGM das übergeben wird (SISVER100) kannst du ein Flag in eine Tabelle setzen, wenn das Programm kurz bevor das PGM endet.

Du musst im Access nur Asynchron diese Tabelle abfragen ob das Flag gesetzt wurde.

Franz Karl
24-08-12, 13:34
Hallo

ok danke. Dachte es gäbe eine andere Lösung - weil ja auf OS Seite eine Ende Meldung generiert wird - eben ob man die Richtung Access Oberfläche wie auch immer durchgeben könnte.

Aber das ist auch ein Weg

Danke

andreaspr@aon.at
24-08-12, 13:44
Das was du gerne hättest, wäre dass die AS/400 sich irgendwie auf deinen PC verbindet und ein Programm?/Befehl? aufruft welches dann die Information an die aktive Accessanwendung schickt.
(Da durch den SBMJOB das Programm nicht direkt über den Kommunikationsweg etwas zurücksenden kann)

Ich glaube die andere Lösung ist einfacher ;)

Fuerchau
26-08-12, 13:15
Rufe das Programm direkt auf.
Wenn es fertig ist kommt der SQL zurück (incl. ggf. Fehlermeldungen).

Sollte der User nicht darauf warten müssen, kannst du per Asynchron-Aufruf aus ADO den Befehl absetzen.
Auf dem Connection-Objekt kannst du auf das Ergeignis warten, bis der befehl fertig ist.