[visual basic 6] Comment faire une pause dans le programme ?

Comment faire une pause dans le programme ? [visual basic 6] - Programmation

Marsh Posté le 18-11-2001 à 18:50:42    

:hello:  
 
je cherche a faire une pause dans mon programmme  
parcequ'il faut attendre un peu avant de rafraichir une datagrid apres avoir modifie la base de donnees a laquelle elle est associee
 
qq sait-il comment il faut faire ??
j'ai pas trouve de truc genre pause ou wait ...  :(  
 
 :jap:


---------------
Ca marche pas sauf des fois ........
Reply

Marsh Posté le 18-11-2001 à 18:50:42   

Reply

Marsh Posté le 18-11-2001 à 19:35:57    

Salut !
 
Je crois que c'est "sleep" suivi du temps à attendre (en ms) qui permet de faire une pause.
 
PS : je t'amène les CD de doc mardi.

 

[edtdd]--Message édité par JBM--[/edtdd]

Reply

Marsh Posté le 19-11-2001 à 12:37:58    

comprends pas , le compilateur dit :
 
Procedure Sub ou Function non definie  :??:  
 
il y a un truc a definir ???
 
ps: il faut peut etre que je recompile le noyau non ?  :pt1cable:


---------------
Ca marche pas sauf des fois ........
Reply

Marsh Posté le 19-11-2001 à 13:30:30    

je crois pas que ce soit une bonne solution (si ele marche !)
tu ne doit pas bloquer ton programme a un endroit comme tu le ferais avec un sleep : ton programme n'est pas sequentiel mais evenementiel
si tu fais ca, ca va bloquer tout ton programme (il va etre "gele" ) pdt le temps d'attente
et en plus tu monopolises le processeur pour rien
essai plutot une solution a base de timer


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 19-11-2001 à 14:22:17    

CaMarchePoa a écrit a écrit :

comprends pas , le compilateur dit :
 
Procedure Sub ou Function non definie  :??:  
 
il y a un truc a definir ???
 
ps: il faut peut etre que je recompile le noyau non ?  :pt1cable:  




 
C'est normal, il faut déclarer la fonction qui fait appel à l'API kernel32 en fait :
 

Code :
  1. Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)


 
Mais c'est vrai que c'est peut être pas la meilleure solution puisque tout le programme est endormi. Essaie la solution d'HelloWorld ;)

Reply

Marsh Posté le 19-11-2001 à 14:31:46    

Etant donne que tu ne connais pas le temps de reponse de ta requete, tu comptes mettre quelle valeur dans ton sleep ???
 
Je te conseille plutot de boucler sur une requete select SQL qui te permet de savoir QUAND ta base est MAJ  ;)  
 
M'enfin ce que j en dis ...

Reply

Marsh Posté le 19-11-2001 à 14:37:51    

HelloWorld a écrit a écrit :

 
et en plus tu monopolises le processeur pour rien




 :??:  
 
sinon essaye Sleep( 0xFFFFFFFF ); :D

Reply

Marsh Posté le 19-11-2001 à 15:58:22    

je vais essayer le coup du timer
 
pour l'instant pour que ca marche je fais :
 
   ' delai qui permet a la bdd de se mettre a jour
   Dim a As Integer
   For intCounter = 0 To 10000
        a = 0
        For inttCpt = 0 To 2500
            a = a + 1
        Next
    Next
   ' fin du delai
 
 :eek2: ce qui est un peu bourin vous en conviendrez  :lol:  
 
 :ange:


---------------
Ca marche pas sauf des fois ........
Reply

Marsh Posté le 19-11-2001 à 16:00:25    

Bloodymary_ a écrit a écrit :

Etant donne que tu ne connais pas le temps de reponse de ta requete, tu comptes mettre quelle valeur dans ton sleep ???
 
Je te conseille plutot de boucler sur une requete select SQL qui te permet de savoir QUAND ta base est MAJ  ;)  
 
M'enfin ce que j en dis ...  




 
 :ouch: g pas tout compris  :(  
 
comment faire pour savoir qd la base est mise a jour ???????
 
si tu pouvait etre plus precis ce serrait cool pazque ca semble mieux que le timer qui depends de la vitesse du pc ....  :jap:

 

[edtdd]--Message édité par CaMarchePoa--[/edtdd]


---------------
Ca marche pas sauf des fois ........
Reply

Marsh Posté le 19-11-2001 à 16:27:07    

TheJackal> bah j'avais pas capte que c'etait un sleep systeme
je pensais que c'etait une fonction genre boucle sans fin ...


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 19-11-2001 à 16:27:07   

Reply

Marsh Posté le 19-11-2001 à 16:39:47    

Et pourquoi pas :
temps=date+time
do while date+time < temps + 5/1440 '5/1440 = 5 secondes
doevents 'permet de faire autre chose
loop
 
Le Timer se réinitialise tous les jours à minuit. ça peut être gênant ; grâce à ça, le programme peut fonctionner tout le temps. Mais ça consomme toute la puissance CPU ; voir le post que je viens de poster (un peu pareil que celui là...)

Reply

Marsh Posté le 19-11-2001 à 17:11:58    

----
g pas tout compris      
comment faire pour savoir qd la base est mise a jour ???????  
si tu pouvait etre plus precis ce serrait cool pazque ca semble mieux que le timer qui depends de la vitesse du pc ....  
----
 
 
Ben je sais pas ce que tu fais kom MAJ sur tes donnees mais t as peut etre moyen de lancer une requete(rapide) qui teste que ta MAJ a bien ete effectuee ou pas encore (un nb d enregs avant et apres requete par exemple) ou une recherche sur un enreg precis  
 
ca depend essentiellement de la forme de MAJ que tu fais

Reply

Marsh Posté le 19-11-2001 à 17:52:13    

ok
 
comme j'ajoute un enregistrement c facile : je compte leur nb et c bon
 
c une bonne idee !!
tant que le nb a pas augmente j'attends ...


---------------
Ca marche pas sauf des fois ........
Reply

Marsh Posté le 19-11-2001 à 19:05:54    

un DoEvents ne suffit pas ?

Reply

Marsh Posté le 20-11-2001 à 11:15:48    

il faut effectivement utiliser DoEvents, qui permettra alors d'interrompre  le pgm ...

Reply

Marsh Posté le 20-11-2001 à 11:39:30    

:sarcastic:   le doevents ne fait que rendre la main au systeme
ca ne solutionne rien tout seul

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed