PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WEBDEV 2024 → Variable Globale - Urgent
Variable Globale - Urgent
Iniciado por ranpower, fev., 03 2004 1:31 PM - 2 respostas
Publicado em fevereiro, 03 2004 - 1:31 PM
Bonjour,

J'ai crée une page qui lorsqu'elle est fermée par l'utilisateur envoi
l'heure de fermeture dans une base
de données ...... Que ce soit fermeture par la croix ( code de dechargement
naviguateur : Execute("BTSOR..CLI")
ou fermeture par un bouton QUITTER ( code clic naviguateur
Execute("BTSOR..CLI") suivi de naviguateurferme() .
Le bouton BTSOR contenant le code d'insertion de l'heure système dans la
base de données ( code serveur ) .

Cette solution tourne sur une plateforme de 400 utilisateurs ..... Il
s'avère que pour certains utilisateurs, les heures de fin ne sont
pas renseignées . J'ai fait des tests de mon côté, sur deux pc de leur
intranet et aucunes erreurs . Par contre sur un troisième poste,
si on reste plus de 15 secondes sur la page, lorsque l'on quitte, le code du
bouton BTSOR n'est pas pri en compte .......
L'heure de fin n'est donc pas envoyée dans la base ( insert ou update de
heuresys() ) .
La parck PC de l'intranet est en théorie homogène, windows 2000 SP2,
internet explorer 5.5 , matériel identique ....


Pour remédier au problème j'ai tenté de changer de solution :

1ere solution :
Mettre à jour toutes les secondes ma base de données contenant l'heure
systeme

Dans ma page, j'utilise la fonction timer pour lancer une procédure
renvoiheure() toutes les secondes .
Cette fonction met à jour ma base de données avec l'heure courante .
Ainsi lorsque l'utilisateur quitte la page, la dernière heure renseignée est
forcement l'heure de fin .

La fonction timer ne peut lancer que des procédures naviguateur . Je place
donc
dans ma procédure renvoiheure() un code pour executer le code serveur d'un
bouton invisible .
Dans le code de ce bouton je peut faire un update dans ma base . Et ca
marche .
Mais le gros problème est que si ma page est réduite par l'utilisateur ,
elle reapparaitra en premier plan . Si l'utilisateur souhaite envoyer un
mail ou
réaliser une autre tache , il sera bloquée avec cette fenêtre qui
réapparaitra . Puisque toutes les secondes ( Timer("renvoiheure()",100)
le clic virtuel sur mon bouton invisible, ressolicitera la page ..........

2eme solution :
Mettre à jour toutes les secondes une variable globale contenant l'heure
systeme . Je pourrai utliser cette variable
globale dans un autre traitement pour l'insérer dans ma base

Problème :
Les variables globales de projet sont inconnues en code naviguateur ......

Donc la je sais pas trop quoi faire . J'ai pas d'idées concernant l'origine
du problème, ou plutôt j'en ai tellement et elles me parraissent tellement
invérifiables que je préféres essayer de trouver une autre méthode .

Si vous avez une petite idée sur l'origine du problème ou sur une autre
solution me permettant de récupérer l'heure de fin ......

Merci ......
Publicado em fevereiro, 03 2004 - 3:49 PM
Salut,
Tu pourrais essayer d'enregistrer l'heure au moment où il change de page.
Au moins tu auras à coup sur une heure de fin.
En tout cas tes recherches m'interessent, car dans un projet j'ai besoin
de faire la même chose que toi. Si tu as du nouveau, pourrais tu poster tes
recherches.

Merci
Christian

"Ran" <ranpower@wanadoo.fr> wrote:

Bonjour,

J'ai crée une page qui lorsqu'elle est fermée par l'utilisateur envoi
l'heure de fermeture dans une base
de données ...... Que ce soit fermeture par la croix ( code de dechargement
naviguateur : Execute("BTSOR..CLI")
ou fermeture par un bouton QUITTER ( code clic naviguateur
Execute("BTSOR..CLI") suivi de naviguateurferme() .
Le bouton BTSOR contenant le code d'insertion de l'heure système dans la
base de données ( code serveur ) .

Cette solution tourne sur une plateforme de 400 utilisateurs ..... Il
s'avère que pour certains utilisateurs, les heures de fin ne sont
pas renseignées . J'ai fait des tests de mon côté, sur deux pc de leur
intranet et aucunes erreurs . Par contre sur un troisième poste,
si on reste plus de 15 secondes sur la page, lorsque l'on quitte, le code

du
bouton BTSOR n'est pas pri en compte .......
L'heure de fin n'est donc pas envoyée dans la base ( insert ou update de
heuresys() ) .
La parck PC de l'intranet est en théorie homogène, windows 2000 SP2,
internet explorer 5.5 , matériel identique ....


Pour remédier au problème j'ai tenté de changer de solution :

1ere solution :
Mettre à jour toutes les secondes ma base de données contenant l'heure
systeme

Dans ma page, j'utilise la fonction timer pour lancer une procédure
renvoiheure() toutes les secondes .
Cette fonction met à jour ma base de données avec l'heure courante .
Ainsi lorsque l'utilisateur quitte la page, la dernière heure renseignée

est
forcement l'heure de fin .

La fonction timer ne peut lancer que des procédures naviguateur . Je place
donc
dans ma procédure renvoiheure() un code pour executer le code serveur d'un
bouton invisible .
Dans le code de ce bouton je peut faire un update dans ma base . Et ca
marche .
Mais le gros problème est que si ma page est réduite par l'utilisateur ,
elle reapparaitra en premier plan . Si l'utilisateur souhaite envoyer un
mail ou
réaliser une autre tache , il sera bloquée avec cette fenêtre qui
réapparaitra . Puisque toutes les secondes ( Timer("renvoiheure()",100)
le clic virtuel sur mon bouton invisible, ressolicitera la page ..........

2eme solution :
Mettre à jour toutes les secondes une variable globale contenant l'heure
systeme . Je pourrai utliser cette variable
globale dans un autre traitement pour l'insérer dans ma base

Problème :
Les variables globales de projet sont inconnues en code naviguateur ......

Donc la je sais pas trop quoi faire . J'ai pas d'idées concernant l'origine
du problème, ou plutôt j'en ai tellement et elles me parraissent tellement
invérifiables que je préféres essayer de trouver une autre méthode .

Si vous avez une petite idée sur l'origine du problème ou sur une autre
solution me permettant de récupérer l'heure de fin ......

Merci ......



Publicado em fevereiro, 03 2004 - 6:27 PM
et en passant par un thread tu peu peut etre t'en sortir sans recharger ta
page a chaque fois.

Dans le Code D'init d'un frame tu lance le thread :

ThreadExecute("MonThread",threadnormal,Renseigne_heure)

Et la procedure Renseigne_heure est du type boucle infini:

Renseigne_heure ()

tantque vrai
// Traitement a effectuer (heure dans la base)
multitache(100) // Pour que la boucle soit executé une
// fois par seconde

fin

Avantage, le thread est arreter quand la page se ferme!!

Que pense tu de cette soluce?