Probleme dans une requete en VBA

Signaler
Messages postés
6
Date d'inscription
jeudi 20 avril 2006
Statut
Membre
Dernière intervention
10 mai 2006
-
Messages postés
489
Date d'inscription
mardi 16 novembre 2004
Statut
Membre
Dernière intervention
22 novembre 2007
-
Bonjour,

J'ai un problème qui peut paraître assez simple, mais avec lequel je me bats depuis plusieurs heures...

J'ai une table (Contraintes) dont l'un des champs (CSpé) contient des suites de nombres (du style 14,38,43,50,61...) J'aimerais lors d'une requête pouvoir faire appel à l'ensemble de ces nombres, i.e faire quelquechose du style :
"SELECT ... WHERE ... AND nom_champ IN(Contraintes.CSpé) ... ;"

Malheureusement, je n'arrive pas à obtenir le résultat souhaité : en général, ma requête ne retourne rien, sauf si Contraintes.CSpé ne contient qu'un seul nombre.

J'aimerais savoir si il existe une solution à mon problème.
J'espère avoir été à peu près clair....

Merci d'avance

12 réponses

Messages postés
489
Date d'inscription
mardi 16 novembre 2004
Statut
Membre
Dernière intervention
22 novembre 2007

nom_champ represente quoi?
Messages postés
6
Date d'inscription
jeudi 20 avril 2006
Statut
Membre
Dernière intervention
10 mai 2006

nom_champ représente un champ d'une autre table (DES.NoSpé en fait), mais je pensais que ça allait plus embrouiller qu'autre chose si je le précisais.
DES.NoSpé est un champ de type numérique
Messages postés
489
Date d'inscription
mardi 16 novembre 2004
Statut
Membre
Dernière intervention
22 novembre 2007

En fait, je ne comprend pas, qd tu dit, "J'aimerais lors d'une requête pouvoir faire appel à l'ensemble de ces nombres'
Messages postés
6
Date d'inscription
jeudi 20 avril 2006
Statut
Membre
Dernière intervention
10 mai 2006

Ben en fait, si par exemple dans Contraintes.CSpé, il y a 15,3,22,9, je voudrais que cela fasse :

"SELECT ... WHERE ... AND (nom_champ =15 Or nom_champ = 3 Or nom_champ = 22 Or nom_champ = 9) ...

Mais avec le "Or", ce n'est pas faisable si tous mes nombres sont dans le même champ (Contraintes.CSpé), donc j'utilide un "IN"

Mais ça ne marche pas non plus
Messages postés
489
Date d'inscription
mardi 16 novembre 2004
Statut
Membre
Dernière intervention
22 novembre 2007

oui mais je ne sais pas si c'est possible avec un IN etant donné que dans ton champ il y a des virgules..
Messages postés
36
Date d'inscription
mercredi 10 mars 2004
Statut
Membre
Dernière intervention
15 décembre 2006

Salut,

Tu ne peux pas mettre une table comme cela apres le IN.
Essaie avec :

"SELECT ... WHERE ... AND nom_champ IN(Select CSpé from Contraintes) ... ;"

J'espère t'avoir aidé.

Seb
Messages postés
6
Date d'inscription
jeudi 20 avril 2006
Statut
Membre
Dernière intervention
10 mai 2006

Ce n'est pas réelement un problème : je peux modifier mes tables si je trouve une autre solution
Messages postés
6
Date d'inscription
jeudi 20 avril 2006
Statut
Membre
Dernière intervention
10 mai 2006

Merci Nanou, j'essaierai ta solution cet apres midi
Messages postés
489
Date d'inscription
mardi 16 novembre 2004
Statut
Membre
Dernière intervention
22 novembre 2007

Essaye en inversant et en mettant un like :

SELECT ... WHERE ... AND CSpé LIKE '%nom_champ%'

Moi ca marche mais je sais pas si ca te conviendra
Messages postés
489
Date d'inscription
mardi 16 novembre 2004
Statut
Membre
Dernière intervention
22 novembre 2007

enfin qd je met '% nom_champ %', nom_champ est deja transformé, genre il est egal a 12.
enfin c'est plus une variable quoi, tu me comprend
++
Messages postés
6
Date d'inscription
jeudi 20 avril 2006
Statut
Membre
Dernière intervention
10 mai 2006

En fait j'ai réussi à faire ce que je voulais, par contre c'est lourd ! Je suis passé par un table intermédiaire, et en reprenant l'idée de Nanou (c'est-à-dire un SELECT dans un IN,, chose à laquelle je n'avais pas pensé...), ça passe ( mais ma table intermédiaire risque d'avoir plus de 1000 lignes pour seulement 2 colonnes....)
C'est largement perfectible mais au moins j'avance à quelquechose

Merci à tous
Bon Après-Midi
Messages postés
489
Date d'inscription
mardi 16 novembre 2004
Statut
Membre
Dernière intervention
22 novembre 2007

et ce que j'ai mis, ca ne va pas du tout?