Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Opérateur SQL "IN" limité par la taille de la liste

4 réponses
Avatar
youssef.berkane
Bonjour à tous,

voilà mon soucis:
je souhaite écrire une requête SQL sous VBA Excel en vue d'extraire, à
partir d'une base de données Access, un certain nombre d'enregistrements
d'une table et cela de manière aléatoire. J'ai eu un bon début en utilisant
l'opérateur IN comme ceci :
"SELECT * FROM table WHERE table.colonne_de_référence IN (1,5,89,....)

Seul problème:la liste (1,5,89,...) est très restreinte en taille (une
centaine de caractères)

Pouvez-vous m'aider à solutionner ce problème?

Merci d'avance

4 réponses

Avatar
Philippe T [MS]
Bonjour,

Il suffit de créer une table temporaire et d'insérer les enregistrements
choisis ensuite on peut utiliser IN

SELECT * FROM table WHERE table.colonne_de_référence IN (SELECT MesChoix
FROM MaTableTemp)

Phil.
________________________________________________________
Philippe TROTIN http://blogs.msdn.com/ptrotin
Microsoft Services France http://www.microsoft.com/france

"youssef.berkane" wrote in
message news:
Bonjour à tous,

voilà mon soucis:
je souhaite écrire une requête SQL sous VBA Excel en vue d'extraire, à
partir d'une base de données Access, un certain nombre d'enregistrements
d'une table et cela de manière aléatoire. J'ai eu un bon début en
utilisant

l'opérateur IN comme ceci :
"SELECT * FROM table WHERE table.colonne_de_référence IN (1,5,89,....)

Seul problème:la liste (1,5,89,...) est très restreinte en taille (une
centaine de caractères)

Pouvez-vous m'aider à solutionner ce problème?

Merci d'avance



Avatar
youssef.berkane
Merci Philippe pour ta réponse.
J'ai pris note du message dans le groupe office. J'éviterai à l'avenir les
redondances entre groupes.
Peux tu m'indiquer comment créer une table temporaire? ( à titre d'info, je
travaille sur vba access)
Merci d'avance
Avatar
Philippe T [MS]
Bonjour,

Pour cette question, pose la plutôt sur microsoft.public.fr.access car elle
est lié à Access.

Moi je travail essentiellement sur SQL Server et il est possible de faire en
procédures stockées quelque chose du genre :

DECLARE @MyTable TABLE(COL_INT int, COL_STRING nvarchar(100), ...)

De ton coté, je te conseil d'avoir une table dédié que tu utilises pour ça.
Tu fais des INSERT dedans et ensuite tu utilise la requête avec le IN.

Phil.
________________________________________________________
Philippe TROTIN http://blogs.msdn.com/ptrotin
Microsoft Services France http://www.microsoft.com/france

"youssef.berkane" wrote in
message news:
Merci Philippe pour ta réponse.
J'ai pris note du message dans le groupe office. J'éviterai à l'avenir les
redondances entre groupes.
Peux tu m'indiquer comment créer une table temporaire? ( à titre d'info,
je

travaille sur vba access)
Merci d'avance



Avatar
youssef.berkane
Merci.

J'ai essayé de passer par une table dédiée à ma fonction IN.
Mais j'ai noté que l'insertion de valeurs (INSERT INTO) était limitée à 64
valeurs.
Au-delà, une boîte de dialogue s'ouvre et me demande la source de données.