|
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? |
| |
| |
| | | |
|
| | | | |
| | |
|