PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WINDEV 2024 → actualisation libellé compteur
actualisation libellé compteur
Started by Franck, Aug., 14 2019 10:32 AM - 11 replies
Registered member
88 messages
Posted on August, 14 2019 - 10:32 AM
Bonjour,

Sur mon projet, j'ai une page d’accueil, qui contient plusieurs libellés contenant :
HExécuteRequête(REQ_...)
LIB_cptacc3=HNbEnr(REQ_....)

Cela me sert de compteur d'enregistrement sur différents critères à surveiller chez nous.

Mais ces compteurs ne se mettent pas à jour, il me faut fermer et réouvrir pour les voir évoluer.
je voudrais simplement qu'en temps réel ils comptent, cela permet aux responsables de service, sur cette page d'accueil de voir ce que chaque utilisateur fait en temps réel.
Il faudrait qu'ils s’ auto-actualisent seuls.
une idée ??

merci.

--
Merci ;) Franck
Registered member
3,885 messages
Popularité : +227 (347 votes)
Posted on August, 14 2019 - 11:09 AM
Bonjour,
Créer un trigger sur les tables qui composent ta/tes requêtes.
Ce trigger appellera la requête souhaité et rafraîchira l'affichage.
Supposons que ta requête (REQ_Surveillance) implique les tables TABLE1 et TABLE2
Dans le code d'initialisation du projet :
HDécritTrigger("TABLE1,TABLE2", "HAJOUTE,HMODIFIE,HSUPPRIME","AfficherCritèreSurveillance")


Procedure AfficherCritèreSurveillance()
HExécuteRequête(REQ_Surveillance)
LIB_cptacc3=HNbEnr(REQ_Surveillance)


--
Il y a peut être plus simple, mais, ça tourne
Registered member
72 messages
Popularité : +10 (10 votes)
Posted on August, 14 2019 - 2:25 PM
Si tu es en HFSQL Client / Serveur, utilise le HSurveille()
A chaque fois qu'un enregistrement est ajouter/modifier/supprimer dans ta table, ceci lancera automatiquement ta procédure.
Registered member
88 messages
Posted on August, 14 2019 - 3:13 PM
Bonjour,

Merci à tous les deux

je vais tester cela

--
Merci ;) Franck
Registered member
88 messages
Posted on August, 14 2019 - 3:33 PM
j'essaye ca :
PROCÉDURE MaFenêtre(gSurveillance)
HExécuteRequête(REQ_1)
LIB_cptacc3=HNbEnr(REQ_1)
HExécuteRequête(REQ_2)
LIB_cptacc4=HNbEnr(REQ_2)
HExécuteRequête(REQ_3)
LIB_cptacc5=HNbEnr(REQ_3)
HExécuteRequête(REQ_4)
LIB_cptacc6=HNbEnr(REQ_4)
HExécuteRequête(REQ_5)
LIB_cptacc7=HNbEnr(REQ_5)
HSurveille(ficxxxx,ficxxx,ficxxx, HAjoute,HModifie,HSupprime,gSurveillance)

bon bah ca marche pas, :D le Hsurveille est en rouge

et je l'ai mis à la fenetre et non pas au projet, c'est peut etre a cause de cela ?

--
Merci ;) Franck
Registered member
88 messages
Posted on August, 14 2019 - 3:47 PM
PROCÉDURE MaFenêtre(gSurveillance)
HSurveille(ficxxx,gSurveillance,hNumEnrTous,hsAjout+hsModification)

SI gSurveillance=Vrai ALORS
HExécuteRequête(REQ_1)
LIB_cptacc3=HNbEnr(REQ_1)
HExécuteRequête(REQ_2)
LIB_cptacc4=HNbEnr(REQ_2)
HExécuteRequête(REQ_3)
LIB_cptacc5=HNbEnr(REQ_3)
HExécuteRequête(REQ_4)
LIB_cptacc6=HNbEnr(REQ_4)
HExécuteRequête(REQ_5)
LIB_cptacc7=HNbEnr(REQ_5)
FIN
erreur de copier coller

hsurveille il me le refuse car je ne suis pas en hfsql evidemment sur ma fenetre de test

