VBA : Pb de requete entre 2 tables.

[Résolu]
Signaler
Messages postés
62
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
19 août 2005
-
Messages postés
940
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
3 février 2011
-
Bonjour,
J'ai un petit problème de requete sousVBA.
J'ai 2 tables : echantillon et pollens
echantillon possede entre autre une clé primaire : N° éch
et un champ: site
pollens possède entre autre un champ : numech
Les 2 tables sont liées par N° éch <-> numech.
Je souhaiterai avoir en sortie tous les champs de la table pollens pour lesquels les numeros correspondent avec ceux de la table echantillon et dont le nom de site a été choisi par l'utilisateur.
Ma requete :

SELECT * FROM pollens
INNER JOIN echantillon
ON pollens.numech=echantillon.[N° éch]
WHERE (echantillon.[Site]= '" & sit & "'))

Le problème c'est que cette requete ne filtre rien du tout et me renvoie tous les éléments de ma table pollens......
J'ai beau tourner le problème dans tous les sens je ne vois pas ou est mon erreur.

Merci.

6 réponses

Messages postés
940
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
3 février 2011
9
T'as rien compris

Prends la requête que j'ai faite elle marche!

Je viens de la tester en live en recréant tes tables.

Tu n'as qu'à faire un copier coller...
SELECT echantillon.site, *
FROM pollens LEFT JOIN echantillon ON pollens.NumEch = echantillon.N°ech
WHERE (((echantillon.site)='" & sit & "'));"
TBBUIM
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 112 internautes nous ont dit merci ce mois-ci

Messages postés
101
Date d'inscription
mardi 3 mai 2005
Statut
Membre
Dernière intervention
19 avril 2006

en fait tu ve tous les pollens qui sont dans échantillon?
Messages postés
62
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
19 août 2005
7
Pour répondre à ta question mes pollens ne sont pas dans ma table échantillons mais dans une table pollens. Ces 2 tables étant reliées entre elles par le numero d'echantillon.

Je vais essayer de réexpliquer :
en fait je demande à l'utilisateur de choisir un nom de site (ma variable sit). A partir de la je veux choisir tous mes enregistrements de ma table echantillon tels que le nom de site correspond avec le choix de l'utilisateur.
Ensuite, ces enregistements étant reliés à des pollens dans ma table pollens par le numero d'echantillon, je voudrais avoir en sorti tous les pollens ayant ces même numeros d'échantillon
Je sais pas si j'ai été vraiment plus clair là !
Messages postés
940
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
3 février 2011
9
Il semble y avoir une parenthèse en trop dans ta requête

Et en faisant un INNER join tu joins tous les champs de la table

Tandis qu'en faisant un left join, tu inclus tous les enregistrements
de la table pollens et seulement ceux de la table échantillons pour
lesquels les champs joints sont égaux (choix 2 sous access) Crée ta
requête avec l'assitant et choisi la propriété de jointure N°2

Essayes ça:

SELECT echantillon.site, *

FROM pollens LEFT JOIN echantillon ON pollens.NumEch = echantillon.N°ech

WHERE (((echantillon.site)='" & sit & "'));"
TBBUIM
Messages postés
69
Date d'inscription
lundi 3 janvier 2005
Statut
Membre
Dernière intervention
15 septembre 2005

Salut,



D'après moi c'est normal que ça ne marche pas. Il faut que tu fasses
une première requête qui te trouve les numéro d'échantillons
correspondant au site (que la table échantillons)

et pour chaque résultat (pour chaque ligne de ton recordset) il faut que tu fasses une requête du type


Select * from pollen where numech = " &
rligne du recordset & ";"
Messages postés
101
Date d'inscription
mardi 3 mai 2005
Statut
Membre
Dernière intervention
19 avril 2006

tu fais:

select NomPollen
from Pollen,Echantillon
where Pollen.NumEch=echantillon.N°ech
and Site= (valeur entrez par l'utilisateur)

ainsi tu auras tous les pollens pour le site entré

ais-je bien compris?