Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Liste déroulante et mise à jour

9 réponses
Avatar
Loïc V.
Bonjour,

J'ai trois tables: Pays, Région, Ville.
Elles sont reliées entre elles de sortes à ce que je dois entamer les
enregistrements d'abord dans la table pays, qui me propose alors les régions,
puis ensuite les villes. (Pays reliée à région par une liaison inf,1, région
à ville par inf,1).

Lorsque je l'insère dans un formulaire, j'aimerais que si je choisis
"France" (via une liste de choix), ils ne me donnent le choix que des région
françaises, et ensuite les villes correspondantes à cette région. (remarque:
j'ai relié les trois tables au dit formulaire)

Actuellement, je choisis parmis tous les pays, dans la liste "Région", j'ai
toutes les régions de tous les pays, et dans "villes", toutes les villes
d'europe.

Je suppose qu'il y a moyen d'y arriver avec une mise à jour, mais je patauge
dans la semoule avec le VB...

J'ai bien essayer pas mal de trucs, regarder les différentes discussions,
mais je n'y ai rien trouvé qui collait à mon problème. Je suppose donc que
c'est une sorte d'ABCD...

J'y arrive en créant des sous-formulaires, mais ce n'est pas ce que je
désire car pas assez clair d'utilisation.

Pouvez-vous m'aider ?

Merci beaucoup.

Loïc

9 réponses

Avatar
3stone
Salut,

"Loïc V."
| J'ai trois tables: Pays, Région, Ville.
| Elles sont reliées entre elles de sortes à ce que je dois entamer les
| enregistrements d'abord dans la table pays, qui me propose alors les régions,
| puis ensuite les villes. (Pays reliée à région par une liaison inf,1, région
| à ville par inf,1).
|
| Lorsque je l'insère dans un formulaire, j'aimerais que si je choisis
| "France" (via une liste de choix), ils ne me donnent le choix que des région
| françaises, et ensuite les villes correspondantes à cette région. (remarque:
| j'ai relié les trois tables au dit formulaire)
|
| Actuellement, je choisis parmis tous les pays, dans la liste "Région", j'ai
| toutes les régions de tous les pays, et dans "villes", toutes les villes
| d'europe.


Tu dois "lier" ces listes...

Expliqué en détail et image ici :
http://www.self-access.com/access/grenier/acRedir.php?id

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Avatar
Loïc V.
Merci beaucoup 3stone!

Bon, j'ai bien essayé de faire comme le lien que tu m'as donné le conseille.
Je n'arrive pas à suivre pas à pas leur exemple car je ne dispose pas de
l'icône "Zone de liste modifiable" (est-ce spécifique à access 2007 ? Parce
que je suis encore sur le 2003). Mais bon, là n'est pas le plus important, je
crois avoir compris que cela servait juste à établir une zone de liste qui va
pêcher les infs dans une table (ou requête).==> si c'est pas le cas, tu
m'arrêtes, hein?

Bon, du coup, j'ai créé une requête sur base de la table "Région" qui
reprend le nom des régions (enregistrement manuel) et le nom des pays (qui
pointe vers la table pays). Comme mentionné dans l'exemple, j'ai écrit comme
critère dans la "colonne" pays:

forms![Arrivée].pays

[arrivée] étant le nom du formulaire dans lequel j'aimerais que le filtre se
fasse.
pays étant le nom que j'ai donné à la liste de choix dans la table Région
pour pêcher les pays dans la table Ad'hoc.

Mais lorsque je vaux activer la requête, cela m'indique un truc que j'aime
pas:

formulaires!Arrivée.pays ==> sous leque je suis censé iniqué qqchose (donc,
il y a un truc qui cloche). bon, pas de blème, je me suis dit que cela allait
s'emboiter avec ce qu'il fallait rajouter dans mon formulaire.

donc, je vais dans mon formulaire, je sélectionne la liste de choix
"Région", je vais dans les propriétés, sur "après MAJ", je tape donc:

Me! [pays] .Requery

je sauvegarde et tout et tout.

Le résultat, c'est que mn formulaire me donne le choix du pays (ok), ensuite
je désire choisir la région rt là, hop, c'est encore toutes les régions qui
se déroulent (snif!). Si j'en sélectionne une, il m'indique un message
d'erreur.

Où est-ce que j'ai foiré ?

Si tu as le temps d'y réponse, je te serai très reconnaissant.

bien à toi,

Loïc











"3stone" a écrit :

Salut,

"Loïc V."
| J'ai trois tables: Pays, Région, Ville.
| Elles sont reliées entre elles de sortes à ce que je dois entamer les
| enregistrements d'abord dans la table pays, qui me propose alors les régions,
| puis ensuite les villes. (Pays reliée à région par une liaison inf,1, région
| à ville par inf,1).
|
| Lorsque je l'insère dans un formulaire, j'aimerais que si je choisis
| "France" (via une liste de choix), ils ne me donnent le choix que des région
| françaises, et ensuite les villes correspondantes à cette région. (remarque:
| j'ai relié les trois tables au dit formulaire)
|
| Actuellement, je choisis parmis tous les pays, dans la liste "Région", j'ai
| toutes les régions de tous les pays, et dans "villes", toutes les villes
| d'europe.


Tu dois "lier" ces listes...

Expliqué en détail et image ici :
http://www.self-access.com/access/grenier/acRedir.php?id

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)




Avatar
Loïc V.
Re-Bonjour!

je cherche, je creuse... (c'est comme cela qu'on apprend, n'est-il-pas?)

J'ai bien réanlysé ton lien, 3stone, j'ai fini par arriver à un truc qui
semble sur la bonne voie.

Pour pas foutre le B... dans ma base de données, j'en ai créé une autre à
titre d'essais. J'ai donc créé deux table: pays, région. J'ai fait une
requête comme indiqué sur ton lien (nmmée "pays requête")

Si je double clique sur cette requête, il me demande un nom de pays, je tape
un pays, et hop!, il m'indique toutes les régions de ce pays (c'est déjà un
petit pas en avant!).


J'ai créé un formulaire avec uniquement Pays et région.

Pour "Pays", j'ai droit à un menu déroulant; dans propriété, j'ai mis dans
"après MAJ": =[Pays Requête]!Région.

Pour région, j'ai mis une zone de liste modifiable (le petit icône que j'ai
fini par trouver, je suis un tantinet myope, ou très con...) qui va
rechercher les données dans la requête.

