OVH Cloud OVH Cloud

Mise à jpur sur On Change

7 réponses
Avatar
Régis
Bonjour,
J'aimerais faire une mise =E0 jour sur l'=E9v=E8nement on change de chaque
contr=F4le.
peut-on passer par la collection controls pour =E9viter de le faire
manuellement =E0 chaque contr=F4le,
Du genre:

Dim ctl as control
For each ctl in controls
On Change DoCmd.OpenQuery("NomQuery")
Next ctl

Merci regis

7 réponses

Avatar
Raymond [mvp]
Bonjour.
l'événement OnChange se produit à chaque changement de valeur du contrôle.
Dans un formulaire, tout est contrôle, en passant par les zones de liste,
les zones de texte , les étiquettes, les liens hypertexte etc......
il faudait affiner ta question et dire ce que tu veux faire exactement et à
partir de quel type de contrôle.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Régis" a écrit dans le message de
news:
Bonjour,
J'aimerais faire une mise à jour sur l'évènement on change de chaque
contrôle.
peut-on passer par la collection controls pour éviter de le faire
manuellement à chaque contrôle,
Du genre:

Dim ctl as control
For each ctl in controls
On Change DoCmd.OpenQuery("NomQuery")
Next ctl

Merci regis
Avatar
3stone
Salut,

"Régis"
J'aimerais faire une mise à jour sur l'évènement on change de chaque
contrôle.
peut-on passer par la collection controls pour éviter de le faire
manuellement à chaque contrôle,
Du genre:

Dim ctl as control
For each ctl in controls
On Change DoCmd.OpenQuery("NomQuery")
Next ctl
-----------------------------


"On Change" n'est sûrement pas le bon événement pour faire ce genre de chose...

Lors d'une saisie de 50 caractères dans une zone de texte, l'événement "On change" se produira... 50
fois !


--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
Email : http://www.cerbermail.com/?Xfg61Z3IQw
Avatar
Régis
Bonjour,
ce que je voudrais faire, c'est faire une MAJ sur des textbox à partir
du même contrôle dans une autre table avec un critère qui est
toujours le même à part le nom du contrôle.
Donc, pour éviter d'avoir à l'écrire manuellement dans chaque champ
de le requête MAJ, je voudrais inscrire ce critère par VBA ds la
collection Controls.
J'ai peur que çà ne soit pas très clair,
Merci
Régis
Avatar
Raymond [mvp]
Bonjour.

ce n'est pas clair du tout, surtout dans le but à atteindre.
en quoi consiste cette mise à jour ? il va falloir que tu passes par le
détail.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Régis" a écrit dans le message de
news:
Bonjour,
ce que je voudrais faire, c'est faire une MAJ sur des textbox à partir
du même contrôle dans une autre table avec un critère qui est
toujours le même à part le nom du contrôle.
Donc, pour éviter d'avoir à l'écrire manuellement dans chaque champ
de le requête MAJ, je voudrais inscrire ce critère par VBA ds la
collection Controls.
J'ai peur que çà ne soit pas très clair,
Merci
Régis
Avatar
Régis
ReBonjour,
Allons-y

J'ai une bdd gestion avec une table Commandes et une autre bdd
ProspectsAllemagne
avec une table CommandesAllemagne. Les 2 tables sont liées et je
voudrais faire une
MAJ automatique entre les 2 tables. donc, j'ai conçu une requête MAJ
qui fonctionne
sur l'évènement Afterupdate (mieux que sur Onchange). Mon souci,
c'est que je voudrais
que ne soit mis à jourque le champ qui est modifié et non pas tous
les champs
chaque foisqu'il y a un contrôlemodifié.(il y a > de 30 champs).

donc, dans la requête, dans le champ CommandesAllemagne.[NomControle],
j'ai mis un
critère <> Commandes.[NomControle]. D'ailleurs, ça ne marche pas ds
cette requête,
alors que çà marche pour les autres, mais c'est un autre problème.
Mon idée, par paresse, plutôt que de taper dans chaque champ de la
requête le critère avec à chaque fois <>Commandes.[NomControle],
passer par VBA :
Pour chaque controle, sur evenement Afterupdate,executer requete.
Est-ce que je suis à côté de la plaque?

Merci
Régis
Avatar
Raymond [mvp]
Je comprends mieux. tu n'es pas à côté de la plaque mais à cent lieux.
tu n'as pas besoin de prévoir une mise à jour de tes contrôles dans les
différentes tables en relation.
Solution:
Tu crées une requête en indiquant toutes les tables nécessaires et en créant
les relations inexistantes.
Tu crées un formulaire basé sur cette requête.
C'est tout.
Chaque fois que tu modifieras un contrôle, celui-ci ayant son control-source
sur un champ de ta requête, le champ de la table correspondante sera
immpédiatement et automatiquement mis à jour.

Bien entendu, pour que ta requête soit modifiable, il ne faut pas qu'elle
soit une requête de regroupement.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Régis" a écrit dans le message de
news:
ReBonjour,
Allons-y

J'ai une bdd gestion avec une table Commandes et une autre bdd
ProspectsAllemagne
avec une table CommandesAllemagne. Les 2 tables sont liées et je
voudrais faire une
MAJ automatique entre les 2 tables. donc, j'ai conçu une requête MAJ
qui fonctionne
sur l'évènement Afterupdate (mieux que sur Onchange). Mon souci,
c'est que je voudrais
que ne soit mis à jourque le champ qui est modifié et non pas tous
les champs
chaque foisqu'il y a un contrôlemodifié.(il y a > de 30 champs).

donc, dans la requête, dans le champ CommandesAllemagne.[NomControle],
j'ai mis un
critère <> Commandes.[NomControle]. D'ailleurs, ça ne marche pas ds
cette requête,
alors que çà marche pour les autres, mais c'est un autre problème.
Mon idée, par paresse, plutôt que de taper dans chaque champ de la
requête le critère avec à chaque fois <>Commandes.[NomControle],
passer par VBA :
Pour chaque controle, sur evenement Afterupdate,executer requete.
Est-ce que je suis à côté de la plaque?

Merci
Régis
Avatar
Régis
Merci beaucoup Raymond.
Ca marche super.
C'est juste un peu plus simple.
Régis