|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : août 2009 Messages : 140 ![]() |
Bonsoir
Je suis débutant, mais j'essaie d'élaborer des tables Acess "correctes". En particulier, j'ai une table "Enemies" où les utilisateurs peuvent ajouter/modifier les enregistrements. Par conséquent, je souhaite mettre 2 des champs de cette table sous forme de liste déroulante (afin d'éviter que les utilisateurs mettent n'importe quoi ou fautes de frappe). Pour la 1ère liste déroulante, je n'ai pas eu de problème en écrivant la requete suivante: Code :
SELECT DISTINCT [Mob Data].[Family] FROM [Mob Data] Le probleme survient lorsque j'ai voulu écrire la requete construisant la 2eme liste déroulante avec :: Code :
SELECT [Mob Data].[RACE] FROM [Mob Data] WHERE [Mob Data].[Family] = [Enemies].[Family] Quand je clique sur la 2e liste déroulante, Access me sort une pop up me demandant la valeur de Enemies.Family.... alors qu'elle existe déjà (non NULL) juste en face... Quant aux jointures, le problème reste le même... que ce soit avec LEFT JOIN ou INNER JOIN ou RIGHT JOIN... Je ne sait plus quoi faire |
|
|
00
|
|
|
#2 | ||
|
Nouveau Membre du Club
![]() Emmanuel GautierInscription : juin 2010 Messages : 60 ![]() |
Bonjour,
As tu essayé d'actualiser ta seconde liste déroulante sur changement de la première ? Je pense que tu devrais faire ceci Code :
Désolé si je tombe à coté. Manu |
||
|
|
00
|
|
|
#3 |
|
Invité régulier
![]() Inscription : août 2009 Messages : 140 ![]() |
Bonjour et merci pour votre réponse
Je suis débutant je ne sait pas trop où on mets du code dans la fenetre Access (a part la fenetre SQL) Ca m'a l'air d'etre du code VB, m'etonnerait qu'il faille taper ca avec mes lignes SQL ? Sinon je viens de découvrir une allusion a ce refresh dans la FAQ, mais je comprends pas le rapport avec l'apparition de ce pop-up... Concernant l'ordre dans l'expression égalité de la requete, oui j'avais pensé la même chose avant de poster mais j'ai testé dans les 2 sens... le bon sens est clairement celui que j'ai posté ci-dessus, sinon j'obtient vraiment n'importe quoi lol. En fait pour faire une comparaison, la table Enemies correspondrait à une table "Commandes" et MobData à une table "Clients", où Commandes repertorie toutes les commandes passées, et Clients toutes les adresses N° tel etc... des clients. La requete SQL ci-dessus est basée sur cet exemple qui vient de la FAQ aussi. Je pense que j'ai oublié quelquechose de vraiment tout bete mais quoi ? le refresh mais quel rapport et où le mettre ? |
|
|
00
|
|
|
#4 |
|
Nouveau Membre du Club
![]() Emmanuel GautierInscription : juin 2010 Messages : 60 ![]() |
Vous travaillez dans un formulaire ?
|
|
|
00
|
|
|
#5 | ||
|
Nouveau Membre du Club
![]() Emmanuel GautierInscription : juin 2010 Messages : 60 ![]() |
Pour ma part j'ai un formulaire ou je fais a peu près la même chose. Il faut faire attention à l'orthographe de tes champs.
J'ai dans mon formulaire une liste déroulante recherchant l'année. Code :
XAnnée = SELECT T_année.Année FROM T_année ORDER BY [Année]; Code :
Modifiable12 = SELECT T_Rdv.Index_RDV, T_Rdv.Client, T_Rdv.Société, T_Rdv.Date_RDV, T_Rdv.Sujet_RDV FROM T_Rdv WHERE T_Rdv.Login_Commercial=Forms!F_Modif_Rdv!Texte2 AND year(DATE_Rdv)=XAnnée ORDER BY DATE_RDV; Code :
En mettant de coté ce bout de code. Je pense que c'est ton appel Code :
[Mob Data].[Family] = [Enemies].[Family] Manu |
||
|
|
00
|
|
|
#6 |
|
Invité régulier
![]() Inscription : août 2009 Messages : 140 ![]() |
Oui moi aussi je pense que ca vient de l'égalité, mais quoi exactement je ne sait pas ...
et si j'essayait comme ca ca marcherait ? Code :
... WHERE [Mob Data].[Family] = (SELECT DISTINCT [Mob Data].[Family] FROM [Mob Data]) Je ne suis pas sûr de comprendre ce que tu veux dire par "manque une référence à Enemies.Family dans la requete" sinon, non je ne travaille pas avec formulaire ni VBA, mais directement sur les tables. En fait je m'en fout des formulaires car ces tables seront juste exportées vers une appli VB.NET qui elle sert de "formulaire". Mes 2 listes déroulantes se trouvent dans la table Enemies, j'espere que VB2008 m'importera ces 2 listes déroulantes pour mes DataGridViews, avec les relations et autres contraintes faites sous Access (comme cette requete). Ci joint la relation existante entre ces 2 tables, peut être que ca aidera à comprendre d'où ca vient ? EDIT: je viens d'essayer une autre syntaxe je crois je n'avais pas essayé: Code :
SELECT DISTINCT [Mob Data].Race FROM [Mob Data] INNER JOIN Enemies ON [Mob Data].Family=Enemies.Family; |
|
|
00
|
|
|
#7 | |
|
Nouveau Membre du Club
![]() Emmanuel GautierInscription : juin 2010 Messages : 60 ![]() |
Citation:
Reprend ton code du départ et donne lui une valeur, la requête devrait s'exécuter si elle est bonne. Access ne peut pas "deviner" la valeur de Enemies.Family si elle n'est pas écrite quelque part. |
|
|
|
00
|
|
|
#8 |
|
Invité régulier
![]() Inscription : août 2009 Messages : 140 ![]() |
Bizarre, pourtant Enemies.Family est la colonne juste a coté de Enemies.Race. Le seul cas où access ne pourrait pas deviner la valeur de Enemies.Family serait quand l'utilisateur oublie de selectionner une valeur dans ce champ qui a alors valeur NULL.
Il faut que j'ecrive quelquechose en plus quelquepart ? Je n'ai tapé aucun code pour l'instant, juste les requetes SQL dans le gestionnaire de requetes de la table Enemies. |
|
|
00
|
|
|
#9 |
|
Nouveau Membre du Club
![]() Emmanuel GautierInscription : juin 2010 Messages : 60 ![]() |
Pour être honnête je ne travail pas de la même façon que toi. Mais d'après ce que je sais et ce que tu as mis, même si la colone est à coté, la requête permet de rechercher seulement les informations répondant aux critères.
Si tu mets dans ton where [Mob Data].[Family] = "Super méchant", il devrait te sortir tous les enregistrement ou Super méchant est présent dans les deux tables, je suppose donc que c'est pour sa qu'il te demande une valeur. Tu as essayé de rentrer manuellement une valeur dans le fenetre pop up ? |
|
|
00
|
|
|
#10 |
|
Invité régulier
![]() Inscription : août 2009 Messages : 140 ![]() |
Bien sûr ! cf. 2 posts + haut, et ca marche exactement comme tu l'as décrit.
Le hic c'est que l'utilisateur va pas s'amuser a retaper dans la pop-up une valeur qu'il vient juste de selectionner dans la colonne juste avant... ni moi pour "rattraper" les 500 enregistrements existants :s Honnetement j'ai laissé tomber l'affaire... |
|
|
00
|
|
|
#11 |
|
Nouveau Membre du Club
![]() Emmanuel GautierInscription : juin 2010 Messages : 60 ![]() |
Bonjour,
Ce que je veux dire, est que lors de la création de table ou de requete, la fenetre pop up s'ouvre et te demande la valeur car il ne l'a connait pas. En ce qui concerne tes utilisateurs, ils auront un IHM du type des formulaires et dans ce cas la, après avoir choisi la première valeur dans une liste déroulante, access ne t'ouvrira plus de fenêtre pop up. Il ira automatiquement la chercher dans la liste. Manu |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com