Liste déroulante et mise à jour

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
3stone
Le #17265531
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)
Loïc V.
Le #17267051
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)




Loïc V.
Le #17277301
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
3stone
Le #17282421
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)
Loïc V.
Le #17285661
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)




Loïc V.
Le #17285861
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.
3stone
Le #17290961
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)
Loïc V.
Le #17294351
Merci beaucoup!

en guise de remerciement, ce qui m'a fiat penser à toi lors des multples
fois où je suis allé visiter tes liens:
Loïc V.
Le #17296521
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:




Publicité
Poster une réponse
Anonyme