|
| 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
chChampsFichier est une chaîne = "" chChampsFichier = "XM" + NumériqueVersChaîne(i,"02d") + "AM"
-- Corinne Bonhomme Montréal, Canada |
| |
| |
| | | |
|
| | | | |
| | |
|