et hdecrittrigger je dois mal l'ecrire car il refuse la syntaxe

--
Merci ;) Franck
Message modified, August, 14 2019 - 3:54 PM
Registered member
88 messages
Posted on August, 14 2019 - 4:00 PM
là c'est vraiment très au delà de mes compétences windev, cela ne fait qu'un mois et demi alors je rame pour des petits trucs comme ca, déprimant lol

--
Merci ;) Franck
Registered member
72 messages
Popularité : +10 (10 votes)
Posted on August, 19 2019 - 4:53 PM
Bonjour Franck,

oui, le HSurveille ne fonctionne que si tu est en HFSQL client/serveur malheureusement.
En réalité le client/serveur est ton gestionnaire de base de donnée, c'est lui qui surveille s'il y a eu une modification et si oui, il renvoie un message à ton application qui déclanche ta procédure.
Si tu est un HFSQL Classic, ce ne sont que des fichiers de données qui ne sont pas géré par un serveur de base de données, donc ca ne fonctionne pas.

Tu peux utilisé les triggers comme Voroltinquo là indiqué. (qui en vaut la peine mais un peu plus dur à mettre en place).

Sinon tu peux aussi utilisé HVersion (voir l'aide)

Tu peux te créer un Timer qui valide si la version de ton fichier de données est la même que la dernière fois que tu là vérifié. Et si elle est différente tu lance ta procédure de rafraichissement.
La question est ton "temps réels" nécessite réellement un temps réelle au un 2-3 secondes de délais est envisageable. Je ne connait pas ton besoin exactement sur ce point.
Par contre si tu as 25 clients qui valide toujours si la version d'un fichier à été modifié, c'est pas l'idéal. Mais de toute manière si tu as 25 clients de connectés à ton application passe en C/S tout de suite :P
Si ce n'est qu'un application qui valide ton HVersion, il y aura pas de problème à mettre un timer relativement court.
Registered member
3,885 messages
Popularité : +227 (347 votes)
Posted on August, 19 2019 - 5:08 PM
Le trigger, bien qu'un peu complexe au départ à aussi l'avantage d'être "portable", alors que HSurveille est propriétaire.
En relisant la totalité du post je me suis aperçu que j'avais oublié un paramètre: le moment de déclenchement du trigger.
Le code correct est :
HDécritTrigger("TABLE1,TABLE2", "HAJOUTE,HMODIFIE,HSUPPRIME","AfficherCritèreSurveillance",hTriggerAprès)


--
Il y a peut être plus simple, mais, ça tourne
Message modified, August, 19 2019 - 5:10 PM
Registered member
1,623 messages
Popularité : +100 (114 votes)
Posted on August, 19 2019 - 6:41 PM
Hello,

Sinon, pourquoi ne pas utiliser un thread secondaire qui tourne en boucle ?
https://doc.pcsoft.fr/fr-FR/?3077024&name=threadexecute_fonction

Toutes les XX secondes il fait la mise à jour en reexecutant la requete puis mets a jour l'ihm via ExécuteThreadPrincipal()
https://doc.pcsoft.fr/fr-FR/?1000019862&name=executethreadprincipal_fonction

Si tu n'a pas besoin d'avoir la mise a jour des données en temps réél (a la seconde près donc) ca peut largement faire l'affaire.
Registered member
88 messages
Posted on August, 20 2019 - 8:00 AM
Bonjour,

Merci à tous,

j'ai déja fait une premiere chose c'est de basculer mon projet en hfsql c/s, puisque de toute facon la phase reflexion est terminée et je vais tout développer pour une trentaine d'utilisateurs. déja merci pour ce conseil.

pour toutes ces différentes solutions je vais regarder tout cela et choisir entre ces 3 solutions. car en effet le temps réél n'est pas forcement nécessaire qlq secondes voir minutes de décalage entre les modifs et le controle peuvent aller.

Merci

--
Merci ;) Franck
Registered member
3,885 messages
Popularité : +227 (347 votes)
Posted on August, 20 2019 - 8:14 AM
Vérifie quand même la mémoire consommée par ces 3 solutions. En C/S, si tu utilises les triggers, passe en trigger "Serveur"

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