Pages

[AC-2010] Concaténation sous conditions dans select sujet

vendredi 28 mars 2014




Bonjour,

Je souhaiterais concaténer les valeurs contenues dans 10 colonnes différentes. Sauf que chacune des colonnes n'est pas forcément renseignée.
Heureusement, la colonne trois ne sera renseignée que si la deuxième l'est, par exemple. Il n'y a pas de colonne vide entre deux données. Sauf pour la dernière colonne (la dixième) qui peut être remplie sans qu'aucune des colonnes précédentes ne le soit.

Donc par exemple :

Citation:





COLONNE1 | COLONNE2 | COLONNE3 | COLONNE4 | COLONNE5 | COLONNE6 | [...] | COLONNE10
ABCD1234 | BAD12345 | ________ | ________ | ________ | ________ | [...] | CD159786
________ | ________ | ________ | ________ | ________ | ________ | [...] | BO786245




Je souhaiterais que les données soient séparées par des virgules. Mais si par exemple seule la première ou la dernière colonne est remplie, pas besoin de virgule.

J'ai fait ça pour le moment :

Code:


1
2
3
4
5
6
7
8
9
10
SELECT
(IFF (COLONNE1 = "", "", COLONNE1 )) &
(IFF (COLONNE2 = "", "", "," & COLONNE2 )) & --la colonne 1 est forcément remplie si la seconde contient des données, donc virgule avant.
(IFF (COLONNE3 = "", "", "," & COLONNE3 )) &
(IFF (COLONNE4 = "", "", "," & COLONNE4 )) &
(IFF (COLONNE5 = "", "", "," & COLONNE5 )) &
(IFF (COLONNE6 = "", "", "," & COLONNE6 )) &
[...]
(IFF (COLONNE10 = "", "", IIF(COLONNE1 = "", COLONNE10, "," & COLONNE10 )))) --la colonne 10 peut-être la seule remplie donc je teste la première colonne pour mettre une virgule avant la donnée ou non.
FROM TABLE


Ce code fait partie d'un select simple pour créer une requête et extraire des données. Pas de VBA.
Et donc lorsque j'exécute mon select j'obtiens l'erreur suivante :

Citation:





Fonction "IIF" non définie dans l'expression




Si je supprime toutes les lignes sauf la première, ça passe

Code:


1
2
3
SELECT
(IFF (COLONNE1 = "", "", COLONNE1))
FROM TABLE


Donc je suppose que ça vient du & IIF. J'ai mis des parenthèses, encapsulé le tout dans un trim... rien n'y fait.

Vous auriez une idée, tout en restant simple?




Aucun commentaire:

Enregistrer un commentaire