PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Syntaxe de programmation dans l'instruction SELON
Syntaxe de programmation dans l'instruction SELON
Iniciado por debutant60, 12,jul. 2019 16:46 - 3 respuestas
Miembro registrado
1 mensaje
Publicado el 12,julio 2019 - 16:46
Bonjour,

Les zones de mon fichier AS400 sont :
XM01AM, XM02AM, XM03AM...... Jusqu'à XM90AM. Chaque zone a pour valeur un chiffre compris entre 0 et 9 qui correspondront a une couleur différente dans une table alimentée par programmation.

Dans un programme en WINDEV23 je boucle sur mon fichier AS400 pour lire tous les enregistrements.
Je construit la zone de mon fichier que je veux récupérer.

Ci-dessous mon code :

i est un entier = 1
POUR i = 1 À 90

// Construction du nom du champs du fichier que je dois lire
chChampsFichier est une chaîne = ""
chNombre est une chaîne = NumériqueVersChaîne(i)
SI i < 10 ALORS
chChampsFichier = "XM" + "0" + chNombre + "AM"
SINON
chChampsFichier = "XM" + chNombre + "AM"
FIN

//info ({chChampsFichier}) ==> ca me retourne bien la valeur stockée dans mon fichier AS400 pour la zone XM01AM par exemple.

SELON XM01AM
CAS 1 : Table1[enIndiceLigne, i]..CouleurFond = CyanPastel
CAS 2 : Table1[enIndiceLigne, i]..CouleurFond = JaunePastel
FIN
FIN

Je souhaiterais savoir quelle est la syntaxe à utiliser pour éviter de mettre en dur le nom de ma zone de fichier dans l'instruction "SELON" (sachant que je dois faire la même chose pour les 90 zones de mon fichier)

Si quelqu'un à une solution je suis preneur. :)

D'avance merci pour votre aide.
Miembro registrado
188 mensajes
Publicado el 12,julio 2019 - 17:03
Bonjour,

Je regarde le début et je remarque que tu pourrais remplacer ton code suivant :
SI i < 10 ALORS
chChampsFichier = "XM" + "0" + chNombre + "AM"
SINON
chChampsFichier = "XM" + chNombre + "AM"
FIN

Par un NumeriqueVersChaine(Valeur, "02d")
Genre :
chChampsFichier = "XM" + NumériqueVersChaîne(chNombre,"02d") + "AM"

Ce qui t'éviterais de tester les chiffres inférieures à 10

Juste une suggestion.

--
Corinne Bonhomme
Montréal, Canada
Miembro registrado
188 mensajes
Publicado el 12,julio 2019 - 17:12
info ({chChampsFichier})

info ({chChampsFichier,indRubrique}) --> spécifier le type d'indirection, normalement, c'est mieux et accélère le traitement

Et normalement ta valeur chChampsFichier contient bien le nom de ton champ

Donc, si j'ai bien compris, tout simplement
SELON chChampsFichier
CAS 1 : Table1[enIndiceLigne, i]..CouleurFond = CyanPastel
CAS 2 : Table1[enIndiceLigne, i]..CouleurFond = JaunePastel
FIN


Mais selon ta logique, si c'est le numéro de ta couleur que tu as dans ta rubrique, tu devrais écrire
SELON {chChampsFichier,indRubrique}
CAS 1 : Table1[enIndiceLigne, i]..CouleurFond = CyanPastel
CAS 2 : Table1[enIndiceLigne, i]..CouleurFond = JaunePastel
FIN


Si je n'ai pas compris ton problème, désolé

--
Corinne Bonhomme
Montréal, Canada
Miembro registrado
188 mensajes
Publicado el 12,julio 2019 - 17:20
SELON {NomTableAnalyse..nom+"."+chChampsFichier, indRubrique}
CAS 1 : Table1[enIndiceLigne, i]..CouleurFond = CyanPastel
CAS 2 : Table1[enIndiceLigne, i]..CouleurFond = JaunePastel
FIN


Ce serait peut-être encore mieux de spécifier le nom du fichier

Genre , si ton fichier s'appelait "CONFIG" dans ton analyse (tu n'as pas spécifié le nom du fichier dans ton texte)
SELON {CONFIG..nom+"."+chChampsFichier, indRubrique}
CAS 1 : Table1[enIndiceLigne, i]..CouleurFond = CyanPastel
CAS 2 : Table1[enIndiceLigne, i]..CouleurFond = JaunePastel
FIN


Et pour l'autre suggestion, je vois que c'est encore plus simple
// Construction du nom du champs du fichier que je dois lire
chChampsFichier est une chaîne = ""
chChampsFichier = "XM" + NumériqueVersChaîne(i,"02d") + "AM"


--
Corinne Bonhomme
Montréal, Canada