Concaténer deux valeur issue d'une fonction vba en sql
Bonjour,
Voici une fonction provenant de la fag permettant de concaténer plusieurs enregistrements sur la même ligne.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
|
Public Function Support(Projet As Long) As String
Dim res As DAO.Recordset
Dim SQL As String
'Selectionne les participant du projet
SQL = "SELECT Support FROM Support WHERE Chrono=" & Projet
Set res = CurrentDb.OpenRecordset(SQL)
'Concatene les différents enregistrement
While Not res.EOF
Support = Support & res.Fields(0).Value & " + "
res.MoveNext
Wend
'Enleve le dernier espace
Support = Left(Support, Len(Support) - 3)
'libere la mémoire
Set res = Nothing
End Function
Public Function Expose(Projet As Long) As String
Dim res As DAO.Recordset
Dim SQL As String
Dim var As String
var = "Présentation autour de la maquette"
'Selectionne les participant du projet
SQL = "SELECT Expose FROM Expose WHERE Chrono= " & Projet & " And Expose<>'Présentation autour de la maquette'"
Set res = CurrentDb.OpenRecordset(SQL)
'Concatene les différents enregistrement
While Not res.EOF
Expose = Expose & res.Fields(0).Value & " + "
res.MoveNext
Wend
'Enleve le dernier espace
If Expose <> Null Then
Expose = Left(Expose, Len(Expose) - 3)
End If
'libere la mémoire
Set res = Nothing
End Function |
J'utilisa donc une requête sql pour concaténer le résultat de ces deux fonctions :
Code:
1 2 3 4
|
SELECT DISTINCT S.Chrono, Support(S.Chrono) & Iif((Support(S.Chrono)<> NULL) And (Expose(E.Chrono) <> NULL)," + ", "") & Expose(E.Chrono) As Support
FROM Support S INNER JOIN Expose E
ON S.Chrono = E.Chrono |
Quand Support(S.Chrono) est NULL alors que Expose(E.Chrono) ne l'est pas la requête ne me retourne aucune ligne.
Et quand Expose(E.Chrono) est null, et que Support(S.Chrono) ne l'est pas, le " + " ne devrait pas apparaitre alors qu'il est bien présent(mais ici contrairement au premier cas les lignes sont quand même retournées)
D'ou pourrait venir le problème.
Merci d'avance