OVH Cloud OVH Cloud

Arreter execution

5 réponses
Avatar
Twister
Bonjour,
Je voudrai savoir comment faire pour arreter l'execution d'une requete ou
plus généralement d'une instruction qui dure longtemp. En gros mon probleme
est que j'ai une requette qui peut durer longtemp à l'execution et je
souhaite faire un bouton annuler mais meme en placant un timer je ne récupere
le controle uniquement apres l'execution de la requete donc ca ne marche pas.
Comment faire please je v peter un cable g tt essayé ou presque....;o)

5 réponses

Avatar
LE TROLL
Salut, faut mettre un
DoEvents
------------

"Twister" a écrit dans
le message de news:

Bonjour,
Je voudrai savoir comment faire pour arreter l'execution
d'une requete ou
plus généralement d'une instruction qui dure longtemp. En
gros mon probleme
est que j'ai une requette qui peut durer longtemp à
l'execution et je
souhaite faire un bouton annuler mais meme en placant un
timer je ne récupere
le controle uniquement apres l'execution de la requete
donc ca ne marche pas.
Comment faire please je v peter un cable g tt essayé ou
presque....;o)


Avatar
Thierry Bertrand
Mauvaise réponse:

Si la requète en question est lancée avec une instruction du style
curdb.excute "instruction SQL"

alors il faudra dire où on intercalle le "doevents()".

Pour rendre la main, il faudrait que ce soit la requète elle même qui libère
le processeur. D'où l'utilisation d'une procédure stockée, ou assimilée (par
exemple sur access on pourrait simuler une procédure stockée à l'aide de
l'appel d'une macro)

Pour fournir une réponse circonstanciée, il faut savoir comment la requète
est lancée, sur quelle type de base de données, etc...
Il ne suffit pas de balancer: il faut mettre un doevents pour donner une
réponse digne ce nom.

Thierry dont la devise est "mieux vaut se taire que de dire une anerie. Pas
pour soi, mais pour les autres qui pourraient la prendre aux pieds de la
lettre, et faire des betises, voir pire, perdre du temps." (citation à
traduire en latin please)


"LE TROLL" <le a écrit dans le message de news:

Salut, faut mettre un
DoEvents
------------

"Twister" a écrit dans
le message de news:

> Bonjour,
> Je voudrai savoir comment faire pour arreter l'execution
> d'une requete ou
> plus généralement d'une instruction qui dure longtemp. En
> gros mon probleme
> est que j'ai une requette qui peut durer longtemp à
> l'execution et je
> souhaite faire un bouton annuler mais meme en placant un
> timer je ne récupere
> le controle uniquement apres l'execution de la requete
> donc ca ne marche pas.
> Comment faire please je v peter un cable g tt essayé ou
> presque....;o)




Avatar
Patrick Philippot
Thierry Bertrand wrote:
Pour rendre la main, il faudrait que ce soit la requète elle même qui
libère le processeur. D'où l'utilisation d'une procédure stockée, ou
assimilée (par exemple sur access on pourrait simuler une procédure
stockée à l'aide de l'appel d'une macro)



J'abonde. Il faudrait savoir si la technologie utilisée (ADO par
exemple) permet l'envoi de requêtes asynchrones, ce qui règle le
problème.

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
Avatar
Driss HANIB
d'accord avec toi
effectivement une requête sur BDD une fois lancée ne s'arrête pas
le doevents est une fonction VB et pas du moteur de BDD

Ou alors il faut décomposer une grossse requête en plusieurs petites (si
possible)

Driss

"Thierry Bertrand" a écrit dans le message de
news:uu7xB%
Mauvaise réponse:

Si la requète en question est lancée avec une instruction du style
curdb.excute "instruction SQL"

alors il faudra dire où on intercalle le "doevents()".

Pour rendre la main, il faudrait que ce soit la requète elle même qui


libère
le processeur. D'où l'utilisation d'une procédure stockée, ou assimilée


(par
exemple sur access on pourrait simuler une procédure stockée à l'aide de
l'appel d'une macro)

Pour fournir une réponse circonstanciée, il faut savoir comment la requète
est lancée, sur quelle type de base de données, etc...
Il ne suffit pas de balancer: il faut mettre un doevents pour donner une
réponse digne ce nom.

Thierry dont la devise est "mieux vaut se taire que de dire une anerie.


Pas
pour soi, mais pour les autres qui pourraient la prendre aux pieds de la
lettre, et faire des betises, voir pire, perdre du temps." (citation à
traduire en latin please)


"LE TROLL" <le a écrit dans le message de news:

> Salut, faut mettre un
> DoEvents
> ------------
>
> "Twister" a écrit dans
> le message de news:
>
> > Bonjour,
> > Je voudrai savoir comment faire pour arreter l'execution
> > d'une requete ou
> > plus généralement d'une instruction qui dure longtemp. En
> > gros mon probleme
> > est que j'ai une requette qui peut durer longtemp à
> > l'execution et je
> > souhaite faire un bouton annuler mais meme en placant un
> > timer je ne récupere
> > le controle uniquement apres l'execution de la requete
> > donc ca ne marche pas.
> > Comment faire please je v peter un cable g tt essayé ou
> > presque....;o)
>
>




Avatar
Guy DETIENNE
Salut ;O)

Il est vrai que tes réponses sont souvent trop simplistes et pourraient
déstabiliser la personne qui à posé la question.
Tu devrais préciser le cas où un DoEvents peut être utilisé. DoEvents ne
règle en général que le problème dans des boucles internes au programme. Et
encore, il doit être utilisé à bon minutieusement.

Aussi, Twister précisait qu'il s'agissait d'une requête. Et tu les mets où
le DoEvents ?

Aurais-tu quelques lacunes en VB où alors laches-tu des réponses histoire de
dire quelque chose.
Heureusement que d'autres participants te reprennent et corrigent le tir !

A bon entendeur.

Guy


"LE TROLL" <le a écrit dans le message de
news:
Salut, faut mettre un
DoEvents
------------

"Twister" a écrit dans
le message de news:

> Bonjour,
> Je voudrai savoir comment faire pour arreter l'execution
> d'une requete ou
> plus généralement d'une instruction qui dure longtemp. En
> gros mon probleme
> est que j'ai une requette qui peut durer longtemp à
> l'execution et je
> souhaite faire un bouton annuler mais meme en placant un
> timer je ne récupere
> le controle uniquement apres l'execution de la requete
> donc ca ne marche pas.
> Comment faire please je v peter un cable g tt essayé ou
> presque....;o)