Kaillou, Forum AS400

Forum AS400 et de discussions


    Paramètres passés à un Query

    Partagez
    avatar
    Shewolf
    Admin

    Nombre de messages : 190
    Localisation : 91 idf
    Emploi : Analyste Réalisateur / Chef de Projets

    Paramètres passés à un Query

    Message par Shewolf le Mer 31 Oct - 16:13

    Comment passer des paramètres à un query

    Passer des variables aux querys

    http://www.xdocs400.com/spip.php?article144



    Passer des variables aux querys
    dimanche 30 mai 2004, par Didier Encinas

    Cela peut paraitre surprenant, mais tout le monde ne se sert pas encore de SQL
    Certains utilisent encore QUERY, si, si, moi aussi




    Un excellent outil, d’ailleurs


    Ce pré-en-bulle ;-)) clos, venons en aux choses sérieuses

    Il existe une méthode simple pour executer des Querys avec des variables passées en paramètre.



    Créons un query ARTICLES.
    Précisons le/les fichiers à manipuler (ie : BASART)
    Dans l’option "sélection des enregistrements", on ajoute nos conditions. Pour celle(s) que l’on veut recevoir en variable, on les préfixe par " :"
    Champ test valeur
    CARTH2 EQ :CODART

    En appuyant sur ENTREE, l’écran suivant devrait apparaitre


    Type de qualifiant 1
    Query ou fichier INUTILE
    bibliothèque QGPL

    Le paramètre "Query ou Fichier" permet d’alimenter cette variable à partir d’un fichier ou du résultat d’un autre query. Dans notre exemple, on se contentera de passer la valeur en paramètre (voir plus loin)
    Il ne reste plus qu’à Sortir (F3)
    Un message d’avertissement devrait vous prévenir que ce Query a besoin de paramètres pour pouvoir s’executer.
    On va enfin pouvoir tester ce QUERY
    STRQMQRY QMQRY(mabib/ARTICLES) ALWQRYDFN(*YES)
    QMFORM(*QMQRY) SETVAR((CODART 0125440))
    Pour les variables de type Alphanumérique, on va "jongler" un peu.


    DCL VAR(&CHAR) TYPE(*CHAR) LEN(10)
    DCL VAR(&GUIL) TYPE(*CHAR) LEN(1) VALUE(X’7D’)
    DCL VAR(&TOT) TYPE(*CHAR) LEN(12)
    CHGVAR VAR(&TOT) VALUE(&GUIL *TCAT &CHAR *TCAT &GUIL)


    La variable &GUIL contient les quillements
    La variable &CHAR contient la valeur à tester
    La variable &TOT sera utilisée dans la commande STRQMQRY

    P.-S.
    A titre exeptionnel, vous avez eu droit à un petit baratin avant et après le bout de source.
    Certes, seul le petit bout de source vous est utile.
    D’ailleurs, c’est la seule partie que vous allez COPIER/COLLER
    Mais, pour faire plaisir a certains critiques,
    J’ai décider de faire un effort de rédaction.

    PS bis : allez quand même faire un tour dans "RECHERCHE" et demandez "tous les articles SQL"

    QUERYS, c’est bien, mais SQL, c’est tellement mieux !
    avatar
    Shewolf
    Admin

    Nombre de messages : 190
    Localisation : 91 idf
    Emploi : Analyste Réalisateur / Chef de Projets

    Re: Paramètres passés à un Query

    Message par Shewolf le Mer 14 Nov - 13:11

    2ième exemple avec une valeur numérique et une valeur alpha :

    La sélection dans le query :

    code

    Choix des enregistrements

    Entrez les comparaisons, appuyez sur ENTREE. Entrez OR pour un nouveau gro
    Tests : EQ, NE, LE, GE, LT, GT, RANGE, LIST, LIKE, IS, ISNOT...

    AND/OR Zone Test Valeur (Zone, Nombre, 'Caractères', ou ..

    W4TOUR EQ :PTOUR
    AND W4ISQC EQ :PSEQ




    Le CLP :

    code
    PGM
    /* ZONE ALPHA */
    DCL VAR(&PTOUR) TYPE(*CHAR) LEN(6) VALUE('306 ')
    DCL VAR("E) TYPE(*CHAR) LEN(1) VALUE(X'7D')
    DCL VAR(&PTOU2) TYPE(*CHAR) LEN(8 )


    /* ZONE NUMERIQUE */
    DCL VAR(&PSEC2) TYPE(*CHAR) LEN(7)
    VALUE('0000001') /* NUM7 DONT 0 DANS LE QRY*/

    CHGVAR VAR(&PTOU2) VALUE("E *TCAT &PTOUR *TCAT "E)

    STRQMQRY QMQRY(RPNLIB/LISTW4) ALWQRYDFN(*YES)
    SETVAR((PTOUR &PTOU2) (PSEQ &PSEC2))


    ENDPGM


      La date/heure actuelle est Sam 23 Sep - 2:13