[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Sep 2006
    Beiträge
    162
    Mit OVRDBF sagtst du dem Programm welche Datei er tatsächlich benutzen soll.

    Du veränderst also keine Daten sondern nur den Zugriff.
    Beispiel: Du hast zwei Dateien die vom Aufbau gleich (also feldname und länge) sind aber in unterschiedlichen Bibliotheken stehen bzw. unterschiedlich heißen.
    Mit OVRDBF sagst du dem Programm welche Datei er benutzen soll. Damit kannst du je nach Anforderung einmal die eine Datei, ein andermal die andere Datei verwenden.
    Ein anderes Beispiel wäre in einem mehrmember Konzept. Wie soll das Programm wissen, welches Member gelesen werden soll. Auch hier bestimmst du durch OVRDBF vor dem Programmaufruf welches Member verarbeitet werden soll.


    Gruß
    DVE

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

    so würde es klappen!!

    Aber in java klappt es noch nicht.....

    ich benutze die jt400.jar von

    http://jt400.sourceforge.net

    um auf die as400 zuzugreifen.

    Ich muss alle Teildateien der Art DSPF(DisplayFile) einlesen und dann verarbeiten....

    Ich bekomme aber immer nur die 1. teildatei.


  3. #3
    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

  4. #4
    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?

  5. #5
    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.



  6. #6
    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

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    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

  8. #8
    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

  9. #9
    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

  10. #10
    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

  11. #11
    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?

  12. #12
    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

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
  •