sauf que justement c'est ça qui ralenti le système: c'est de laisser la base de données ouverte, non?
sauf que justement c'est ça qui ralenti le système: c'est de laisser la base de données ouverte, non?
Xavier
je croit que c'est surtout le fait de refaire un rafraichissement toutes les 10 min.
"Toute question a une reponse. Et chaque reponse est une nouvelle question." Albert EINSTEIN
En cas de Question resolu, n'oubliez pas
alors, si c'est le rafraichissement qui pose pb, pourquoi ça rame pendant 10min? Pendant ce laps de temps, où je rends la main au système, l'UC est toujours à 98
Xavier
Ben oui !
Passes donc tes données à une box (listbox ou combobox) ou à un tableau dynamique, utilisé(e)(s) en tremplin.... (il me semble, non ?)... fermes l'accès à ta BD .... travailles... et rouvres 10 minutes plus tard pour rafraichir tout çà !... et rebelote toutes les 10 minutes, ma foi !
donc si je comprend bien ton UC rame tout le temps que dure ton progamme en memoire ??
"Toute question a une reponse. Et chaque reponse est une nouvelle question." Albert EINSTEIN
En cas de Question resolu, n'oubliez pas
dit moi combien de donnees tu as dans ta BD et aussi combien tu pourais (estimation au moyene) avoir en 10 min ??
"Toute question a une reponse. Et chaque reponse est une nouvelle question." Albert EINSTEIN
En cas de Question resolu, n'oubliez pas
un nombre incalculable dans la base, mais entre quatre et cinq qui sortent dans le datagrid du fait que je fais un gros tris...
Xavier
raison de plus pour passer par un tremplin (une sacrée économie, s'il ne s'agit, en plus, que de conserver 4 ou 5 enregistrements en mémoire !)mais entre quatre et cinq qui sortent dans le datagrid du fait que je fais un gros tris...
vu le fait que tu fait un gros tris dans une base de donnees qui en possede un nombre incalculable, et tout ceci sur 98 (au fait c koi ta BD ??) alors tu pourais faire une vue de ta base (avec comme donnees les resultats de ta requette) et ensuite tu va juste recuperer les donnees dans la vue. c'est juste une idee.
"Toute question a une reponse. Et chaque reponse est une nouvelle question." Albert EINSTEIN
En cas de Question resolu, n'oubliez pas
base de données : firebird
mais je crois que je vais utiliser la méthode tremplin proposé précédemment par jmfmarques.
Mais si quelqu'un à d'autres propositions à faire, pas d'hésitation...
Xavier
bon, apparemment, si je fais mon tremplin, et si à la place de
je mets
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 PauseTime = 600 ' Définit la durée. 'Start = Timer ' Définit l'heure de début. 'On donne la main au système 'DoEvents 'Do While Timer < Start + PauseTime ' DoEvents ' Donne le contrôle à d'autres processus. 'Loop 'Finish = Timer ' Définit l'heure de fin. TotalTime = Finish - Start ' Calcule la durée totale.
je reviens dans un cadre normal au niveau de l'UC.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Sleep 300000
Mais comme Sleep ne me donne pas la main, si je veux le fermer mon appli, ça plante (le programme ne répond pas) tout simplement parce que je n'ai pas utilisé de DoEvents...
Donc ça va toujours pas...
Xavier
c'est donc bien la boucle pour le comptage du temps qui pose problème.
Maintenant, ce que je comprends pas, c'est que dans la boucle il ya un DoEvent qui est censé passer la main au système...
Xavier
ben ! maintenant que tu as libéré ton UC convenablement :
Tu peux très bien revenir à ton principe originel de timer !
Tel qu'il était avant :
- un doevents tant que ne se sont pas écoulées tes 10 minutes
- un "rafraichissement" (ouverture de ta base - alimentation de ton tremplin) une fois écoulé ce délai
- une fermeture de ta base
- un redémarrage de ton timer
Voilà tout , ma foi ! tu as toutes les clefs pour jouer comme tu le veux, maintenant, sans occuper sans cesse les ressources de ton UC
heu... C'est la boucle de Timer qui pose problème... Si je fais ce que tu dis je reviens (presque) au point de départ, à savoir que mon UC est à 98 à cause de cette maudite boucle
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Do While Timer < Start + PauseTime DoEvents ' Donne le contrôle à d'autres processus. Loop
Xavier
Dans ce cas : gères autrement qu'en utilisant la fonction Timer !
En synoptique, après avoir mis en "Private" la variable depart (heure de depart)
j'ai ici utilisé les balises codes uniquement pour y voir plus clair (ce n('est pas du code)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 - Relevé de l'heure de départ - à l'heure d'une tentative de saisie ou de modif : relevé de l'heure et si : a) 10 minutes ne se sont pas écoulées : on ne touche à rien b) 10 minutes ou plus se sont écoulées : 1) ou rouvre la BD 2) on "rafraichit" tout 3) on redéfinit la valeur de la variable depart 4) on ferme la BD
Avec ce procédé, la boucle elle-même disparait (et plus besoin de Doevents)
Re,Envoyé par jmfmarques
Juste pour info:
Pour le code qui est indiqué ci-dessus, j'ai donné quelques détails sur la 1ère page avec l'utilisation d'un contrôle "Timer"
+
Théo
Forums VB : lire la notice
La touche existe pour être utilisée
Pensez au tag
Pour ceux n'ayant pas l'aide installée :
- Aide MSDN pour VB6
- Aide MSDN pour VBA
Je ne réponds pas aux questions techniques par MP. Merci d'utiliser le forum fait pour çà.
je veux pas faire le difficile, mais le seul problème, c'est qu'il n'y a pas de tentative de saisie ou de modif, l'appli est censée fonctionner seule et renvoyer des messages en cas de nouvel enregistrement qui s'afficheEnvoyé par jmfmarques
Xavier
Alors : un contrôle Timer (voir qui te l'a dit plus haut) au lieu de la fonction Timer !
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager