PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Durée dans une table et le démarré via programmation
Durée dans une table et le démarré via programmation
Iniciado por Maxime, 27,ago. 2019 09:37 - 7 respuestas
Miembro registrado
106 mensajes
Publicado el 27,agosto 2019 - 09:37
Bonjour ,

Je possède une table comportant un certains nombre de colonne et je souhaite pouvoir via programmation démarré une durée dans ma table selon une valeur reçu notamment une valeur d'état machine ( 0 , 1 , 2 , 4 , 8 ) .

Je souhaite pouvoir démarré ma durée selon l'état 2 et 4 tant qu'on reviens pas sur l’état 1 continué et si l'état 1 surgi faire une RAZ de ma durée mais je ne sais pas trop quel fonction permet de démarré cette durée .

Avez vous des idées ?

Merci d'avance
Cordialement M.P
Miembro registrado
4.361 mensajes
Publicado el 27,agosto 2019 - 10:16
Bonjour,
Maxime a écrit :
je ne sais pas trop quel fonction permet de démarré cette durée .

Moi non plus, il manque des précisions.
Souhaites tu enregistrer une durée ou démarrer une procédure/fonction ?
Est-ce un champ table ou une table ?

--
Il y a peut être plus simple, mais, ça tourne
Miembro registrado
106 mensajes
Publicado el 27,agosto 2019 - 10:20
Bonjour ,

Pour l'instant je ne pense pas l'enregistré mais juste l'affiché pour avertir de la durée de non fonctionnement d'une machine pour intervenir dessus.
ma durée est une colonne dans ma table donc je dirai un champ table . ( il y a plusieurs colonne dans cette même table 31 colonnes il me semble )


Cordialement M.P
Miembro registrado
4.361 mensajes
Publicado el 27,agosto 2019 - 10:23
Comment est rempli ton champ table ?

--
Il y a peut être plus simple, mais, ça tourne
Miembro registrado
106 mensajes
Publicado el 27,agosto 2019 - 10:29
Il est rempli via une requête qui s'actualise toutes les 10 secondes mais le champs durée est à part de cette requête.
Je souhaitais le faire démarré via programmation .

Cordialement M.P
Miembro registrado
106 mensajes
Publicado el 27,agosto 2019 - 12:56
Pour être précis je souhaite faire une sorte d'indicateur de temps selon l’état de chaque machine comme un chrono mais en temps réel .
SI j'ai l'état 1 le temps reste a 0 mais si j'ai l'état 2 admettons le temps s'incrémente de 1 toutes les secondes et affiche un temps en minute dans l'idéal

Cordialement M.P
Miembro registrado
166 mensajes
Publicado el 27,agosto 2019 - 16:27
Bonjour;

En utilisant les fonctions ----- HeureDifférence () ----- ou bien ----- DateHeureDifférence () ----- et Timersys()

Bon Dev
Miembro registrado
4.361 mensajes
Publicado el 27,agosto 2019 - 19:59
Dans la mesure où le rafraîchissement,donc l'affichage de la valeur de l'état, se fait toute les 10 secondes, et surtout que l'affichage de la durée est en minute, un appel de l'affichage de la durée toutes les secondes me semble inutile et vas surcharger inutilement la machine.
On va au contraire profiter du rafraîchissement pour afficher la nouvelle durée.
Tout va se faire dans l'affichage des lignes.
Commençons par ajouter une nouvelle colonne de type durée (e.g. COL_Indisponibilité) et choisissons le masque approprié. (Afin d'éviter des affichage 0:00:00, on pensera à cocher "Mise à blanc si zéro" et "Null si vide")

Dans le code d'initialisation de la fenêtre, définissons un tableau associatif de DateHeure (e.g. gtaIndisponibilité,) c'est là que nous stockerons le début de l'indisponibilité.

Le code de Affichage d'une ligne de ... devient
nIDMachineEnCours est entier sur 8 octets
dhPanne est une DateHeure
sDuréePanne est une chaîne
nLigneEnCours est un entier

nIDMachineEnCours=REQ_EtatMachine.PK_Machine
dhPanne..PartieDate=DateDuJour()
dhPanne..PartieHeure=Maintenant()
nLigneEnCours=IndiceEnCours()

SELON COL_NDX_Etat
CAS 0,8 //Cas Nominal
COL_Indisponibilité[nLigneEnCours]..CouleurFond=CouleurDéfaut
CAS 1 //RAZ
//La maintenance est terminée, on supprime l'alarme
TableauSupprime(gtaIndisponibilité,nIDMachineEnCours)
COL_Indisponibilité[nLigneEnCours]..CouleurFond=CouleurDéfaut
CAS 2,4 //Erreur
SI PAS(gtaIndisponibilité[nIDMachineEnCours]..Existe) ALORS //La machine fonctionnait lors du dernier rafraîchissement
gtaIndisponibilité[nIDMachineEnCours]=dhPanne
FIN
sDuréePanne=DateHeureDifférence(gtaIndisponibilité[nIDMachineEnCours],dhPanne)
COL_Indisponibilité[nLigneEnCours]=ChaîneVersDurée(sDuréePanne,duréeCentième)
COL_Indisponibilité[nLigneEnCours]..CouleurFond=RougeClair

FIN


--
Il y a peut être plus simple, mais, ça tourne