OVH Cloud OVH Cloud

concatener verticalement

4 réponses
Avatar
jean-paul.bataille
Bonsoir =E0 toutes et =E0 tous,

J'ai, dans une requ=E8tes les champs Fourn_1, Fourn_2,......, Fourn_10.
Je d=E9sire concatener ces champs les uns sous les autres :

fournisseurs: [Fourn_1] & Car(13) & Car(10) & [Fourn_2] & Car(13) &
Car(10) & [Fourn_3] & Car(13) & Car(10) ...

mais je veux =E9viter les lignes blanches, comment faire ?



Remerciements anticip=E9s,

JPB

4 réponses

Avatar
Gilles MOUGNOZ
Bonsoir à toutes et à tous,
J'ai, dans une requètes les champs Fourn_1, Fourn_2,......, Fourn_10.
Je désire concatener ces champs les uns sous les autres :
fournisseurs: [Fourn_1] & Car(13) & Car(10) & [Fourn_2] & Car(13) &
Car(10) & [Fourn_3] & Car(13) & Car(10) ...
mais je veux éviter les lignes blanches, comment faire ?
Remerciements anticipés,
JPB


Bonjour, Jean-Paul

Cela risque d'être un peu lourd mais je me lance:

Iif(Nz([Fourn_1],"")="";"";Nz([Fourn_1],"") & Car(13) & Car(10)) &
Iif(Nz([Fourn_2],"")="";"";Nz([Fourn_2],"") & Car(13) & Car(10)) &
...

Les "Iif" seront automatiquement transformés en "VraiFaux" mais c'est
normal.
Si tu écris directement en SQL, remplace les points-virgules ( ; ) par des
virgules ( , ).

Bonne continuation

Avatar
jean-paul.bataille
Gilles MOUGNOZ wrote:

Cela risque d'être un peu lourd mais je me lance:

Iif(Nz([Fourn_1],"")="";"";Nz([Fourn_1],"") & Car(13) & Car(10)) &
Iif(Nz([Fourn_2],"")="";"";Nz([Fourn_2],"") & Car(13) & Car(10)) &
...


La nuit portant conseil, j'avais trouvé :

[Fourn_1] &
IIf([Fourn_1] Is Not Null And [Fourn_2] Is Not Null,Chr(13) & Chr(10))
&
[Fourn_2] &
IIf([Fourn_2] Is Not Null And [Fourn_3] Is Not Null,Chr(13) & Chr(10))
&
.........

Ce qui n'est pas non plus bien léger surtout avec 8 fournisseurs ;
qui fait mieux et comment ?

JPB

Avatar
jean-paul.bataille
La nuit portant conseil, j'avais trouvé :

[Fourn_1] &
IIf([Fourn_1] Is Not Null And [Fourn_2] Is Not Null,Chr(13) & Chr(10))
&
[Fourn_2] &
IIf([Fourn_2] Is Not Null And [Fourn_3] Is Not Null,Chr(13) & Chr(10))
&
.........

Mais qui présente le défaut majeur suivant :

s'il y a un Fourn a Null il n'y a pas de saut de ligne.


JPB


Avatar
Gilles MOUGNOZ
La nuit portant conseil, j'avais trouvé :
[Fourn_1] &
IIf([Fourn_1] Is Not Null And [Fourn_2] Is Not Null,Chr(13) & Chr(10))
&
[Fourn_2] &
IIf([Fourn_2] Is Not Null And [Fourn_3] Is Not Null,Chr(13) & Chr(10))
&
.........
Mais qui présente le défaut majeur suivant :
s'il y a un Fourn a Null il n'y a pas de saut de ligne.
JPB


Bonjour, Jean-Paul

Une autre solution consisterait à créer une fonction VBA qui renverrait la
chaîne correctement formatée.

Public Function FournisseursFormates(Fo1 as Variant, Fo2 as Variant, ...) as
String
FournisseursFormates = ""
If Nz(Fo1,"")<>"" Then FournisseursFormates = FournisseursFormates & Fo1
& vbNewLine
If Nz(Fo2,"")<>"" Then FournisseursFormates = FournisseursFormates & Fo2
& vbNewLine
...
End Function

Dans la requête, tu remplaces alors par:

FournisseursFormates([Fourn_1],[Fourn_2],....)

Bonne continuation