PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → actualisation libellé compteur
actualisation libellé compteur
Débuté par Franck, 14 aoû. 2019 10:32 - 11 réponses
Membre enregistré
88 messages
Posté le 14 août 2019 - 10:32
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
Membre enregistré
3 881 messages
Popularité : +227 (347 votes)
Posté le 14 août 2019 - 11:09
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
Membre enregistré
72 messages
Popularité : +10 (10 votes)
Posté le 14 août 2019 - 14:25
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.
Membre enregistré
88 messages
Posté le 14 août 2019 - 15:13
Bonjour,

Merci à tous les deux

je vais tester cela

--
Merci ;) Franck
Membre enregistré
88 messages
Posté le 14 août 2019 - 15:33
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
Membre enregistré
88 messages
Posté le 14 août 2019 - 15:47
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 modifié, 14 août 2019 - 15:54
Membre enregistré
88 messages
Posté le 14 août 2019 - 16:00
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
Membre enregistré
72 messages
Popularité : +10 (10 votes)
Posté le 19 août 2019 - 16:53
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.
Membre enregistré
3 881 messages
Popularité : +227 (347 votes)
Posté le 19 août 2019 - 17:08
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 modifié, 19 août 2019 - 17:10
Membre enregistré
1 623 messages
Popularité : +100 (114 votes)
Posté le 19 août 2019 - 18:41
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.
Membre enregistré
88 messages
Posté le 20 août 2019 - 08:00
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
Membre enregistré
3 881 messages
Popularité : +227 (347 votes)
Posté le 20 août 2019 - 08:14
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