PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Parcourir un tableau dynamique
Parcourir un tableau dynamique
Iniciado por laura.dujardin, 25,ene. 2019 09:54 - 2 respuestas
Publicado el 25,enero 2019 - 09:54
Bonjour à tous !
Je fais appel à votre aide car je suis coincé sur un problème de parcours de champ dynamique
Pour vous expliquer :
J'ai une fenêtre qui est composée d'un tableau où j'ai une colonne "NOM", une colonne "SANMAITRE", une colonne "HBLMAITRE" et une colonne "MAJMAITRE"
A l'initialisation de la fenêtre j'effectue une requête pour avoir le libellé des sanctions existantes et je clone les champs "SANMAITRE", "HBLMAITRE" et "MAJMAITRE" autant de fois que j'ai de sanctions
Mes champs clonés prennent les nom SAN_+NomDeLaSanction, HBL_+NomDeLaSanction, MAJ_+NomDeLaSanction (ex pour la sanction licencié : SAN_LICENCIE, HBL_LICENCIE, MAJ_LICENCIE)
Si mon utilisateur possède la sanction le champ SAN_NomDeLaSanction=1 et HBL_NomDeLaSanction = 1
Si je modifie ses sanctions le champ MAJ_NomDeLaSanction = 1
J'aimerais, que lorsque l'utilisateur quitte une ligne ou le tableau, je parcours le tableau afin de vérifier s'il y a eu des modifications.
J'ai créé un code, ça fonctionne pour le premier champ clôné mais après j'ai un message d'erreur
"<SAN_A prolonger> n'est ni une rubrique ni un paramètre de la requête <TableCpt>. De nouveaux paramètres ne doivent pas être déclarés après la préparation d'une requête.
Vérifier également qu'il n'y a pas d'erreur de syntaxe dans le nom de la rubrique ou du paramètre."

Voici mon code :
POUR i = 1 À iNbligne
//On parcours toutes les colonnes
POUR k=7 À iNbColonnes PAS 3
sNomColSan=TableEnumèreColonne(TableCompetences,k)
sNomColHBL=TableEnumèreColonne(TableCompetences,k+1)
sNomColMAJ=TableEnumèreColonne(TableCompetences,k+2)
//Si le préfixe de la colonne est "SAN" alors
SI Gauche(sNomColSan,3)="SAN" ALORS
//Pour une sanction qu'on avait pas au départ
//si une colonne "SAN_SANCTION"=1 alors
SI {"TableCpt."+sNomColSan, k}[i]=1 ALORS
//on regarde si le champ "HBL_SANCTION" <>1
SI {"TableCpt."+sNomColHBL,k}[i]<>1 ALORS
//si c'est le cas on met le champ "MAJ_SANCTION" a 1
{"TableCpt."+sNomColMAJ, k}[i]=1
FIN
FIN
//Pour une sanction qu'on avait au départ
//si une colonne "SAN_SANCTION"=0 alors
SI {"TableCpt."+sNomColSan, k}=0 ALORS
// //on regarde si le champ "HBL_SANCTION"=1
SI {"TableCpt."+sNomColHBL, k}=1 ALORS
// //si c'est le cas on met le champ "MAJ_SANCTION" a 1
{"TableCpt."+sNomColUPD, k}=1
FIN
FIN
FIN
FIN
FIN


Merci d'avance pour votre aide.
Miembro registrado
69 mensajes
Publicado el 25,enero 2019 - 13:54
Bonjour,

Pour connaitre tous les nom des colonnes, vous pouvez adapter ce code (copier depuis l'aide).

// Enumération de toute les colonnes du champ Table "TABLE_TableProduit"
UneColonne est un Champ

POUR nColonne = 1 _À_ TableOccurrence(TABLE_TableProduit, toColonne)

UneColonne <- TableEnumèreColonne(TABLE_TableProduit, nColonne)
Trace(UneColonne..NomComplet + "//" + UneColonne..Titre)

FIN

Je pense que ce sera plus simple pour vous d'identifier les noms des colonnes clonées.

Bon développement
Publicado el 28,enero 2019 - 07:46
Bonjour et merci pour votre réponse.

C'est déjà ce que je fais, le souci est que mon code reste bloqué au premier élément, il me dit qu'il ne connait pas le second élément (comme expliqué dans mon message précédent).