PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Rafraichissement d'une table fichier en réseau
Rafraichissement d'une table fichier en réseau
Iniciado por johan, 28,ago. 2007 20:49 - 2 respuestas
Publicado el 28,agosto 2007 - 20:49
bien le bonjour,

je souhaite qu'en cas d'effacement d'un enregistrement sur un poste, les tables fichiers des autres postes se rafraississent. Idem en cas d'ajout d'un enregistrement.

aucune idée...

merci pour vos réponses.
Publicado el 28,agosto 2007 - 23:12
Principe : rafraichir l'affichage à chaque action sur le fichier
// =========================================================
Soit une table fichier Table_CLIENTS reliée au fichier CLIENTS

//=============== Déclarations globales de Table_Clients:=============
gfnNumTimer est un entier // Numéro du timer de rafraichissement
gfnInterRaf est un entier = 1500 // Temps entre 2 rafraichissements en centièmes
gfbGererRafAuto est un booléen = Faux // Gestion du rafraîchissement
gnNumVersionFichier est un entier = HVersion(CLIENTS) // Version du fichier (pour rafraîchissement)


// Activation du rafraichissement automatique
GererRafraichissement(Vrai) // procédure locale
// ============================================================
// PROCEDURES LOCALES ===========================================
// ============================================================
// Gestion du rafraichissement automatique
PROCEDURE GererRafraichissement(bRaffAuto=Faux)

// On mémorise si l'on doit gérer le rafraîchissement
gfbGererRafAuto = bRaffAuto

// Est-ce qu'un timer est activé ?
SI gfnNumTimer > 0 ALORS
// Doit-on rafraichir en automatique ?
SI gfbGererRafAuto = Vrai ALORS
// Lancement du timer
gfnNumTimer = TimerSys("Rafraichir",gfnInterRaf)
SINON
// Arrêt du timer
FinTimerSys(gfnNumTimer)
gfnNumTimer= 0
FIN
SINON
// Doit-on rafraichir en automatique ?
SI gfbGererRafAuto = Vrai ALORS
// Lancement du timer
gfnNumTimer = TimerSys("Rafraichir",gfnInterRaf)
FIN
FIN
// ==============================================
// ================================================
// Méthode appelée par le timer de raffraichissement
PROCEDURE Rafraichir()
// Arrêt du timer
FinTimerSys(gfnNumTimer)

// Si l'utilisateur n'est pas en cours de saisie
SI TableSaisieEnCours(Table)=Faux ALORS
// Si l'utilisateur n'a pas fait de modifications
// Est-ce que le fichier a été modifié ?
SI gnNumVersionFichier < HVersion(CLIENTS) ALORS
// On mémorise le numéro de version du fichier
gnNumVersionFichier = HVersion(CLIENTS)

// Mise à jour de l'affichage de la table
TableAffiche(Table,taCourantBandeau)

// Autres champs liés ?
QUAND EXCEPTION DANS
ExécuteTraitement("RADAffiche",trtProcédure)
FAIRE
// Exception correspondant à une procédure inconnue ?
SI ExceptionInfo(errCode)<> 1027 ALORS EXCEPTION
FIN
FIN
FIN

// On relance le timer
SI gfbGererRafAuto = Vrai ALORS
gfnNumTimer = TimerSys("Rafraichir",gfnInterRaf)
FIN
// ======================================================
//=====================================================
// Gestion du rafraichissement automatique
PROCEDURE SuspendreRafraichissement(bSuspendre=Vrai)

// Suspendre le rafraichissement si celui-ci est géré ou le relancer
SI bSuspendre = Vrai ALORS
SI gfnNumTimer<>0 ALORS FinTimerSys(gfnNumTimer)// on arrête le timer en cours
gfnNumTimer = 0
SINON
// On doit réactiver le timer si celui-ci est géré
SI gfbGererRafAuto=Vrai ALORS
SI gfnNumTimer<>0 ALORS FinTimerSys(gfnNumTimer)// on arrête le timer en cours
gfnNumTimer = TimerSys("Rafraichir",gfnInterRaf)
FIN
FIN
// =============================================================
// ============================================================
//==========================================================
// A chaque clic sur un bouton : Nouveau, Modifier, Supprimer on fait :

// On arrête le rafraichissement automatique de la fenêtre
SuspendreRafraichissement(Vrai)

// traitement ....

// On relance le rafraichissement automatique de la fenêtre
SuspendreRafraichissement(Faux)
// ======= exemple de modif sur fichier Clients ================


// Si c'est la ligne de saisie/sélection, on ne peut pas la supprimer
SI TableSelect(Table)>TableOccurrence(Table) ALORS
Info("La ligne sélectionnée permet la saisie directe dans la table","Cette ligne ne peut être modifiée")
RETOUR
FIN

// rafraichissement de la table avant la modification
// dans le cas où une modification à été faite sur un autre poste
TableAffiche(Table,taCourantBandeau)

// On arrête le rafraichissement automatique de la fenêtre
SuspendreRafraichissement(Vrai)

// ouverture de la fiche du fichier CLIENTS en mode modification
SI Ouvre("Fiche_CLIENTS","Modif") ALORS
// rafraichissement de la table si un enregistrement a été modifié
TableAffiche(Table,taCourantBandeau)
FIN
// On relance le rafraichissement automatique de la fenêtre
SuspendreRafraichissement(Faux)

//==================== FIN ================================

Ces codes sont copiées du RAD complet de Windev
Publicado el 01,septiembre 2020 - 12:24
Bonjour !
pour ceux qui veulent rafraîchissement de données sous réseau ou en mode client serveur HFSQL il existe une fonction qui gère tous cela le lien : que ce soit pour windev 20 a 24 :
https://doc.pcsoft.fr/fr-FR/?1000022407&name=hsurveille_fonction&verdisp=200

HSurveille (Fonction) :
Exemple
// Lance la surveillance du fichier de données Commande
// La procédure TraiteCommande est appelée pour tout ajout d'enregistrement dans le fichier de données

HSurveille(Commande, TraiteCommande, hNumEnrTous, hsAjout)

biensure si vous voulez gerer l'ajout la modification ainsi la suppression il suffit de metre :

HSurveille(Commande, TraiteCommande, hNumEnrTous, hsAjout+ hsModification + hsSuppression)

en suite il faut déclarer une procedure local juste apres pour faire les traitements necéssaires.

Bon Dev