[NEWSboard IBMi Forum]
Seite 1 von 3 1 2 ... Letzte
  1. #1
    Registriert seit
    Jul 2001
    Beiträge
    45

    Post QRY und PARAMeter

    Hallo,

    ich weiß das es funktioniert und habe es früher auch schon mal gesehen.

    Wie kann ich einen Parameter an ein QRY übergeben.
    Ich glaube es wurde mit dem QMQRY gemacht.
    Ich möchte gerne eine Adresse an ein Qry übergeben und dann die Abfrage starten und die eine Datei ausgeben.
    Mann könnte das auch mit SQLRPG machen aber leider funzt das nicht bei uns.

    Wenn einer weiß wie es geht bitte schickt mir ein Beispiel...nur ein Kleines :-)

    Danke,
    HoScHiE
    Bye
    HoScHiE

  2. #2
    Registriert seit
    Jul 2001
    Beiträge
    177
    Hallo!

    Query und Parameter geht nur über den Befehl STRQMQRY.

    D.h. das Query wird quasi zur Laufzeit in ein QM-Query umgewandelt.

    Die Übergabe erfolgt durch den Parameter SETVAR...

    Übrigens:

    Der "QueryOptimizer" (www.queryopt.de) unterstützt auch in dieser Hinsicht...

    Grüße

    Andi Göring


  3. #3
    Registriert seit
    Aug 2001
    Beiträge
    2.873

    Post

    Wenn das Query direkt aufgerufen werden soll und der Benutzer in der Lage ist die Selektions-Kriterien zu bearbeiten, kann man auch über den RUNQRY-Befehl diese setzen.

    Wird der RUNQRY-Befehl wie folgt eingegeben, werden zunächst die Selektions-Kriterien angezeigt und können verändert werden. Anschliessend wird das geänderte Query durchgeführt.

    RUNQRY QRY(HAUSER/QUERY)
    RCDSLT(*YES)

    Vielleicht hilft's

    B. Hauser
    Birgitta Hauser

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

  4. #4
    Registriert seit
    Jul 2001
    Beiträge
    45

    Post

    Vielen Dank.

    ICh bevorzuge die QMQRY Variante.

    Hat vielleicht mal einer ne´n kleines Beispiel.

    1. Eingabe Adresse 100 - 200 per DSPF
    2. CL startet QMQRY "QRYAD" mit Felder aus DSPF
    3. Ausgabe als Datei "Datei1"

    Danke

    Bye
    HoScHiE

  5. #5
    Registriert seit
    Mar 2001
    Beiträge
    163
    Also Hoschie,

    hier die Antwort :

    ************************** Anfang der Daten ***********************
    SELECT
    -- Spalten
    A.LGSFAM, A.LGSFAN, A.LGSPA2, A.LGSFAQ, A.LGSPBA, A.LGSPAG
    -- Tabellen
    FROM "LL01W120"/"LGLJPS" A
    -- Zeilenauswahl
    WHERE ((LGSFAM = &COND1)
    AND (LGSFAN = &COND2)
    AND (LGSPA2 BETWEEN &COND3 AND &COND4)
    AND (LGSPFP > '19')
    AND (LGSPAG LIKE '%Ablö%'))
    -- Sortierspalten
    ORDER BY A.LGSFAM, A.LGSPA2, A.LGSPBA
    **************************** Ende der Daten ***********************

    im CL rufst du dann folgendes auf :

    STRQMQRY QMQRY(*LIBL/LGABLOESS) OUTPUT(&OUTPUT) +
    QMFORM(*LIBL/LGABLOES) SETVAR((COND1 +
    &QFIRMA) (COND2 &QBEREICH) +
    (COND3 &QVABT) (COND4 &QBABT))

    Ich hoffe Du kommst mit dieser Darstellung zurecht.

    Grüße aus dem QM

    Peter
    Viele Grüsse

    Peter

  6. #6
    Registriert seit
    Jul 2001
    Beiträge
    45

    Post

    Danke :-) ... aber wie erstelle ich so ein QM Ding ?

    Da muss ich doch ein Formular oder sowas angeben ?
    Wo gebe ich das SQL Statement ein ?

    Bin da leider keine helle Leuchte bei QMQry´s

    Danke

    Brauche eine Dateiausgabe...
    Bye
    HoScHiE

  7. #7
    Registriert seit
    Mar 2001
    Beiträge
    163
    Hallo Hoschie,

    wenn Du die im Select angegebenen Felder in eine Datei haben möchtest ersetzt Du einfach den Parameter &OUTPUT mit dem Wert *OUTFILE und gibst dan in den entsprechenden Parametern die Bibliothek und den Dateinamen mit. Ic habe in meinem Beispiel lediglich die Ausgabe variabel gehalten. Neue Reports kannst Du mit STRQM erstellen. Alles weitere führt hier jetzt wohl zu weit.

    Gruss
    Peter

    Ach ja ... Voraussetzung für STRQM ist ein installiertes ST1
    Viele Grüsse

    Peter

  8. #8
    Registriert seit
    Jul 2001
    Beiträge
    45

    Post

    Hallo,

    tja das wars wohl :-( kein QMQRY auf der Maschine keine RPGSQL .. :-(

    OK dann muss ich das wohl mit Qry machen.

    Danke

    Achja woran kann ich erkennen ob QMQRY auf der Maschine ist ?
    Bye
    HoScHiE

  9. #9
    Registriert seit
    Jan 2001
    Beiträge
    304

    Post

    Hallo HoScHie,
    auf der AS400: GO LICPGM, dann Auswahl 10, dann nach "57xxST1 DB2 Query Mgr and SQL DevKit für AS/400" suchen - das ist, was Du brauchst damit QMQRY geht.
    Gruss Reinhold
    R.Schreiber

  10. #10
    Registriert seit
    Jun 2001
    Beiträge
    727

    Post

    Hallo schreibr,
    CRTQMQRY und STRQMQRY sind Bestandteil vom OS/400.
    Das Lizenzprodukt 57xxST1 ist nicht notwendig !!!.
    57xxST1 brauchst du nur, wenn du
    - die SQL-Precompiler
    bzw.
    - interactives SQL benutzt.
    Ab V5R1 ist übrigens STRSQL (interactives SQL) kostenloser Bestandteil von OS/400

  11. #11
    Registriert seit
    Jun 2001
    Beiträge
    727

    Post

    Jetzt zum Thema :

    1. Lösung (Query Manager)
    - SQL-Source mit SEU erstellen
    - die Abfrage muss Variablen enthalten z.B.
    select * from QIWS/QCUSTCDT where state = &var1
    - Die Abfrage mit CRTQMQRY erstellen
    - Die Abfrage mit STRQMQRY ausführen
    Wird kein Wert im Parameter SETVAR eingegeben, fragt OS/400 die Variablen der Reihe nach ab.

    2. Lösung (Query/400)
    Diese Lösung ist nur für einfache Abfragen
    Sie stammt aus OV/400 Zeiten für Text-Merge.
    - Query mit WRKQRY erstellen
    - in "Sätze auswählen" z.B."STATE EQ :VAR1" eingeben. Abhängige Werte werden mit führendem ":" angegeben.
    - in der nachfolgenden Maske "Qualifikationsmerkmale für abhängige Werte angeben" irgend etwas gültiges eingeben.
    -Die Query/400-Abfrage mit STRQMQRY ausführen; der Parameter ALWQRYDFN(*YES) ist so zu setzen
    Wird kein Wert im Parameter SETVAR eingegeben, fragt OS/400 die Variablen der Reihe nach ab.

    Anmerkungen zum 2. Beispiel :
    Intern erstellt der Query Manager aus dem *QRYDFN-Objekt eine SQL-Abfrage.
    Die Umsetzung ist nicht immer korrekt.
    (z.B. funktioniert kein "left outer join" bzw. "Mit Primärdatei gleiche Sätze", wenn mehrere Dateien verknüpft werden)
    Am Besten ist es, wenn man mit dem Befehl RTVQMQRY (nicht vergessen ALWQRYDFN(*YES))
    aus dem *QRYDFN-Objekt eine SQL-Source erstellt. Die abgeleitete Source entspricht dem was STRQMQRY ausführt.

    Fazit:
    Lösung 1 ist am flexiblesten und benötigt kein zusätzliches Lizenzprodukt.


    [Dieser Beitrag wurde von Sven Schneider am 10. September 2001 editiert.]

  12. #12
    Registriert seit
    Jul 2001
    Beiträge
    56

    Angry

    Hallo Leute!

    Ich habe diesen Artikel mit Spannung gelesen und gleich mal ausprobiert. Das mit den Parametern funktioniert bei mir nur interakiv(STRQM). Wenn ich einen Parameter an ein CL übergebe und im CL STRQYQRM aufrufe, erhalte ich folgende Fehlermeldung:
    Operanden des Vergleichsoperators = nicht verträglich.
    Befehl RUN für Objekt QUERY mit SQLCODE -401 fehlgeschlagen.
    Der Parameter wurde richtig übergeben!
    Hat einer von euch eine Idee

    Vielen Dank im voraus
    Chera

    [Dieser Beitrag wurde von chera am 11. September 2001 editiert.]

Similar Threads

  1. SNDDST Parameter für Dateianhänge
    By Luebbert in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 23-11-06, 13:22
  2. Parameter empfangen in Free
    By kr1s in forum NEWSboard Programmierung
    Antworten: 6
    Letzter Beitrag: 08-09-06, 11:59
  3. Qry Layout
    By Jump4738 in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 22-08-06, 08:08
  4. sbmjob und ' im Parameter
    By muadeep in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 27-06-06, 11:31
  5. BNDDIR Parameter direkt in CBLLE-Quelle?
    By rebe in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 24-05-06, 19:37

Berechtigungen

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