Probleme dans une requete en VBA

jpleboucher Messages postés 6 Date d'inscription jeudi 20 avril 2006 Statut Membre Dernière intervention 10 mai 2006 - 10 mai 2006 à 10:22
malhivertman1 Messages postés 489 Date d'inscription mardi 16 novembre 2004 Statut Membre Dernière intervention 22 novembre 2007 - 10 mai 2006 à 14:34
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

malhivertman1 Messages postés 489 Date d'inscription mardi 16 novembre 2004 Statut Membre Dernière intervention 22 novembre 2007 1
10 mai 2006 à 10:56
nom_champ represente quoi?
0
jpleboucher Messages postés 6 Date d'inscription jeudi 20 avril 2006 Statut Membre Dernière intervention 10 mai 2006
10 mai 2006 à 11:08
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
0
malhivertman1 Messages postés 489 Date d'inscription mardi 16 novembre 2004 Statut Membre Dernière intervention 22 novembre 2007 1
10 mai 2006 à 11:18
En fait, je ne comprend pas, qd tu dit, "J'aimerais lors d'une requête pouvoir faire appel à l'ensemble de ces nombres'
0
jpleboucher Messages postés 6 Date d'inscription jeudi 20 avril 2006 Statut Membre Dernière intervention 10 mai 2006
10 mai 2006 à 11:23
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
malhivertman1 Messages postés 489 Date d'inscription mardi 16 novembre 2004 Statut Membre Dernière intervention 22 novembre 2007 1
10 mai 2006 à 11:25
oui mais je ne sais pas si c'est possible avec un IN etant donné que dans ton champ il y a des virgules..
0
nanou1605 Messages postés 36 Date d'inscription mercredi 10 mars 2004 Statut Membre Dernière intervention 15 décembre 2006
10 mai 2006 à 11:31
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
0
jpleboucher Messages postés 6 Date d'inscription jeudi 20 avril 2006 Statut Membre Dernière intervention 10 mai 2006
10 mai 2006 à 11:31
Ce n'est pas réelement un problème : je peux modifier mes tables si je trouve une autre solution
0
jpleboucher Messages postés 6 Date d'inscription jeudi 20 avril 2006 Statut Membre Dernière intervention 10 mai 2006
10 mai 2006 à 11:33
Merci Nanou, j'essaierai ta solution cet apres midi
0
malhivertman1 Messages postés 489 Date d'inscription mardi 16 novembre 2004 Statut Membre Dernière intervention 22 novembre 2007 1
10 mai 2006 à 11:43
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
0
malhivertman1 Messages postés 489 Date d'inscription mardi 16 novembre 2004 Statut Membre Dernière intervention 22 novembre 2007 1
10 mai 2006 à 11:45
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
++
0
jpleboucher Messages postés 6 Date d'inscription jeudi 20 avril 2006 Statut Membre Dernière intervention 10 mai 2006
10 mai 2006 à 14:21
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
0
malhivertman1 Messages postés 489 Date d'inscription mardi 16 novembre 2004 Statut Membre Dernière intervention 22 novembre 2007 1
10 mai 2006 à 14:34
et ce que j'ai mis, ca ne va pas du tout?
0
Rejoignez-nous