|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre régulier
![]() Inscription : novembre 2010 Messages : 151 ![]() |
Bonjour,
J'ai une table Badge (Badge, Observations) et une table Cotisations (Année, Nom, Badge, ...). Les clés sont précisées en gras. Je veux faire une requête de non correspondance en filtrant sur [Année]. Cela ne fonctionne pas. Si au lieu de la table Cotisation, j'utilise une requête, cela fonctionne!! Pourquoi et que faire? Jean-Pierre |
|
|
00
|
|
|
#2 | |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 176 ![]() |
Bonjour Jeanpierre78,
Citation:
Je ne vois aucune raison pour laquelle une requête de non-correspondance sur ces deux tables ne fonctionnerait pas. Via l'assistant "requête de non-correspondance" : -Table : Badge - Table : Cotisations - Champs correspondants : Badge <=> Badge - Champs sélectionnés : tous - Afficher les résultats. ==> cela devrait être OK. Tout cela, en supposant que tu veuilles les Badges sans Cotisation.
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
|
00
|
|
|
#3 |
|
Membre régulier
![]() Inscription : novembre 2010 Messages : 151 ![]() |
Bonjour,
En effet, je pensais la même chose. Hors, lorsque je fais la manip que tu décris et que je filtre sur [Année] de la table Cotisations, je devrais avoir 50 badges non utilisés en 2010. Le résult de la requête est : pas de non concordance!! Si je remplace la table Cotisations par une requête sur laquelle je filtre sur [Année], cela fonctionne!! Je n'y comprends rien!! Jean-Pierre |
|
|
00
|
|
|
#4 | |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 176 ![]() |
Citation:
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
|
00
|
|
|
#5 |
|
Membre régulier
![]() Inscription : novembre 2010 Messages : 151 ![]() |
Bonsoir,
Si je ne filtre pas sur [Année], je ne trouve pas de non correspondances car dans ce cas, il n'y en a pas. Certains badges distribués en 2008 ou 2009 n'ont pas été validés en 2010 car l'adhérent n'a pas renouvelé sa cotisation mais le numéro est présent dans la table Badge. Le but de ma requête est de lister les badges existants non validés en 2010 qui sont encore en possession d'anciens adhérents. Ci après le lien vers la représentation de mes realtions entre tables : http://img705.imageshack.us/i/bdbadges.jpg/ Encore une fois si pour les badges valide en 2010, j'utilise une requête paramètrée au lieu de la table Cotisation cela fonctionne!! J'ai donc contourné la difficulté en utilisant une requête au lieu de la table. Jean-Pierre |
|
|
00
|
|
|
#6 | |||
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 176 ![]() |
Pas très clair...
Citation:
Citation:
D'autre part, si Citation:
Peux-tu poster l'image graphique de la requête qui ne fonctionne pas si tu ajoutes un filtre (pas de la relation) ?
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|||
|
|
00
|
|
|
#7 |
|
Membre régulier
![]() Inscription : novembre 2010 Messages : 151 ![]() |
Bonjour,
Ci après le lien vers l'image de la requête qui ne fonctionne pas : http://img806.imageshack.us/i/requtesurtables.jpg/ Cette requête n'affiche pas de données alors qu'il y a plus de 50 badges présents dans la table Badge mais pas dans la table Cotisation en 2010. Ils étaient dans la table Cotisation en 2008 ou 2009. Si je remplace la table Cotisation par une requête qui filtre sur l'année ça fonctionne. Jean-Pierre |
|
|
00
|
|
|
#8 |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 176 ![]() |
Bonjour Jeanpierre78,
Ta requête est correcte. Dans cette même requête - supprimes le critère "2010" de la colonne "Année" de la table "Cotisation" ; - lances la requête. ==> vois-tu apparaître des enregistrements de 2010 ?
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
00
|
|
|
#9 |
|
Membre régulier
![]() Inscription : novembre 2010 Messages : 151 ![]() |
Bonsoir Richard_35,
Si je supprime le filtre sur le Champ [Année], je n'ai pas de résultat dans la requête ce qui est normal car dans ce cas tous les N° de badge de la table Badge sont présent dans la table Cotisation. Si je filtre sur l'Année 2010, je devrais voir 520 non correspondances représentant 52 N° de badge existants dans la table Badge et non utilisés en 2010 dans la table Cotisation. Bizarre, si je fais ma requête à partir de la table Badge et d'une requête paramètrée Badges_saison pour extraire les badges de utilisés dans la saison sélectionnée, la requête fonctionne. Si je le fais directement à partir des tables Badge et Cotisation, cela ne fonctionne pas! Jean-Pierre |
|
|
00
|
|
|
#10 | |||
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 176 ![]() |
Citation:
Citation:
Citation:
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|||
|
|
00
|
|
|
#11 |
|
Membre régulier
![]() Inscription : novembre 2010 Messages : 151 ![]() |
Bonjour,
Ma table Badges contient TOUT les numéros de badges utilisées depuis le début. Ma table Cotisations contient pour chaque année les enregistrement des membre (Genre, Nom_fam, Prénom, Année, Badge, ...). Par exemple en 2010, il y 52 membres inscrits en 2009 et /ou 2008 qui ne sont pas inscrits en 2010. Il y a donc 52 N° de badge non valides en 2010 mais présents dans la table Badges. Ce sont ces N° de badges que je veux utiliser dans ma liste déroulante. Ci après ma requête Badge_saison : ![]() Le choix de l'année est fait par une formule qui du 01-09-10 au 31-08-11 affiche 2010. Nota : Ma liste déroulante fonctionnant avec la requête, ma recherche est surtout de comprendre pourquoi cela ne fonctionne pas avec la table Cotisations. Jean-Pierre |
|
|
00
|
|
|
#12 | |
|
Expert Confirmé
![]() Diem VOVivre Inscription : avril 2006 Messages : 2 644 ![]() |
salut jeanpierre78 et Richard_35,
Citation:
si tu trouves pas poste une db concis du pb. |
|
|
|
00
|
|
|
#13 | ||
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 176 ![]() |
Bonjour Jeanpierre78,
Eh bien, c'est normal !... problème d'interprétation... Reprenons : Citation:
Citation:
Donc, en prenant, via l'assistant : - Table : Badge - Table : Badges_saison - Champs correspondants : Badge <=> Badge - Champs sélectionnés : tous - Afficher les résultats. ==> Comme Badges_saison ne te donne QUE les cotisations 2010, la non correspondance Badge <=> Badge fonctionne ! OK ?
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
||
|
|
00
|
|
|
#14 |
|
Membre régulier
![]() Inscription : novembre 2010 Messages : 151 ![]() |
Bonsoir,
Lorsque je définis ma requête avec la table Badge et la requête Badge_saison, ça fonctionne. Jean-Pierre |
|
|
00
|
|
|
#15 |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 176 ![]() |
C'est normal.
As-tu lu l'explication figurant dans le post #13 ? Peut-être n'est-elle pas très claire.
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
00
|
|
|
#16 | ||||||
|
Expert Confirmé Sénior
![]() ![]() Fabien Enseignant Inscription : janvier 2009 Messages : 2 410 ![]() |
Bonjour,
Si je puis apporter quelques éclaircissements… Ce n’est pas la même chose de dire : 1°) Rechercher les cotisations de l’année 2010 sans badge 2°) Rechercher les badges non utilisés parmi les cotisations de l’année 2010 Dans le cas 1°) j’écrirais: Code sql :
Ce qui dans ce cas précis est équivalent à: Code sql :
Et comme constaté par JeanPierre78 dans son post #7, la requête ne renvoie rien ce qui est logique puisque la condition sur la clé étrangère Cotisation.Badge à Null et sur l’année 2010 ne peut être vérifiée (si un adhérent a cotisé en 2010, il a forcément eu un badge). En fait pour répondre au cas n°2, il me semble qu’il faudrait déplacer la condition sur l’année de la clause WHERE vers la clause de jointure ON, du genre : Code sql :
Seulement ce type de jointure n’est pas accepté sous Access. Il faut donc opérer en deux temps avec une sous-requête comme l’a constaté également JeanPierre78 : -Rechercher les cotisations de l’année 2010 (requête : R_Cotisation2010) -Rechercher les badges de la table Badge sans correspondance dans R_Cotisation2010 Voilà… |
||||||
|
00
|
|
|
#17 |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 176 ![]() |
Bonsoir Fabien,
Je plussoie... Jeanpierre78 itou ?...
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
00
|
|
|
#18 |
|
Membre régulier
![]() Inscription : novembre 2010 Messages : 151 ![]() |
Bonsoir,
C'est effectivement ce que j'ai constaté. Jean-Pierre |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com