[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte
  1. #1
    Registriert seit
    Jun 2005
    Beiträge
    36

    Scott Klement - RPG-Zugriff auf SQL-Server

    Guten Tag zusammen!

    Vor einiger Zeit habe ich von Scott Klement eine Beschreibung gefunden, wie man von RPG aus auf einen SQL-Server zugreifen kann. Die Quellen habe ich für meine Anforderungen angepasst (nur den RPG-Teil!) und es funktioniert einwandfrei.... wenn der benötigte Server mal gerade da ist....
    Spaß beiseite: Es geht darum, dass zwar im Programm abgefragt wird, ob denn die Verbindung erfolgreich aufgebaut werden konnte, aber trotzdem erscheint eine sehr "unansehliche" Fehlermaske. Diese möchte ich nun gerne loswerden, schaffe es aber nicht.

    Kann mir hier jemand helfen?

    Diese "seltsame" Anzeige wollte ich im Anhang dieses Beitrags beifügen. Allerdings bekomme ich immer die Meldung, dass das Hochladen fehlgeschlagen ist für die angegebene JPG-Datei.


    Vielen Dank, Gruß, JIM

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.243
    In welcher Sprache ist Scott's Zugriff ?
    Hast du mal einen Link zur Quelle ?
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  3. #3
    Registriert seit
    Jun 2005
    Beiträge
    36
    Hallo Fuerchau,

    ja, Entschuldigung. Das hatte ich ganz vergessen.
    Hier zum Beispiel:
    http://www.pentontech.com/IBMContent...RpgAndJdbc.zip

    Ich dachte, dass bei der Erwähnung Scott Klements jeder gleich weiß, was ich meine...



  4. #4
    Registriert seit
    Jan 2008
    Beiträge
    90
    Hallo!

    Das wird die Java-Fehlerconsole sein.
    Ich habe das bereits erfolgreich mit einer Oracle-DB und jetzt auch mit SQL-Server umgesetzt.

    Es wird für den Zugriff auf die JDBC-Connection zugegriffen. Dazu werden Service-Programme verwendet.

    Man kann aber in dem RPG auf Fehlercodes abfragen.
    Es gibt da einen Funktionsaufruf JDBC_ConnProp und der liefert bei verbunden 6 zurück, sonst 0 (bei Oracle).

    Ich denke beim SQL-Server ist es ähnlich. Da fragen wir nur auf *NULL ab.

    Gruß,
    Günter

  5. #5
    Registriert seit
    Jun 2005
    Beiträge
    36
    Hallo Günter,

    JAVA-Fehlerconsole... hmmm, das klingt gut, so sieht das Ding auch aus...

    Das Problem ist nur, dass der Fehler in dem Serviceprogramm auftritt und ein Nullwert als Returnwert zurückkommt. Das kann ich dann in meinem RPG-Programm auch abfragen, dass das Programm dann beendet wird, aber die (naja, nennen wir sie weiterhin) JAVA-Fehlerconsole kommt trotzdem, bleibt ein paar Sekunden stehen und dann endet das Ganze normal. Nur die Benutzer fallen vom Stuhl wenn dieses Window erscheint und fangen hektisch an mit F3 oder anderem die Anzeige verschwinden zu lassen und im Extremfall --- wird rechts oben einfach die Session geschlossen. Darum wollte ich diese Anzeige gerne loswerden.

    Trotzdem danke für Deine Antwort!
    JIM

  6. #6
    Registriert seit
    Jun 2005
    Beiträge
    36
    Hallo Günter,

    da bin ich nochmal. Jetzt habe ich mir das mal im Debug angeschaut. Wenn die connection steht, ist der von Dir angesprochene Funktionswert 12. Aber (tut mir leid, aber ich bin ein dinosaurierartiges Relikt der reinen AS400-Programmierung vergangener Tage) WIE bitte kann ich den Wert abfragen? Das klappt weder alphanumerisch noch numerisch. Fragen über Fragen...

    Wäre für einen Hinweis echt dankbar.
    JIM

  7. #7
    Registriert seit
    Jan 2008
    Beiträge
    90
    Hallo Jim!

    Ich gehe mal davon aus, auch wenn du ein Dino bist
    daß du in ILE-RPG programmierst.

    Also hier ein paar Code-Schnipsel:

    conn = JDBC_ConnProp( 'oracle.jdbc.OracleDriver'
    : %trim( DB_Conn_Info )
    : prop );
    JDBC_freeProp( prop ) ;

    und dann für den Fehlerfall:
    If conn = *NULL
    ....

    bzw. wenn Verb. steht:
    If conn <> *NULL
    lesen, schreiben, etc.

    mehr machen wir auch nicht.

    Müßte mal probieren, ob die Java-Konsole kommt, wenn ich keine Verb. habe.
    Unsere Programme laufen aber auch nicht interaktiv sondern im Batch. Vielleicht bringt es was, den Zugriff in ein eigenes Programm auszulagern.

    Naja, will nicht zu weit ausholen,

    Gruß,
    Günter

  8. #8
    Registriert seit
    Jun 2005
    Beiträge
    36
    Hallo Günter,

    danke für die schnelle Antwort --- aber genau so sieht mein (ILE-RPG !!!) Code auch aus! Und trotzdem kommt die JAVA-Konsole.
    Sollte die Lösung wirklich darin liegen, dass ich diese Aktion im Batch mache? Das werde ich morgen gleich mal testen.

    Dino-Grüße,
    JIM

  9. #9
    Registriert seit
    Feb 2001
    Beiträge
    20.243
    Um die Javaconsole auszuschalten musst du diese beim Starten der JVM umleiten.

    Ggf. hilft hier ein
    OVRDBF FILE(STDOUT) TOFILE(QPRINT)
    OVRDBF FILE(STDERR) TOFILE(QPRINT)

    Wenn das nicht hilft, da ja Java in einem eigenen Job gestartet wird musst du Ausgabeumleitungen einbauen.
    Da ich Java nicht in RPG direkt starte sondern mit der QSH geht das in der Form:
    QSH CMD('java ... >/dev/null 2>/dev/null')

    Ggf. geht das auch irgendwie aus RPG.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  10. #10
    Registriert seit
    Jun 2005
    Beiträge
    36
    Guten Morgen Fuerchau!

    Super Tipp! Es scheint zu funktionieren mit den beiden OVRDBF-Befehlen. Da ja pro Job nur eine JVM gestartet werden kann, würde ja genügen, diese beiden Befehle einmal, z.B. gleich im Startprogramm, abzusetzen.

    Das sieht echt gut aus. Vielen Dank Dir Fuerchau und auch an Günter!

    Schönen Tag, Gruß,
    JIM

  11. #11
    Registriert seit
    Jun 2005
    Beiträge
    36
    Hallo zusammen!
    ES FUNKTIONIERT - ich bin begeistert.
    Den Ansatz mit dem Startprogramm musste ich verwerfen, da fast jeder User ein eigenens hat.
    Aber ich rufe nun aus dem RPG-Programm, in dem der SQL-Server-Zugriff erfolgt, einfach am Anfang ein CL auf, in dem die beiden Commands
    OVRDBF FILE(STDOUT) TOFILE(QPRINT) OVRSCOPE(*JOB)
    OVRDBF FILE(STDERR) TOFILE(QPRINT) OVRSCOPE(*JOB)
    ausgeführt werden. Selbst wenn die Überbschreibung schon existiert ist es dank MONMSG kein Problem.

    Tritt nun ein Fehler auf, z.B. keine Verbindung zum Server möglich, so wird in der QPRINT ein Spool erzeugt, der die entsprechenden, kryptischen Fehlermeldungen enthält. That's it.

    @Günter: Rufe ich das Programm OHNE die OVRDBF-Commands im BATCH auf --- passiert genau das Gleiche wie mit den OVRDBF. Dann erstellt das System (wohl mangels Alternative) auch diese Spoolfile! Das war also schon der richtige Ansatz.


    Danke nochmal. Vielleicht kann sich der "Dino" mal revanchieren???
    JIM

  12. #12
    Registriert seit
    Jun 2005
    Beiträge
    36
    Es geht ja noch "einfacher":


    D CMD PR EXTPGM('QCMDEXC')
    D COMMAND 200A CONST
    D LEN 15P 5 CONST

    :
    :
    :

    C CALLP CMD('OVRDBF FILE(STDOUT) TOFILE(' +
    C 'QPRINT) OVRSCOPE(*JOB)': 200)

    C CALLP CMD('OVRDBF FILE(STDERR) TOFILE(' +
    C 'QPRINT) OVRSCOPE(*JOB)': 200)



    Das freut mich jetzt so, dass das funktioniert, dass ich garnicht mehr von dem Thema ablassen kann.
    Für Euch ist die obige Info vielleicht ein alter Hut?
    Für mich "Dino" sind das neue Erkenntnisse. Aber vielleicht hat ja mal ein anderer Dino auch das Problem...
    Gruß, JIM

Similar Threads

  1. SQL zugriff zweimal auf selbe datei
    By steven_r in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 17-09-07, 20:51
  2. Hartcodierter OLE DB Zugriff auf AS/400-Datenbank
    By tschroeder in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 04-05-05, 09:21
  3. Zugriff auf PC Netzwerk
    By godfragger in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 13-05-04, 15:24
  4. EMBEDDED SQL in RPG
    By Ludger Muhmann in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 30-07-02, 09:49
  5. Zugriff auf AS/400-Ordner nicht möglich
    By Sven Keiselt in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 30-01-01, 12:33

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •