PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → WINDEV 24 ETAT TABLEAU SUR REQUETE PROBLEME VARIABLE
WINDEV 24 ETAT TABLEAU SUR REQUETE PROBLEME VARIABLE
Iniciado por sbouvret, 04,mar. 2020 15:01 - 2 respuestas
Publicado el 04,marzo 2020 - 15:01
Bonjour à tous,

Je travaille actuellement sur le reporting de ma plateforme de ticketing GLPI. J'accéde à la base MySQL via un connecteur natif. Je réalise des requêtes sous Windev et ensuite associe ma requête à un état.

Mon problème : Je désire calculer une durée entre la date de clôture de mon ticket et sa date d'ouverture. J'ai fait le choix de faire ce calcul dans le traitement de mon état.

Le code de mon état :

OUVERTURE de l'état
NbDelai0a1 est un entier = 0
NbDelai1a2 est un entier = 0
NbDelai2a3 est un entier = 0
NbDelai3a4 est un entier = 0
NbDelai4a5 est un entier = 0
NbDelai5a6 est un entier = 0
NbDelai6a7 est un entier = 0
NbDelai7aX est un entier = 0
DuréeInterevention est une Durée
DuréeInterventionJour est un numérique
DateHeureFinal est une DateHeure
DateHeureDébut est une DateHeure

Lecture des Données
//Initialisation des variables
DuréeInterevention = 0
DuréeInterventionJour = 0

//Transformation date sur 12 caractères car stocké différement sur MySQL
DateHeureFinal = Gauche(REQ_Délai_Résolution.closedate,12)
DateHeureDébut = Gauche(REQ_Délai_Résolution.date,12)

//Calcul des durées et conversion en jours
DuréeInterevention = DateHeureFinal-DateHeureDébut
DuréeInterventionJour = DuréeInterevention..EnJours


//Définition des tranches de résolution
SELON DuréeInterventionJour
CAS <= 1 : NbDelai0a1 += 1
CAS <= 2 : NbDelai1a2 += 1
CAS <= 3 : NbDelai2a3 += 1
CAS <= 4 : NbDelai3a4 += 1
CAS <= 5 : NbDelai4a5 += 1
CAS <= 6 : NbDelai5a6 += 1
CAS <= 7 : NbDelai6a7 += 1
AUTRE CAS : NbDelai7aX += 1


Ensuite je réutilise ma variable DuréeInterevention dans mon tableau sous mon état





Mais je constate que la valeur de ma variable est affectée à la ligne suivante dans mon tableau.

Exemple :





Je ne vois pas comment corriger ce problème et je sollicite votre expertise.
Publicado el 04,marzo 2020 - 17:13
Salut,

Pour éviter ce décalage, le plus simple est de faire le calcul de la durée dans le code du bloc corps et d'affecter le champ par programmation et non pas par binding.

Les autres calculs ou affectations peuvent rester dans le code de l'état.

A+
Miembro registrado
2.682 mensajes
Publicado el 04,marzo 2020 - 17:23
Bonjour,

Tu devrais déplacer ce code dans Avant impression du bloc corps

DuréeInterevention = 0
DuréeInterventionJour = 0

//Transformation date sur 12 caractères car stocké différement sur MySQL
DateHeureFinal = Gauche(REQ_Délai_Résolution.closedate,12)
DateHeureDébut = Gauche(REQ_Délai_Résolution.date,12)

//Calcul des durées et conversion en jours
DuréeInterevention = DateHeureFinal-DateHeureDébut
DuréeInterventionJour = DuréeInterevention..EnJours


//Définition des tranches de résolution
SELON DuréeInterventionJour
CAS <= 1 : NbDelai0a1 += 1
CAS <= 2 : NbDelai1a2 += 1
CAS <= 3 : NbDelai2a3 += 1
CAS <= 4 : NbDelai3a4 += 1
CAS <= 5 : NbDelai4a5 += 1
CAS <= 6 : NbDelai5a6 += 1
CAS <= 7 : NbDelai6a7 += 1
AUTRE CAS : NbDelai7aX += 1


--
Cordialement,

Philippe SAINT-BERTIN