OVH Cloud OVH Cloud

pb requery

7 réponses
Avatar
Jean Marc
Bonjour à tous,
J'ai un problème de requery qui me semble idiot.
Sur un formulaire j'ai une zone de liste.
Sur événement click dans cette zone de liste j'enclenche une requête,
fonction de la valeur sélectionée.
Cette requête se passe bien.
En plus de cette zone de liste j'ai deux contrôles calculés qui font, l'un
une somme, et l'autre un compte.
Or ces champs ne se mettent pas à jour si j'enchaîne les requêtes dans ma
zone de liste !
Pour en avoir le coeur net j'ai installé un bouton qui lance un requery. Je
l'actionne après le lancement de la requête. Et ce bouton me lance bien les
calculs, et les contrôles se mettent à jour sans problème.
Mais un requery placé dans le code après la requête ne fonctionne pas.
Je résume :
un requery placé sur événement click bouton ==> OK
un requery placé sur événement click dans la liste ==> NOK

Quelqu'un aurait-il une piste ?

Merci et bon week-end.

Jean Marc

7 réponses

Avatar
Eric
Bonjour,

J'opterai pour l'évènement Après Mise à jour de la liste (AfterUpdate)
et non sur Click() de la liste.

Bonjour à tous,
J'ai un problème de requery qui me semble idiot.
Sur un formulaire j'ai une zone de liste.
Sur événement click dans cette zone de liste j'enclenche une requête,
fonction de la valeur sélectionée.
Cette requête se passe bien.
En plus de cette zone de liste j'ai deux contrôles calculés qui font,
l'un une somme, et l'autre un compte.
Or ces champs ne se mettent pas à jour si j'enchaîne les requêtes dans
ma zone de liste !
Pour en avoir le coeur net j'ai installé un bouton qui lance un requery.
Je l'actionne après le lancement de la requête. Et ce bouton me lance
bien les calculs, et les contrôles se mettent à jour sans problème.
Mais un requery placé dans le code après la requête ne fonctionne pas.
Je résume :
un requery placé sur événement click bouton ==> OK
un requery placé sur événement click dans la liste ==> NOK

Quelqu'un aurait-il une piste ?

Merci et bon week-end.

Jean Marc





--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Jean Marc
"Eric" a écrit dans le message de news:

Bonjour,

J'opterai pour l'évènement Après Mise à jour de la liste (AfterUpdate) et
non sur Click() de la liste.


Bonjour,
j'ai testé aussi et c'est idem.
J'ai d'ailleurs passé en revue toutes les possibilités d'événement
exhaustivement sans résultat.
Seule le passage par un bouton fonctionne.
Je viens de créer une fonction que j'ai placée dans un module.
Lorsque je l'appelle par le bouton, mes contrôles affichent leur calcul.
J'appelle la même fonction par le nom de la fonction sur l'événement de ma
liste et mes contrôles se vident et restent vides.

Pour l'instant mystère.

Jean Marc

Avatar
Jean Marc
"Eric" a écrit dans le message de news:

Bonjour,

J'opterai pour l'évènement Après Mise à jour de la liste (AfterUpdate) et
non sur Click() de la liste.


J'ai peut-être une idée.

Par quelle commande en VBA puis-je mettre un temporisateur entre deux lignes
de commandes ?

JM

Avatar
Eric
re,
La requête que tu lances après sélection dans la liste devient bien la
source du formulaire contenant les 2 champs calculés ?

Bonjour,
j'ai testé aussi et c'est idem.
J'ai d'ailleurs passé en revue toutes les possibilités d'événement
exhaustivement sans résultat.
Seule le passage par un bouton fonctionne.
Je viens de créer une fonction que j'ai placée dans un module.
Lorsque je l'appelle par le bouton, mes contrôles affichent leur calcul.
J'appelle la même fonction par le nom de la fonction sur l'événement de
ma liste et mes contrôles se vident et restent vides.

Pour l'instant mystère.

Jean Marc


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Jean Marc
"Eric" a écrit dans le message de news:

re,
La requête que tu lances après sélection dans la liste devient bien la
source du formulaire contenant les 2 champs calculés ?


Oui.
Mais je crois que j'ai trouvé.
En fait quand je clique sur le bouton il s'est passé un certain temps depuis
la MAJ.
C'est pour ça que ça marche.
Apparemment le requery kuste après la requête est trop rapide.
Si je met un requery sur minuterie de 2 secondes mes contrôles se
réinitialisent bien.
Sauf que toutes les 2s le requery se relance !
Il faut que j'intercale un timer entre la requête et le requery dans mon
code et ça devrait le faire.
Je cherche la syntaxe dans ma doc.

Merci pour l'aide.

Jean Marc

Avatar
Eric
Voila 2 solutions :
1 - Dans ton module de formulaire et dans la partie Déclarations:
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As
Long)
Dans la procédure:
Sleep 2000 ' attente de 2 secondes

ou éventuellement

2 - un DoEvents après le requery


Oui.
Mais je crois que j'ai trouvé.
En fait quand je clique sur le bouton il s'est passé un certain temps
depuis la MAJ.
C'est pour ça que ça marche.
Apparemment le requery kuste après la requête est trop rapide.
Si je met un requery sur minuterie de 2 secondes mes contrôles se
réinitialisent bien.
Sauf que toutes les 2s le requery se relance !
Il faut que j'intercale un timer entre la requête et le requery dans mon
code et ça devrait le faire.
Je cherche la syntaxe dans ma doc.

Merci pour l'aide.

Jean Marc




--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Jean Marc
"Eric" a écrit dans le message de news:
e1%
Voila 2 solutions :
1 - Dans ton module de formulaire et dans la partie Déclarations:
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As
Long)
Dans la procédure:
Sleep 2000 ' attente de 2 secondes


Ok mais j'ai mis :
Declare Sub Sleep Lib "kernel32" Alias "Sleep" (ByVal dwMilliseconds As
Long)

L'autre syntaxe se mettait en rouge tout de suite dans le module.

Merci pour l'aide ça m'a débloqué.

Bonen soirée

Jean Marc