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

    OVRDBF-Problem

    Hallo,

    ich habe ein kleines Problem mit dem Befehl OVRDBF.

    Folgendes:

    In einem RPGLE-Programm wird über eine logische Datei (nennen wir sie HUGOL1) auf eine physische Datei (HUGOP) zugegriffen.

    Nun existieren auch noch die physischen Dateien HUGO1301, HUGO1302, ..., HUGO1307.
    Diese Dateien sind von der Struktur her alle gleich.

    Das RPGLE-Programm wird mittels eines CLs mit Parameter (z.B. '1306') aufgerufen.
    Nun möchte ich mittels eines OVRDBF-Befehls die jeweils durch den Parameter angegebene physische Datei ansprechen.
    Z.B.:
    Code:
    CHGVAR     VAR(&FILE01) VALUE('HUGO' *CAT &JJMM)
    OVRDBF     FILE(HUGOP) TOFILE(TESTLIB/&FILE01)
    Jetzt, so der Gedanke, soll im RPGLE-Programm (dort steht HUGOL1) nicht auf HUGOP sondern auf HUGO1306 zugegriffen werden. Das hat leider bisher nicht funktioniert.

    Ich hoffe, dass ich den Sachverhalt verständlich beschrieben habe.

    Kann mir bei diesem Problem jemand helfen ?

    Vielen Dank.

    MfG
    Karlo

  2. #2
    Registriert seit
    Nov 2003
    Beiträge
    2.323
    Eine logische Datei kann nicht per OVRDBF vorübergehend an eine andere physische Datei gehängt werden. Du brauchst also entweder den passenden Zugriffspfad in den einzelnen physischen Dateien selbst, oder je physischer Datei eine eigene logische Datei mit Zugriffspfad. Und dann muß auf die im RPG-Programm verwendete Datei überschrieben werden.

  3. #3
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Hallo Karlo,

    das funktioniert so leider nicht.
    Eine Logische hat eine eindeutige Verbindung zu seiner Physischen und kann nicht mittels OVRDBF geändert werden.

    So wie du es machst, kannst du im RPG auf die Physische HUGOP zugreifen welche auf das zuvor mit OVRDBF angegebene HUGO1301 (oder was auch immer) verlinkt ist.

    Wenn ich mich nicht irre kannst du das gleiche Spiel auch mit Logischen machen.
    Also ein OVRDBF auf eine bestimmte Logische die auf dein HUGO13.. verweist.
    Du musst dafür jedoch für jedes HUGO13.. das du verwenden willst, auch die entsprechende Logische haben.

    Oder SQL

    lg Andreas

  4. #4
    Registriert seit
    May 2005
    Beiträge
    34
    @Pikachu:

    Die logische lässt sich nicht mit einer physischen Datei überschreiben - das führt zu einem Programmfehler. - Du hast die Antwort ja schon selber geändert. ;-)

    @Andreas:

    Ich habe leider nur die eine logische - da jeden Monat eine neue HUGOjjmm hinzukommt, hätte ich bald jede Menge logische Dateien.


    Gibts da (ausser SQL) sonst keine Lösung ?

  5. #5
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Im JOBLOG sollte noch mehr stehen.
    Eventuell ein Definitionsfehler in der F-Zeile.
    Oder du verwendest eine Key-Liste die von der Logischen nicht unterstützt wird usw...

  6. #6
    Registriert seit
    May 2005
    Beiträge
    34
    Hallo Andreas,

    die entsprechende Zeile im Programm sieht so aus:

    Code:
    FHUGOL1    if   e           k disk
    Die Keyliste ist folgendermassen definiert:

    Code:
    C     keyHUGOL1     klist                           
    C                   kfld                    feld01
    Diese Anweisungen funktionieren einwandfrei.

  7. #7
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Zuerst ist interessant was noch im JOBLOG steht!
    Da muss es noch andere Fehlermeldungen geben die auf das Problem hinweisen.

    Eventuell stimmt die F-Definition nicht mit dem Aufbau der Logischen.
    (z.B. sind Key-Felder in der LF vorhanden usw.)

    Aber vorher bitte JOBLOG nochmal unter die Lupe nehmen.

  8. #8
    Registriert seit
    May 2005
    Beiträge
    34
    @Andreas:

    Ich bin mir jetzt nicht sicher, ob ich verstanden habe was Du meinst.
    Das Joblog sieht so aus:

    Code:
    4 > call testlib/crthugo4c parm('1307')                            
        Bibliothek TESTLIB der Bibliotheksliste hinzugefügt.            
        Inhalt der Teildatei EPPLAP in Datei EPPLAP in TESTLIB gelöscht.
        Bibliothek TESTLIB aus Bibliotheksliste entfernt.
    EPPLAP ist die Ausgabedatei, welche im CL gecleart und im Programm wieder mit Daten gefüllt wird.

  9. #9
    Registriert seit
    Feb 2001
    Beiträge
    20.295
    Berücksichte den OVRSCOPE!
    Der ist Default *ACTGRPDFN, versuche es mal mit *JOB.

    Das CLP läuft immer in *DEFAULT, das ILERPG, wenn man nichts angibt, in QILE.

    Der OVRDBF gilt bei *ACTGRPDFN eben nur für die aktive ACTGRP.

    Alternativ gib im ILERPG an:

    H DFTACTGRP(*NO) ACTGRP(*CALLER)

    Ansonsten kann man alles Überschreiben, also PF mit LF und umgekehrt.
    Solange Keys und Aktualitätsid's passen gibts kein Problem.
    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
    Aug 2001
    Beiträge
    2.881
    Und warum machst Du das Überschreibungstrara überhaupt?
    Warum verwendest Du nicht das Schlüssel-Wort EXTFILE mit Variable in den F-Bestimmungen, füllst die Variable mit Datei-Namen und öffnest anschließend Deine Datei user controlled?

    Code:
    FHUGOL1    if   e           k disk     ExtFile(MyHugo) UsrCtl
    
    D MyHugo      S                     10A
     /Free
        MyHugo = 'ABC'
        Open HugoL1;
    oder übergibst den Datei-Namen als Parameter und verwendest die Parameter-Variable mit ExtFile, dann musst Du die Datei noch nicht einmal user controlled öffnen.

    ... und es klappt immer mit der Aktivierungsgruppe.

    ... und übrigens für den Zugriff auf eine Teildatei gibt es das Schlüssel-Wort EXTMBR(MyMember)

    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  11. #11
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Zitat Zitat von KaFi Beitrag anzeigen
    @Andreas:

    Ich bin mir jetzt nicht sicher, ob ich verstanden habe was Du meinst.
    Das Joblog sieht so aus:

    Code:
    4 > call testlib/crthugo4c parm('1307')                            
        Bibliothek TESTLIB der Bibliotheksliste hinzugefügt.            
        Inhalt der Teildatei EPPLAP in Datei EPPLAP in TESTLIB gelöscht.
        Bibliothek TESTLIB aus Bibliotheksliste entfernt.
    EPPLAP ist die Ausgabedatei, welche im CL gecleart und im Programm wieder mit Daten gefüllt wird.
    Du hast doch ein paar Beiträge zuvor eine Rxxxxx Fehler-ID gepostet. Diesen Post dürftest du nun geändert haben.
    Ich schätze nicht, dass CRTHUGO4C das Programm ist wo du mittels OVRDBF auf das richtige File zugreifen willst?!?

    ... Egal ... Ich finde die Lösung von Birgitta sehr gut!
    Einfach und schnell.
    Wenn es dein OS Release zulässt, würde ich es so machen.

    lg Andreas

  12. #12
    Registriert seit
    Nov 2003
    Beiträge
    2.323
    Und wenn du den physischen Dateien selbst den passenden Zugriffspfad gibst?

Similar Threads

  1. Problem mit Java-Methoden Aufruf aus ILE RPG?
    By Stoeberl in forum NEWSboard Programmierung
    Antworten: 8
    Letzter Beitrag: 10-01-07, 10:58
  2. Problem mit Steuerzeichen in Datenbank?
    By Stoeberl in forum NEWSboard Programmierung
    Antworten: 11
    Letzter Beitrag: 26-10-06, 10:07
  3. Authorization Problem nach ändern der Primary Group
    By ChrisX in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 11-10-06, 15:31
  4. Merkwürdiges Problem in VRPG
    By Flappes in forum IBM i Hauptforum
    Antworten: 0
    Letzter Beitrag: 06-10-06, 08:39
  5. Problem mit OVRDBF?
    By MatthiasK in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 08-02-06, 12:51

Berechtigungen

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