[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    May 2004
    Beiträge
    444

    STRQMQRY Probleme mit Record Number

    Hallo zusammen,

    ich schon wieder mit einem anderen Problem

    Kurz das Problem als erstes.
    Ich führe aus STRQMQRY einen SELECT Feld FROM Datei aus und gebe eine 2. Datei aus. Die 2. Datei hat aber nicht immer die Satzreihenfolge wie die 1. Datei. Warum ist das so?

    Wir haben ein Tool (FMTJRNE) was mit DSPJRN die Daten aufbereitet

    Hierbei wird über DSPJRN eine Datei ausgegeben die #FMTJRN2 heißt
    Das Datenfeld aus #FMTJRN2 wird mittels STRQMQRY in eine Datei #FMTJRN3 ausgegeben.
    Der Befehl sieht wie folgt aus
    STRQMQRY QMQRY(ZUQXSQL) OUTPUT(&TYPE) +
    OUTFILE(&OLIB/&OFIL) OUTMBR(&OMBR +
    &ORPL) ALWQRYDFN(*YES) SETVAR((LINE01 +
    &LINE01) (LINE02 &LINE02) (LINE03 +
    &LINE03) (LINE04 &LINE04) (LINE05 +
    &LINE05) (LINE06 &LINE06) (LINE07 +
    &LINE07) (LINE08 &LINE08) (LINE09 +
    &LINE09) (LINE10 &LINE10))
    Es ist nur &LINE01 gefüllt und enthält
    &LINE01 = 'Select Joesd from QTEMP/#FMTJRN2'

    Den Rest erspare ich Euch, denn hier haben wir ab und an bereits einen Fehler, mit ab und an meine ich, mal funktioniert es und manchmal nicht und zwar folgendes:

    Später wird über die Relative Satznummer der #FMTJRN2 und der relativen Satznummer der #FMTJRN1 (was die richtigen Einzelfelder aus FMTJRN3 hat) ein Join (WHERE RRN(F1)=RRN(F2)) gemacht

    Das funktioniert immer dann wenn auch die Satznummern gleich sind. Bis vor gut einem Jahr hatten wir nie Probleme damit. Jetzt ist es aber so, dass die FMTJRN3 welche über STRQMQRY ausgegeben wurde nicht immer die gleiche Satzreihenfolge wie die in FMTJRN2 hat obwohl sie daraus erzeugt wird. Somit stimmen die Daten wie PROGRAMM und JOB nicht mehr zusammen zu den Daten. Wie gesagt, manchmal funktionierts manchmal nicht.

    Es gibt keine Indizes auf die #FMTJRN2, weiß jemand warum er in die Ausgabedatei dann eine andere Sortierreihenfolge verwendet wie die, die er schon hat?

    Was gibt es für alternative Tools?

    Ich hoffe ihr könnte mir weiter helfen.

    Viele Grüße Harald

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.234
    Ich würde nie mit einer RRN hier arbeiten. Im Journal gibts doch eine eindeutige Folgenummer die mit ausgegeben wird.
    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
    May 2004
    Beiträge
    444
    Das Problem ist, die Daten werden aus FMTJRN3 in eine Datei FMTJRN1 kopiert welche das gleiche Aussehen wie die Datei hat auf die der DSPJRN ausgeführt wurde.

    Also z.B. DSPJRN auf eine Datei Namens PF1
    Es wird ein CPYF (1 Satz) mit PF1 in FMTJRN1 gemacht mit CRTPF(*YES) somit hat FMTJRN1 das Aussehen der Ursprungsdatei.
    Dann DSPJRN in FMTJRN2
    Das Datenfeld aus FMTJRN2 in FMTJRN3
    Und dann ein CPYF von FMTJRN3 in FMTJRN1 mit NOCHK.
    Und jetzt FMTJRN2 und FMJRN1 verbinden. Das geschieht mit der relativen Record number da ich die Nummer aus dem DSPJRN ja dort nicht mehr habe.

  4. #4
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    ... schau dir mal
    http://bender-dv.de/Snippets.html#ANZJRN
    an.

    D*B

    PS: ist zwar schon ein wenig älter, sollte es aber tun.
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  5. #5
    Registriert seit
    May 2004
    Beiträge
    444
    @Bender
    Ich glaube das reicht mir. Das ist natürlich besser weil gleich eine Datei erstellt wird die alle Datenfelder beinhaltet. Perfekt. Ich versuche das mal in unser vorhandenes Programm einzubinden. Bei uns hier ist der FMTJRNE ein Command und wenn ich das richtig gesehen habe, wird im Beispiel eine Datei verwendet.

    Vielen Dank

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.234
    Wenn möglicherweise die Ausgabedatei noch existiert, solltest du die Replace-Option wählen oder gleich einen DLTF vorher einbauen.
    Die Alternative dazu ist ja nun statt STRQMQRY einen RUNSQL (ohne STMT) durchzuführen.
    Da kannst du einen "create or replace table as (select ....) with data" ausführen.
    Wenn die Sortierfolge der Quelle erhalten bleiben soll, hänge einen "order by rrn(file)" an.
    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

  7. #7
    Registriert seit
    May 2004
    Beiträge
    444
    Ich habe mir Teile von Benders Quelle geschnappt.
    Da wir ja mit dem Befehl arbeiten und dort die Möglichkeit von OUTFILE TYPE möglich ist, habe ich das Problem dass die DSPJRN Datei immer unterschiedlich aussieht.

    @Bender, du wählst in diesem Codebeispiel die Felder mit SELECT JO..., JO... usw aus. Ich hätte gerne SELECT *.J, *.D, aber bei *.J sollte das Datenfeld nicht dabei sein.

    Wahrscheinlich einfach hinterher einen ALTER TABLE DROP FELD oder kann ich bei der Erstellung irgendwas angeben dass er eine Spalte nicht dazu nimmt?

  8. #8
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    ... das ist kein Code"beispiel", sondern ein Programm, das den Namen der journalisierten Datei und von bis und den gewünschten Namen der Zieldatei als Parameter bekommt und dann universell eine strukturierte Zieldatei erstellt, die relevante Journalfelder und den aufgedröselten Datensatz enthält. Auch da kann man einen Command davorbasteln oder wenns denn sein muss, Felder weglassen oder dazu erfinden...

    D*B

    PS: mittlerweile gibt es da auch table_functions, wenn man das mit schlechterer Ergonomie haben will.
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  9. #9
    Registriert seit
    May 2004
    Beiträge
    444
    @BenderD
    Yupp schlechte Wortwahl von mir. Du benutzt allerdings keinen OUTFILE TYPE bei der Ausgabe. Deshalb meinte ich habe mir Teile des Programms was ich gebraucht habe heraus genommen. Durch den OUTFILE TYPE entscheidet dann der der den Befehl anwendet was "relevante" Journalfelder sind und was nicht. Da das hier schon drin war habe ich das vorhandene bei uns angepasst.

  10. #10
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    ... sorry, war nicht abwertend gemeint. Das Programm ist eines meiner persönlichen Toolumgebung, das es in mehreren Anpassungen gibt. Ich habe eine Variante davon vor 11 Jahren konsolidiert und als Open Source auf meine Webseite gestellt. Aktuell habe ich nicht nachgesehen, was das im Detail tut (und was nicht). Das ist ja auch open source, damit man das selber anpassen kann.

    D*B
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  11. #11
    Registriert seit
    May 2004
    Beiträge
    444
    @BenderD habe ich auch nicht abwertend verstanden. Die Quelle des Programms hat mir sehr geholfen und jetzt funktioniert unser Tool auch wieder. Vielen Dank.

    Viele Grüße Harald

Similar Threads

  1. Schleife hängt beim ersten Record
    By pabloesco in forum NEWSboard Programmierung
    Antworten: 9
    Letzter Beitrag: 17-07-20, 14:17
  2. Antworten: 2
    Letzter Beitrag: 01-03-18, 09:19
  3. Record compare
    By wti in forum NEWSboard Programmierung
    Antworten: 7
    Letzter Beitrag: 14-05-17, 14:08
  4. Record 367461 member PARTMASTER already locked to this job.
    By harkne in forum NEWSboard Programmierung
    Antworten: 10
    Letzter Beitrag: 08-12-15, 14:31
  5. Meldung von strqmqry übergehen
    By Robi in forum NEWSboard Programmierung
    Antworten: 8
    Letzter Beitrag: 25-06-14, 14:14

Berechtigungen

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