Création logique AS400 avec clés variables
OverSlach34
-
jylp Messages postés 3 Statut Membre -
jylp Messages postés 3 Statut Membre -
Bonjour,
La solution est une requête SQL créée sous QMQUERY qui autorise l'utilisation de variables.
1. se renseigner sur les droits de ton profil sur les cmd SELECT,
UPDATE, INSERT, etc. : STRQM Option gestion des profils
2. Vérifier que le type de l'option par défaut de création d'une
requête soit SQL (F19 pour en changer)
3. Reqête SQL QMQUERY
SELECT * FROM &BIB01/&FIC01
WHERE &ZON01 = &VAL01BIS (valeur de comparaison alpha)
ORDER BY &ZON02, &ZON03, &ZON01
Chaque variable est précédé de "&".
4. CL/CCLE
Les zones numériques et les zones alpha autres que de
comparaison doivent être déclarées en alpha de même longueur.
Les zones de comparaison alpha doit être chargées dans une
variable dont la longueur est égale à la longueur de la zone + 2
C.A.D : &VAL01 TYPE(*CHAR) LEN(7)
&COTE TYPE(*CHAR) LEN(1) VALUE('''')
&VAL01BIS TYPE(*CHAR) LEN(9)
(Ici COTE remplace QUOTE qui est un mot réservé)
/* Chargement d'une valeur de comparaison alpha */
CHGVAR VAR(&VAL01BIS) VALUE(&COTE *TCAT &VAL01 *TCAT &COTE)
/* Chargement d'une valeur de comparaison numérique */
CHGVAR VAR(&VAL01BIS) VALUE(&VAL01)
Il n'est pas important que la longeur de comparaison ait une taille identique mais la prudence serait de créer une seconde requête.
SELECT * FROM &BIB01/&FIC01
WHERE &ZON01 = &VAL01 (valeur de comparaison numérique)
ORDER BY &ZON02, &ZON03, &ZON01
Rappel:
- Toutes les variables transmisent doivent être de type *CHAR
- Les variables Alpha de comparaison doivent être chargées dans
une variable de longueur +2 => QUOTE + VARIABLE + QUOTE
/* Lancement de la requête */
STRQMQUERY => F4 te donnera les options
ATTN : Le nom des variables déclarés dans la requête SQL et celles identifiant les variables CL dans la CMD STRQMQRY doivent être identiques
Ex: REQUET01
SELECT * FROM &BIB02/&FIC01
STRQMQUERY(*LIBL/MAREQUET01)
PARM(BIB02 &BIB01, FIC01 &FIC01)
Tu remarqueras que l'identifiant de la variable &BIB01 est BIB02 qui correspond au nom de la variable déclarée dans la requête !
Remarque:
Le contenu chaque élément d'une requête peut être déclaré dans une variable. Le signe de comparaison '=' , la clause 'Where', etc.
La limite est dans la nécessité réelle de l'utilisation d'une variable.
Une requête QM bien construite remplacera un grand nombre de requêtes SQL statiques.
N'hésites pas à me contacter !
Bonne requête.
La solution est une requête SQL créée sous QMQUERY qui autorise l'utilisation de variables.
1. se renseigner sur les droits de ton profil sur les cmd SELECT,
UPDATE, INSERT, etc. : STRQM Option gestion des profils
2. Vérifier que le type de l'option par défaut de création d'une
requête soit SQL (F19 pour en changer)
3. Reqête SQL QMQUERY
SELECT * FROM &BIB01/&FIC01
WHERE &ZON01 = &VAL01BIS (valeur de comparaison alpha)
ORDER BY &ZON02, &ZON03, &ZON01
Chaque variable est précédé de "&".
4. CL/CCLE
Les zones numériques et les zones alpha autres que de
comparaison doivent être déclarées en alpha de même longueur.
Les zones de comparaison alpha doit être chargées dans une
variable dont la longueur est égale à la longueur de la zone + 2
C.A.D : &VAL01 TYPE(*CHAR) LEN(7)
&COTE TYPE(*CHAR) LEN(1) VALUE('''')
&VAL01BIS TYPE(*CHAR) LEN(9)
(Ici COTE remplace QUOTE qui est un mot réservé)
/* Chargement d'une valeur de comparaison alpha */
CHGVAR VAR(&VAL01BIS) VALUE(&COTE *TCAT &VAL01 *TCAT &COTE)
/* Chargement d'une valeur de comparaison numérique */
CHGVAR VAR(&VAL01BIS) VALUE(&VAL01)
Il n'est pas important que la longeur de comparaison ait une taille identique mais la prudence serait de créer une seconde requête.
SELECT * FROM &BIB01/&FIC01
WHERE &ZON01 = &VAL01 (valeur de comparaison numérique)
ORDER BY &ZON02, &ZON03, &ZON01
Rappel:
- Toutes les variables transmisent doivent être de type *CHAR
- Les variables Alpha de comparaison doivent être chargées dans
une variable de longueur +2 => QUOTE + VARIABLE + QUOTE
/* Lancement de la requête */
STRQMQUERY => F4 te donnera les options
ATTN : Le nom des variables déclarés dans la requête SQL et celles identifiant les variables CL dans la CMD STRQMQRY doivent être identiques
Ex: REQUET01
SELECT * FROM &BIB02/&FIC01
STRQMQUERY(*LIBL/MAREQUET01)
PARM(BIB02 &BIB01, FIC01 &FIC01)
Tu remarqueras que l'identifiant de la variable &BIB01 est BIB02 qui correspond au nom de la variable déclarée dans la requête !
Remarque:
Le contenu chaque élément d'une requête peut être déclaré dans une variable. Le signe de comparaison '=' , la clause 'Where', etc.
La limite est dans la nécessité réelle de l'utilisation d'une variable.
Une requête QM bien construite remplacera un grand nombre de requêtes SQL statiques.
N'hésites pas à me contacter !
Bonne requête.
A voir également:
- Création logique AS400 avec clés variables
- Creation compte gmail - Guide
- Création site web - Guide
- Création compte google - Guide
- Media creation tool - Télécharger - Systèmes d'exploitation
- Telecharger windows 8.1 avec clé d'activation gratuit - Guide
1 réponse
Bonjour,
Puique tu fais du RPG, je te donne ma méthode :
Je prpare dans une table mes instructions de la condition where
ex :
select xx, xx, xx
from client
Where codsoc='
' and codetb = '
etc et je finis par
' order by ...
Au debut de mon programme je construit une chaine
chaine = %trim(sql(1)) + %trimr(sql(2))+...
je teste les condition where à insérer
chaine=%trim(chaine)+%trimr(sql(3))+codsoc
etc...
Tu trouveras plein d'info dans SQL programming
Bonne lecture
Puique tu fais du RPG, je te donne ma méthode :
Je prpare dans une table mes instructions de la condition where
ex :
select xx, xx, xx
from client
Where codsoc='
' and codetb = '
etc et je finis par
' order by ...
Au debut de mon programme je construit une chaine
chaine = %trim(sql(1)) + %trimr(sql(2))+...
je teste les condition where à insérer
chaine=%trim(chaine)+%trimr(sql(3))+codsoc
etc...
Tu trouveras plein d'info dans SQL programming
Bonne lecture