|
FORUMS PROFESSIONNELS WINDEV, WEBDEV et WINDEV Mobile |
| | | | | |
Impossible de ré-initialiser un combo (windev 15) |
Débuté par JoÉ, 14 mar. 2019 16:34 - 3 réponses |
| |
| | | |
|
| |
Membre enregistré 1 message |
|
Posté le 14 mars 2019 - 16:34 |
Bonjour à tous et à toutes !
Dans une application que je suis en train de créer, j'ai une fenêtre qui permet à l'utilisateur d'inscrire des participants à des activités prédéfinies sur une semaine. Lorsque je change la date dans le "champ" date, tous les autres champs se ré-initialisent sauf le champ combo qui affiche l'identité des participants. Lorsque qu'un participant s'est inscrit à une activité à un jour défini, l'identité de cette personne est grisé dans la combo après enregistrement et fermeture de la fenêtre. Lorsque j'ouvre de nouveau la fenêtre et choisit une date de la semaine, la combo indique parfaitement les participants inscrits (identité grisé) et les non inscrits (identité en bleu). Si je change de date, tous les autres champs se ré-initialisent et me donnent les bonnes informations sur les activités proposées et le nombre de participants déjà inscrits. La combo, elle, indique toujours les mêmes informations de la date choisie précédemment sur les participants inscrits (identité grisé) et les non inscrits (identité en bleu). Je suis obligé de fermer la fenêtre et de l'ouvrir de nouveau et de choisir la date voulue pour que la combo m'affiche les bonnes informations. Comme vous pouvez vous imaginer ce procédé n'est pas top. Il est impossible de naviguer entre différents dates et avoir des informations fiables dans la combo. Voici donc, le code de deux procédures que j'ai mis à "Initialisation de SAI_Date" et "A chaque modification de SAI_Date" :
Procedure AffichageActivite()
ListeSupprimeTout(LISTE_InscriptionMatin) ListeSupprimeTout(LISTE_InscriptionApresMidi) ListeSupprimeTout(LISTE_InscriptionSoiree)
SAI_PlaceDisponibleMatin..Valeur = 0 SAI_PlaceDisponibleApresMidi..Valeur = 0 SAI_PlaceDisponibleSoiree..Valeur = 0
HLitRecherche(ActiviteJournaliere,Date,FEN_Inscription.SAI_Date)
SI HTrouve(ActiviteJournaliere) ALORS POUR TOUT ActiviteJournaliere SI ActiviteJournaliere.Date = FEN_Inscription.SAI_Date ET ActiviteJournaliere.Periode = "2" ALORS ListeAjoute(LISTE_InscriptionMatin,ActiviteJournaliere.NomActivite + " ("+(HeureVersChaîne(ActiviteJournaliere.HoraireDebut, "HHhMM")) +" - "+ (HeureVersChaîne(ActiviteJournaliere.HoraireFin, "HHhMM")) +")" +gLien(ActiviteJournaliere.NombreMaximunParticipant)) FIN SI ActiviteJournaliere.Date = FEN_Inscription.SAI_Date ET ActiviteJournaliere.Periode = "3" ALORS ListeAjoute(LISTE_InscriptionApresMidi,ActiviteJournaliere.NomActivite + " ("+(HeureVersChaîne(ActiviteJournaliere.HoraireDebut, "HHhMM")) +" - "+ (HeureVersChaîne(ActiviteJournaliere.HoraireFin, "HHhMM")) +")" +gLien(ActiviteJournaliere.NombreMaximunParticipant)) FIN SI ActiviteJournaliere.Date = FEN_Inscription.SAI_Date ET ActiviteJournaliere.Periode = "4" ALORS ListeAjoute(LISTE_InscriptionSoiree,ActiviteJournaliere.NomActivite + " ("+(HeureVersChaîne(ActiviteJournaliere.HoraireDebut, "HHhMM")) +" - "+ (HeureVersChaîne(ActiviteJournaliere.HoraireFin, "HHhMM")) +")" +gLien(ActiviteJournaliere.NombreMaximunParticipant)) FIN FIN FIN
ListeTrie(LISTE_InscriptionMatin) ListeTrie(LISTE_InscriptionApresMidi) ListeTrie(LISTE_InscriptionSoiree)
Procedure AttestationInscription() i est un entier = -1 ListeParticipant est un entier
SI IDInscriptionActivite = 0 ALORS
COMBO_IdentiteParticipant = -1
SAI_TotalNombreInscrit..Valeur = 0
POUR Indice = 1 A COMBO_IdentiteParticipant..Occurrence COMBO_IdentiteParticipant[Indice]..Couleur = RVB(68,139,237) FIN
REQ_NombreInscriptionParticipant.PDateInscription = SAI_Date..Valeur
HExécuteRequête(REQ_NombreInscriptionParticipant) POUR i = 1 _A_ HNbEnr(REQ_NombreInscriptionParticipant) HLit(REQ_NombreInscriptionParticipant, i) SI HEtat() = hEtatActif ALORS ListeParticipant = ListeCherche(COMBO_IdentiteParticipant,REQ_NombreInscriptionParticipant.Participant) COMBO_IdentiteParticipant[ListeParticipant]..Etat = Grisé FIN SAI_TotalNombreInscrit = HNbEnr(REQ_NombreInscriptionParticipant) FIN FIN
J'ai utilisé la fonction "HAnnuleDéclaration" sur la réquête "REQ_NombreInscriptionParticipant.PDateInscription" avec le dernier "FIN". Cela ne donne aucun résultat.
Si quelqu'un ou quelqu'une a une idée à me soumettre, je suis preneur. Merci d'avance. Joseph Emmanuel |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 227 messages Popularité : +18 (20 votes) |
|
Posté le 18 mars 2019 - 18:42 |
Bonjour,
C'est la requete qui ne te renvoie rien ou c'est la modification de la propriété etat qui ne s'applique pas ?
Autre chose comment est initialisé ta COMBO_IdentiteParticipant (accès direct ou rempli par programmation) ?
si tu as une requete lié est est exécuté quand tu clique sur la combo il me semble. Essaye de remplir par programmation COMBO_IdentiteParticipant. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 141 messages Popularité : +5 (5 votes) |
|
Posté le 19 mars 2019 - 09:14 |
Bonjour,
1) Dans le code :
SI IDInscriptionActivite = 0 ALORS COMBO_IdentiteParticipant = -1
si IDInscriptionActivite est différent de 0, alors rien ne se passe. Met un point d'arrêt sur la première ligne
2) J'imagine que la combo n'est pas réinitialisée. Il manque alors le code de "Dégrisage"....
3) Par ailleurs, je modifierais le code
HExécuteRequête(REQ_NombreInscriptionParticipant)
POUR i = 1 _A_ HNbEnr(REQ_NombreInscriptionParticipant)
HLit(REQ_NombreInscriptionParticipant, i)
SI HEtat() = hEtatActif ALORS ListeParticipant = ListeCherche(COMBO_IdentiteParticipant,REQ_NombreInscriptionParticipant.Participant) COMBO_IdentiteParticipant[ListeParticipant]..Etat = Grisé FIN SAI_TotalNombreInscrit = HNbEnr(REQ_NombreInscriptionParticipant) FIN
par
HExécuteRequête(REQ_NombreInscriptionParticipant)
SAI_TotalNombreInscrit = 0
POUR i = 1 _A_ HNbEnr(REQ_NombreInscriptionParticipant)
HLit(REQ_NombreInscriptionParticipant, i)
SI HEtat() = hEtatActif ALORS ListeParticipant = ListeCherche(COMBO_IdentiteParticipant,REQ_NombreInscriptionParticipant.Participant) COMBO_IdentiteParticipant[ListeParticipant]..Etat = Grisé SAI_TotalNombreInscrit++ FIN
FIN
4) Amélioration du code d'initialisation.
Si "ActiviteJournaliere.Date = FEN_Inscription.SAI_Date" est FAUX, ton programme effectuera 6 tests, alors qu'un seul suffit.
Nouvelle version :
Procedure AffichageActivite()
ListeSupprimeTout(LISTE_InscriptionMatin) ListeSupprimeTout(LISTE_InscriptionApresMidi) ListeSupprimeTout(LISTE_InscriptionSoiree)
SAI_PlaceDisponibleMatin = 0 SAI_PlaceDisponibleApresMidi = 0 SAI_PlaceDisponibleSoiree = 0
HLitRecherche(ActiviteJournaliere,Date,FEN_Inscription.SAI_Date)
TANTQUE HTrouve(ActiviteJournaliere) ALORS SELON ActiviteJournaliere.Periode CAS "2" : ListeAjoute(LISTE_InscriptionMatin,ActiviteJournaliere.NomActivite + " ("+(HeureVersChaîne(ActiviteJournaliere.HoraireDebut, "HHhMM")) +" - "+ (HeureVersChaîne(ActiviteJournaliere.HoraireFin, "HHhMM")) +")" +gLien(ActiviteJournaliere.NombreMaximunParticipant)) CAS "3" : ListeAjoute(LISTE_InscriptionApresMidi,ActiviteJournaliere.NomActivite + " ("+(HeureVersChaîne(ActiviteJournaliere.HoraireDebut, "HHhMM")) +" - "+ (HeureVersChaîne(ActiviteJournaliere.HoraireFin, "HHhMM")) +")" +gLien(ActiviteJournaliere.NombreMaximunParticipant)) CAS "4" : ListeAjoute(LISTE_InscriptionSoiree,ActiviteJournaliere.NomActivite + " ("+(HeureVersChaîne(ActiviteJournaliere.HoraireDebut, "HHhMM")) +" - "+ (HeureVersChaîne(ActiviteJournaliere.HoraireFin, "HHhMM")) +")" +gLien(ActiviteJournaliere.NombreMaximunParticipant)) AUTRES CAS : FIN HLitSuivant(ActiviteJournaliere,Date) FIN HAnnuleRecherche(HLitSuivant(ActiviteJournaliere)
ListeTrie(LISTE_InscriptionMatin) ListeTrie(LISTE_InscriptionApresMidi) ListeTrie(LISTE_InscriptionSoiree)
Bon Dev
-- Yann Wagner
WHY-GemA sàrl |
| |
| |
| | | |
|
| | |
| |
Posté le 20 mars 2019 - 12:52 |
Bonjour Gurdarr ! Bonjour Yann !
Merci à tous les deux t'avoir pris le temps de me répondre. Yann, j'ai suivi tes conseils qui m'ont permis de résoudre mon problème.
Bonne journée à vous ! JoÉ |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|