[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Sep 2006
    Beiträge
    162
    @chrissi
    habe einen Kollegen gefragt. Sein Stand ist OVRDBF und dann in Java SELECT *FROM Table...
    Sollte hier eine andere Antwort auftauchen, wäre er ebenfalls interessiert.

    Gruß
    DVE

  2. #2
    Registriert seit
    Jan 2007
    Beiträge
    75
    Ich denke das Problem ist, sobald ich mich bei der iseries neu einlogge, ist das OVRDBF nicht mehr aktiv!!

    Und wenn ich mit java auf die iseries zugreif baue ich ja eine neue sitzung auf und das OVRDBF ist nicht mehr aktiv.

    Also müsste ich irgendwie mit java nen iseries befehl ausführen können...

    blos wie?

  3. #3
    Registriert seit
    Jan 2007
    Beiträge
    75
    hmm,

    ich hab etz mal auf der as400 den OVRDBF mit *ALL ausgeführt....

    Aber wie ruf ich jetzt die Teildateien mit sql auf?

    Wenn ich jetzt SELECT * FROM Tabelle mach kommt immer der Fehler:

    *ALL der Art *MEM in *N nicht gefunden.



  4. #4
    Registriert seit
    Sep 2006
    Beiträge
    162
    Jetzt kann die Javafraktion loslegen.
    Deine Vermutung ist richtig. Sobald die Sitzung weg ist, ist der OVRDBF ebenfalls weg.
    Du könntest z.B. in SQL eine Stored Procedure definieren die den OVRDBF ausführt und dann dein SQL.
    Allerdings bin ich in diesen Dingen nicht gut genug.

    Gruß
    DVE

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Mittels CREATE ALIAS kannst du eine LF für SQL erstellen, die genau auf 1 Teildatei geht.

    OVRDBF aus Java geht nur, wenn du dies aus der SQL-Verbindung z.B. mit CALL QCMDEXC machst.
    Prozedur/Programmaufrufe aus SQL sind hier schon mehrfach beschrieben.

    Um alle Teildateien per SQL als 1 Tabelle zu bearbeiten kannst du einen CRTLF machen, der alle Teildateien beinhaltet. Allerdings darfst du dann keinen UNIQUE-Key haben, da dieser Teildateiübergreifend ist.

    Wenn eine Teildatei hinzukommt ist der CRTLF zu wiederholen, automatisch passiert da nichts.

    Um die Teildateien aus Java festzustellen kannst du per DSPFD ... OUTFILE über QDCMDEXC eine Liste erstellen um anschließend den OVRDBF je Teildatei (vor dem Select) durchzuführen.
    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

  6. #6
    Registriert seit
    Jan 2007
    Beiträge
    75
    hmmm....

    also irgendwie funtkioniert des mit dem OVRDBF nicht so ganz...

    Code:
    StringBuffer sql2 = new StringBuffer("CALL QTEMP.QCMDEXC('OVRDBF FILE(Datei) MBR(name der Teildatei)', Länge)");
          try { 
            stm.execute(sql2.toString()); 
          } catch (Exception e) {
            e.printStackTrace();
          }
          
          StringBuffer sql3 = new StringBuffer("SELECT * FROM Datei");
          ResultSet rs1 = stm.executeQuery(sql3.toString());
          
          while(rs1.next())
          {
            System.out.println(rs1.getString(3));
            
            
          }
    Er schreibt mir aber immer noch in den Inhalt von der *FIRST Teildatei hin....

    Kann es sein das das OVRDBF mit java nicht funktioniert?

    mfg

    chrisssiie

  7. #7
    Registriert seit
    Sep 2006
    Beiträge
    162
    Hallo Chrissie
    Schreib als Name der Teildatei *ALL.
    Laut Beschreibung des OVRDBF Befehl sollte es funktionieren.

    PHP-Code:
    *ALL                                                               
        
    [B]Alle Teildateien der aktuellen Datei werden sequentiell        
        verarbeitet
    .[/B] Die Überschreibungsparameter für die erste        
        Teildatei gelten auch bei der Eröffnung aller folgenden        
        Teildateien
    Während Überschreibungen, die vor Eröffnung der   
        ersten Teildatei ausgegeben wurden
    verarbeitet werdenwerden 
        nach Eröffnung der ersten Teildatei ausgegebene Befehle zum    
        Überschreiben oder Löschen von Überschreibungen nicht          
        berücksichtigt
    . Die Parameter EOFDLYFMTSLRINHWRT und       
        POSITION können nicht angegeben werden
    wenn MBR(*ALLin einem
        zuvor abgesetzten Befehl OVRDBF angegeben wurde und der Befehl 
        für diese Datei noch wirksam ist
    Falls Parameter angegeben    
        werden
    , die sich gegenseitig ausschließenwird eine           
        Abbruchnachricht gesendet

    Gruß
    DVE

  8. #8
    Registriert seit
    Dec 2002
    Beiträge
    301
    @DVE

    Wenn man mit OVRDBF den Parameter MBR auf *ALL setzt, dann kann man über SQL nicht auf die Datei zugreifen. Das klappt dann nur über Record Level Access.

    @chrisssiie
    Du könntest testweise noch einmal versuchen beim OVRDBF den Parameter OVRSCOPE auf *JOB zu setzen. Eventuell gibt es Probleme mit der Aufrufebene.
    Frank Hildebrandt

  9. #9
    Registriert seit
    Jan 2007
    Beiträge
    75
    @Frank Hildebrandt

    danke, das mit OVRSCOPE(*JOB) hat funktioniert

    Jetzt hab ich nur noch ein problem *grins*

    wie krieg ich alle DSPF(Displayfiles), die Teildateien sind raus?

    Gibt es da irgendwas wie ich die Art der Teildatei Abfragen kann?

  10. #10
    Registriert seit
    Dec 2002
    Beiträge
    301
    Hiermit kannst Du Dir eine Datei erzeugen, die die gewünschten Informationen enthält. Im Feld MLSEU2 befindet sich z.B. die Teildateiart, also z.B. DSPF.

    DSPFD FILE(QGPL/QDDSSRC) TYPE(*MBRLIST) OUTPUT(*OUTFILE) OUTFILE(QTEMP/MYMBR)
    Frank Hildebrandt

  11. #11
    Registriert seit
    Jan 2007
    Beiträge
    75
    ok, danke

    aber woher weis man sowas?

    bin noch anfänger in as400 bereich, wie man wohl merkt

    Gibts da irgendwelche gute seiten im www womer nach sowas suchen kann?

    Gibts bei der *MBRLIST auch ein Feld für den Namen der Teildatei?
    Oder muss man da noch ein DSPFD mit TYPE *MBR machen und dann MBNAME?

  12. #12
    Registriert seit
    Dec 2002
    Beiträge
    301
    Folgende Feldnamen in der erzeugten Datei sind für Dich wahrscheinlich wichtig.

    MLFILE - Datei z.B. QDDSSRC
    MLLIB - Bibliothek z.B. QTEMP
    MLNAME - Teildatei
    MLSEU2 - Teildateiart

    Die Feldinformationen zur Datei kannst Du Dir mit DSPFFD anzeigen lassen. Den Dateiinhalt kannst Du Dir z.B. über RUNQRY *N Dateiname anzeigen lassen oder über SQL.

    Woher die Leute über Dinge zur AS/400 Bescheid wissen? Sie ignorieren einfach die gesamte restliche Welt. Scherz beiseite. Das sind einfach Erfahrungswerte und wenn Du fleissig Beiträge postest, dann bist Du ganz schnell fitt.
    Frank Hildebrandt

Similar Threads

  1. RPGLE - SQL
    By christian_lettner in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 16-11-06, 10:15
  2. SQL - Fehler
    By Kaufmann in forum IBM i Hauptforum
    Antworten: 11
    Letzter Beitrag: 28-06-06, 14:11
  3. Teildateien per SQL auflisten
    By Nennewitz in forum NEWSboard Programmierung
    Antworten: 16
    Letzter Beitrag: 28-06-06, 13:49
  4. SQL .. for update of (RPG embedded SQL)
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 01-06-06, 09:43
  5. feldeigenschaften mit sql auslesen
    By apparat in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 18-09-05, 08:25

Berechtigungen

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