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

    Jobdatum beim Runqry

    Hallo Kollegen,
    wer kann mir einen Tip geben bei meinem folgenden Problem ?

    Ich möchte aus einem CL heraus ein RUNQRY starten und diesem ein bestimmtes Datum übergeben. Da ich nur die passenden Daten bekommen möchte. Das Datum wird von mir mit einem CMD eingegeben.

    Danke im Voraus !

  2. #2
    Registriert seit
    Aug 2001
    Beiträge
    2.893

    StrQmQry

    Zitat Zitat von Jenne
    Hallo Kollegen,
    wer kann mir einen Tip geben bei meinem folgenden Problem ?

    Ich möchte aus einem CL heraus ein RUNQRY starten und diesem ein bestimmtes Datum übergeben. Da ich nur die passenden Daten bekommen möchte. Das Datum wird von mir mit einem CMD eingegeben.

    Danke im Voraus !
    Hallo,

    ich nehme an, dass jeweils die Werte von einem bestimmten Datum auswerten willst.
    Wenn das Datum jeweils das System-Datum wäre, könntest Du es direkt im Query über Current(Date) ermitteltn.

    Handelt es sich um ein echtes Datum oder einen numerischen Wert?

    Für numerische und alphanumerische Felder gibt es folgende Möglichkeit. (Mit Datums-Feldern habe ich es noch nicht probiert!)

    1.Query-Definition muss erstellt sein
    2.Die Variablen Auswahlen müssen mit :FELD bei Sätze auswählen hinterlegt werden.
    Code:
             AND/OR  Feld              Test   Wert              
                     FIRNR             EQ     :PFINR            
              AND    ADTPA             EQ     :PTPA
    3. Das Query wird nicht mit RUNQRY, sondern mit STRQMQRY aufgerufen
    3.1. Die Variablen werden fix vorgegeben
    z.B. STRQMQRY QMQRY(MYLIB/MYQRY)
    ALWQRYDFN(*YES)
    SETVAR((PFINR 240) (PTPA '''E'''))

    3.2. Die Variablen werden variabel versorgt
    z.B. STRQMQRY QMQRY(MYLIB/MYQRY)
    ALWQRYDFN(*YES)
    SETVAR((PFINR &QryFiNr) (PTPA &QryTPA)

    Beispiel:
    Code:
                 PGM        PARM(&P$FINR &P$TPA)
             
                 DCL        VAR(&P$FINR)  TYPE(*DEC)  LEN(3)
                 DCL        VAR(&QryFINR) TYPE(*CHAR) LEN(3)
                 DCL        VAR(&P$TPA)   TYPE(*CHAR) LEN(2)
                 DCL        VAR(&QryTPA)  TYPE(*CHAR) LEN(4)
    
                 ChgVar     Var(&QryFiNr) Value(&P$FINR)     
                 ChgVar     Var(&QryTpa)                     
                            Value('''' *cat &P$TPA *Cat '''')
    
    /* Aufruf Query                                                 
                 StrQmQry   QmQry(MyQry)                  +       
                            Output(*PRINT)                  +       
                            QmForm(*QMQRY)                  +       
                            AlwQryDfn(*YES)                 +       
                            SetVar((PFINR &QryFiNr) (PTPA &QryTpa)) 
    
    EOP:        ENDPGM
    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

  3. #3
    Registriert seit
    May 2004
    Beiträge
    184
    Hallo Birgitta,

    die Query Definition ist vorhanden. Wenn ich die Variable in die Definition (:VAR) eingebe, kommt eine neue Maske in der ich etwas eingeben muss (???)
    Aber was ?


    Qualifikationsmerkmale für abhängige Werte angeben

    Auswahl eingeben und Eingabetaste drücken.

    Qualifikationsmerkmal 1 1=Abfrage, 2=Datei

    Abfrage oder Datei . . Name, F4=Dateiliste
    Bibliothek . . . . . Name, *LIBL, F4=Liste

    Bei 2=Datei:
    Teildatei . . . . . Name, *FIRST, F4=Liste

  4. #4
    Registriert seit
    Aug 2001
    Beiträge
    2.893

    Dummy

    Hi Jenne,

    diese Informationen sind nur beim Mischen für Mehrfachbriefe mit IBM OfficeVision/400 relevant, d.h. Du kannst irgendwas einfügen.
    Bei mir steht:
    Code:
                 Qualifikationsmerkmale für abhängige Werte angeben   
                                                                      
    Auswahl eingeben und Eingabetaste drücken.                        
                                                                      
      Qualifikationsmerkmal    2              1=Abfrage, 2=Datei      
                                                                      
      Abfrage oder Datei . .   DUMMY          Name, F4=Dateiliste     
        Bibliothek . . . . .     QTEMP        Name, *LIBL, F4=Liste   
                                                                      
      Bei 2=Datei:                                                    
        Teildatei  . . . . .   *FIRST         Name, *FIRST, F4=Liste
    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

  5. #5
    Registriert seit
    May 2004
    Beiträge
    184
    Hallo Brigitta,

    mein Query bricht mit STRQMQRY ab. SQL Fehlercode -104.

    Was mache ich bloß falsch ?

  6. #6
    Registriert seit
    Aug 2001
    Beiträge
    2.893
    Hallo Jenne,

    was hast Du gemacht?
    Das Query zu Fuss aufgerufen mit den Parametern?

    Hast Du bei alphanumerischen Feldern auch die richtige Anzahl an Hochkommata gesetzt?

    Die SQL-Fehler-Meldung sagt: Ungültiger Token.

    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

  7. #7
    Registriert seit
    May 2004
    Beiträge
    184
    Hallo Brigitta,
    eigentlich sollte alles richtig sein. Mit Runqry läuft der Job (natürlich ohne die Variablen, habe ein anderen Query aufgerufen)
    Ich analysiere noch !

  8. #8
    Registriert seit
    May 2004
    Beiträge
    184
    Hallo Brigitta,
    leider komme ich nicht mehr weiter.
    folgende QUERY Einstellungen sind bei mir vorhanden.

    Ergnisfelder :

    AKTIME current(timestamp)
    TAG day(t04.letzt_we)
    JAHR year(t04.letzt_we
    MONAT month(t04.letzt_we)
    DATUM substr(digits(Tag), 9, 2) !! '.'
    !! substr(digits(monat), 9, 2) !!
    '.' !!substr(digits(jahr), 7, 4)


    Sätze auswählen :
    T01.BESTMNG NE t01.menge_nach
    AND AKTIME RANGE t03.guelt_von t03.guelt_bis
    AND T01.MANDANT_NR EQ t04.mandant_nr
    AND T02.FILIAL_NR EQ t04.filial_nr
    AND T01.MANDANT_NR EQ 1
    AND DATUM EQ :AKTIME2


    Cl-Programm : (&DATUM = 'tt.mm.jjjj')
    STRQMQRY QMQRY(JENQRY/PSNAEI28B) ALWQRYDFN(*YES) +
    SETVAR((ADKTIME2 &DATUM))

  9. #9
    Registriert seit
    Aug 2001
    Beiträge
    2.893

    Datum

    Hallo Jenne,

    schau Dir nochmal mein Beispiel oben an.
    Du wirst feststellen, dass der alphanumerische Parameter um 2Byte länger ist, als das Original-Feld.

    Bei alphanumerischen Felder muss ein führendes und ein folgendes Hochkomma mit mit übergeben werden. Um ein Hochkomma darzustellen, müssen jeweils 2 Hochkommata (keine Anführungszeichen) codiert werden.

    Also:
    Code:
                 DCL        VAR(&P$Datum)   TYPE(*CHAR) LEN(10)
                 DCL        VAR(&QryDatum)  TYPE(*CHAR) LEN(12)
                 ChgVar     Var(&QryDatum)                     
                            Value('''' *cat &P$Datum *Cat '''')
                 StrQmQry   QmQry(MyQry)                    +       
                            Output(*PRINT)                  +       
                            QmForm(*QMQRY)                  +       
                            AlwQryDfn(*YES)                 +       
                            SetVar((PDatum &QryDatum))
    Schau Dir außerdem die Definition von Deinem Datum an. Ist das so wirklich in Ordnung?

    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

  10. #10
    Registriert seit
    May 2004
    Beiträge
    184
    Hallo Brigitta,

    alles so gemacht wie Du es mit beschrieben hast.
    Programm bricht trotzdem ab mit folgender Fehlermeldung :

    QWM2701 40 ESC Befehl STRQMQRY fehlges
    chlagen.
    CPF9999 40 ESC Funktionsprüfung. QWM27
    01 nicht überwacht durc
    h PSNTAGENDE bei Anweis
    ung 1102, Instruktion X
    '0039'.

    Habe den Wert für AKTIME2 manuell vorgegeben '18.05.2004'
    trotzdem kein Erfolg.

  11. #11
    Registriert seit
    Aug 2001
    Beiträge
    2.893

    Bibliotheks-Liste

    Hallo Jenne,

    QWM2701 deutet darauf hin, dass das Query nicht gefunden wurde.

    Du hast Dich also entweder irgendwo vertippt oder die Bibliotheksliste ist nicht korrekt.
    Ansonsten kann das Query natürlich auch qualifiziert aufgerufen werden:

    STRQMQRY QMQRY(MyLib/MyQry) ...

    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

Similar Threads

  1. RUNQRY mit Variablen
    By zannaleer in forum NEWSboard Programmierung
    Antworten: 10
    Letzter Beitrag: 07-11-06, 11:01
  2. cl und runqry - abfrage kopieren
    By FREIER in forum IBM i Hauptforum
    Antworten: 10
    Letzter Beitrag: 16-09-05, 09:26
  3. Eingabebibliothek im Query ändern / V5R2
    By Erni in forum IBM i Hauptforum
    Antworten: 24
    Letzter Beitrag: 19-11-04, 13:08
  4. Stapelverarbeitung in CL
    By THK in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 17-08-04, 09:25

Berechtigungen

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