Alors, lorsque j'ouvre le formulaire, bingo!. Par défaut, il me met
"Espagne", et il me met les régions uniquement qui se trouvent en Espagne.

Mais si dans le menu déroulant "Pays", je choisis un autre pays, alors,
c'est Bankroutte (re-snif).

1) Il me met un message d'erreur: "L'expression MAJ entrée comme paramètre
de la propriété de type évènement est à l'origine d'une erreur. L'objet ne
contient pas d'objet d'automatisation "Pays.requête".

2) La première région enregistrée dans la table "région" se trouve
subitement en Esoagne (ce qui n'est pas le cas, conviendras-tu ?).

3) Bon, soit, j'enregistre. Et là, hop, j'ai une région par défaut qui se
met dans la liste déroulante du formulaire. si je choisis un pays, dans ma
table, j'ai cette région associée à ce pays.

qu'es ce que j'ai fait pour que cela foire de la sorte ?

Merci beaucoup.

loïc
Avatar
3stone
Salut,

"Loïc V."
| je cherche, je creuse... (c'est comme cela qu'on apprend, n'est-il-pas?)


Bien sûr ;-)


| Pour pas foutre le B... dans ma base de données, j'en ai créé une autre à
| titre d'essais.


Il est effectivement conseillé d'avoir sous la main une petite base dans
laquelle on peut sans crainte faire les tests et mise au points...



|J'ai donc créé deux table: pays, région. J'ai fait une
| requête comme indiqué sur ton lien (nmmée "pays requête")
[...]


En lisant attentivement tout ce qu'il y a sur le lien expliqué, tu devrais
y arriver. Ne pas hésiter à recréer l'exemple donné, car, une fois
compris la méthode, tu appliqueras avec facilité.

Le principe:

Pays, Région, Ville

Tu crées
- requête 1 (source de ta première liste) qui contient
IdPays et NomPays
- requête 2 (source de la seconde liste) qui contient
IdRegion, NomRegion, IdPays
- requête 3 (source de la troisième liste) qui contient
IdVille, NomVille, IdRegion

Tu sélectionnes un pays dans le première liste... et la seconde liste
ne devrait donc t'afficher que les régions de ce pays ?
C'est simple, en complétant la seconde requête par une condition
(une clause Where) qui dira "IdPays = IdPays" (de la première liste)

Pour que la seconde liste tienne compte de la sélection faite dans la
première, il faut juste en faire sa mise à jour.
C'est ce qui s'obtient en ajoutant dans l'événement "Après mise à jour"
de la première liste: ListeRegion.Requery

On fait la même chose pour "lier" la seconde à la troisième liste.

Remarque, en réalité, on ne crée pas des requêtes enregistrées pour
chaque liste, mais on défini la "phrase" SQL dans la propiété "Contenu".
C'est d'ailleurs ce qui se fait automatiquement lorsque l'on crée la
liste à l'aide de l'assistant. Il suffit ensuite de compléter en spécifiant
le critère... comme montré sur l'image dans l'explication fournie par Hervé.
Ensuite, ajouter le requery pour actualiser la liste suivante.

