PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WEBDEV 2024 → Choix Interrupteur dans un tableau
Choix Interrupteur dans un tableau
Débuté par Bougnaiko DAVE, 14 juil. 2024 17:52 - Aucune réponse
Posté le 14 juillet 2024 - 17:52
Bonjour,

Je rencontre un problème avec ma procédure en Webdev.

Mon tableau contient 25 candidats et l'utilisateur connecté ne doit en choisir que 10 parmi les 25. La colonne Checkbox est de type interrupteur et permet à l'utilisateur de choisir son candidat. En fonction du choix de l'utilisateur, la colonne Note reçoit la note automatiquement. Par exemple, pour le 1er choix, la colonne Note = 10, pour le 2ème choix, la colonne Note = 9, etc.

Le comportement inattendu est que mon tableau ne garde pas la sélection et désactive tout à chaque instant. Voici mon code :

//
PROCÉDURE PROCEDURE_COL_Checkbox_OnChange()
Trace("Début de PROCEDURE_COL_Checkbox_OnChange")

nCoches est un entier = 0
rang est un tableau d'entier

// Réinitialiser les notes
Trace("Réinitialisation des notes")
POUR i = 1 À TableOccurrence(TABLE_CandidatVOTBP)
TABLE_CandidatVOTBP.COL_Note[i] = 0
Trace("Note réinitialisée pour l'élément " + i)
FIN

// Compter les cases cochées et attribuer les rangs
Trace("Début du comptage des cases cochées")
POUR i = 1 À TableOccurrence(TABLE_CandidatVOTBP)
SI TABLE_CandidatVOTBP.COL_Checkbox[i] ALORS
nCoches++
rang.Ajoute(i)
Trace("Case cochée trouvée à l'index " + i)
FIN
FIN
Trace("Nombre total de cases cochées: " + nCoches)

// Attribuer les notes en fonction du rang
Trace("Attribution des notes")
POUR i = 1 À rang..Occurrence
TABLE_CandidatVOTBP.COL_Note[rang[i]] = 11 - i
Trace("Note attribuée: " + (11 - i) + " pour le rang " + i)
FIN

// Désactiver les autres cases si plus de 10 candidats sont sélectionnés
SI nCoches >= 10 ALORS
Trace("Plus de 10 candidats sélectionnés, désactivation des autres cases")
POUR i = 1 À TableOccurrence(TABLE_CandidatVOTBP)
SI TABLE_CandidatVOTBP.COL_Checkbox[i] = Faux ALORS
TABLE_CandidatVOTBP.COL_Checkbox[i] = Inactif
Trace("Case désactivée à l'index " + i)
FIN
FIN
SINON
// Activer toutes les cases si moins de 10 candidats sont sélectionnés
Trace("Moins de 10 candidats sélectionnés, activation de toutes les cases")
POUR i = 1 À TableOccurrence(TABLE_CandidatVOTBP)
TABLE_CandidatVOTBP.COL_Checkbox[i] = Actif
Trace("Case activée à l'index " + i)
FIN
FIN

Trace("Fin de PROCEDURE_COL_Checkbox_OnChange")

Merci de votre aide.