PS: Il faut bien sûr adapter les différents noms des champs et des listes ;-)

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Avatar
Loïc V.
Super!
Ca a marché! (ouf!).
Cela dit, j'ai un peu chipoté, car dans le nom de la liste de choix, il me
mettait "Modifiable x" et "Modifiable Y" (malgré le fait de bien les avoir
nommés CmbActivites et CmbClients quand il me le demandait).

A présent, si je suis dans activité et que je sélectionne "pêche", il va
donc me mettre les clients qui vont à la pêche (aux moules, moules, je n'irai
plus maman, pom,pom, pom.... Lol). Mais, imaginons que je me suis planté, et
que j'aurai voulu mettre cabottage, comment est-ce que je fais ? (parce que
comme il est là, il me laisse pas le choix, il me donne la liste de ceux qui
veulent pêcher).

bon, je cherche, si entretemps tu passes par ici, file moi un petit coup de
filon si tu en as l'occasion.

encore un tout grand merci de tes conseils.

Loïc






"3stone" a écrit :

Salut,

"Loïc V."
| je cherche, je creuse... (c'est comme cela qu'on apprend, n'est-il-pas?)


Bien sûr ;-)


| Pour pas foutre le B... dans ma base de données, j'en ai créé une autre à
| titre d'essais.


Il est effectivement conseillé d'avoir sous la main une petite base dans
laquelle on peut sans crainte faire les tests et mise au points...



|J'ai donc créé deux table: pays, région. J'ai fait une
| requête comme indiqué sur ton lien (nmmée "pays requête")
[...]


En lisant attentivement tout ce qu'il y a sur le lien expliqué, tu devrais
y arriver. Ne pas hésiter à recréer l'exemple donné, car, une fois
compris la méthode, tu appliqueras avec facilité.

Le principe:

Pays, Région, Ville

Tu crées
- requête 1 (source de ta première liste) qui contient
IdPays et NomPays
- requête 2 (source de la seconde liste) qui contient
IdRegion, NomRegion, IdPays
- requête 3 (source de la troisième liste) qui contient
IdVille, NomVille, IdRegion

Tu sélectionnes un pays dans le première liste... et la seconde liste
ne devrait donc t'afficher que les régions de ce pays ?
C'est simple, en complétant la seconde requête par une condition
(une clause Where) qui dira "IdPays = IdPays" (de la première liste)

Pour que la seconde liste tienne compte de la sélection faite dans la
première, il faut juste en faire sa mise à jour.
C'est ce qui s'obtient en ajoutant dans l'événement "Après mise à jour"
de la première liste: ListeRegion.Requery

On fait la même chose pour "lier" la seconde à la troisième liste.

Remarque, en réalité, on ne crée pas des requêtes enregistrées pour
chaque liste, mais on défini la "phrase" SQL dans la propiété "Contenu".
C'est d'ailleurs ce qui se fait automatiquement lorsque l'on crée la
liste à l'aide de l'assistant. Il suffit ensuite de compléter en spécifiant
le critère... comme montré sur l'image dans l'explication fournie par Hervé.
Ensuite, ajouter le requery pour actualiser la liste suivante.

PS: Il faut bien sûr adapter les différents noms des champs et des listes ;-)

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)




Avatar
Loïc V.
Bein, heuuuu, en fait, ça marche très bien sans le "Me![cmbClients].Requery ".
Ma question précédente vient sans doute dut fait que je dois foirer dans
l'étape de mise à jour.

C'est-bien dans la première liste qu'il faut mettre à jour ?

Merci.
Avatar
3stone
Salut,

"Loïc V."
| Bein, heuuuu, en fait, ça marche très bien sans le "Me![cmbClients].Requery ".
| Ma question précédente vient sans doute dut fait que je dois foirer dans
| l'étape de mise à jour.
|
| C'est-bien dans la première liste qu'il faut mettre à jour ?


Heu... normalement ;-) c'est sur "après mise à jour" de la liste 'x' que l'on
fait un "requery" sur la suivante... Simplement pour qu'elle puisse restreindre
selon la sélection justement réalisée...

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Avatar
Loïc V.
Merci beaucoup!

en guise de remerciement, ce qui m'a fiat penser à toi lors des multples
fois où je suis allé visiter tes liens:
Avatar
Loïc V.
heu...
En fait, 3stone, ca me mettait la musique des "Fingstones" en tête.

Merci beaucoup pour ton aide.





"Loïc V." a écrit :


Merci beaucoup!

en guise de remerciement, ce qui m'a fiat penser à toi lors des multples
fois où je suis allé visiter tes liens: