OVH Cloud OVH Cloud

Concatener relations de un à plusieurs

1 réponse
Avatar
degrieux75
Bonjour,

J'ai besoin d'une aide.

Je possède deux tables : Marchés (coté un) et Fournisseurs (coté
plusieurs).

La table marché se présente ainsi : Ref marché (numéro unique), puis
différentes colonnes représentant les caractéristiques du marché
(durée, ..)
La table Fournisseurs se présente ainsi : Numéro unique,Ref
marché,Numéro fournisseur, différentes colonnes représentant les
caractéristiques du fournisseur.

Le lien entre les tables : le ref marché (un marché a plusieurs
fournisseurs).

Je souhaiterai obtenir la table / requête suivante :
Colonne 1 : par Ref marché
Colonne 2 : Concaténer par Ref Marché l'ensemble des fournisseurs
séparés par un "-"

Quelqu'un saurait-il trouver une solution simple à ce problème ?

1 réponse

Avatar
CC
un pti truc mais en passant pas une petite fonction :

Table : MARCHE
Champ : REF_MARCHE : numeroauto
MARCHE : texte
DUREE : numérique
Table : FOURNISSEUR
CLE_FOURNISSEUR : numéroauto
REF_MARCHE : numérique
FOURNISSEUR : texte

Lien entre les deux tables sur REF_MARCHE comme décrit dasn ton message

2 requêtes :
1 - REQ_LST_FOURNISSEUR_PAR_MARCHE
SELECT MARCHE.REF_MARCHE, FOURNISSEUR.FOURNISSEUR
FROM MARCHE RIGHT JOIN FOURNISSEUR ON MARCHE.REF_MARCHE FOURNISSEUR.REF_MARCHE
WHERE (((MARCHE.REF_MARCHE)=[Code Marche]));
2 - REQ_LST_FOURNISSEUR_PAR_MARCHE_RESULT
SELECT MARCHE.REF_MARCHE, Fournisseur([MARCHE].[REF_MARCHE]) AS
ListeFournisseur
FROM MARCHE RIGHT JOIN FOURNISSEUR ON MARCHE.REF_MARCHE FOURNISSEUR.REF_MARCHE
GROUP BY MARCHE.REF_MARCHE, Fournisseur([MARCHE].[REF_MARCHE]);

Une fonction dans un module :

Public Function Fournisseur(CodeMarche As Long) As String

Dim Monquery As QueryDef
Dim MonJeu As Recordset

On Error GoTo Err_Fournisseur

Set Monquery = CurrentDb.QueryDefs("REQ_LST_FOURNISSEUR_PAR_MARCHE")
Monquery.Parameters("[Code Marche]") = CodeMarche
Set MonJeu = Monquery.OpenRecordset
MonJeu.MoveFirst
Do While Not MonJeu.EOF
Fournisseur = Fournisseur & MonJeu.Fields("FOURNISSEUR").Value &
" - "
MonJeu.MoveNext
Loop

Fournisseur = Left(Fournisseur, Len(Fournisseur) - 3)

End_Fournisseur:
Exit Function

Err_Fournisseur:
MsgBox "Erreur n° " & Err.Number & " : " & Err.Description, vbCritical +
vbOKOnly, "Err_Fournisseur"
Resume End_Fournisseur

End Function


c'est un peu lourd mais ça marche...(enfin j'espère que c'est ce que tu
veux) ;-)

"Mathieu" a écrit dans le message de
news:
Bonjour,

J'ai besoin d'une aide.

Je possède deux tables : Marchés (coté un) et Fournisseurs (coté
plusieurs).

La table marché se présente ainsi : Ref marché (numéro unique), puis
différentes colonnes représentant les caractéristiques du marché
(durée, ..)
La table Fournisseurs se présente ainsi : Numéro unique,Ref
marché,Numéro fournisseur, différentes colonnes représentant les
caractéristiques du fournisseur.

Le lien entre les tables : le ref marché (un marché a plusieurs
fournisseurs).

Je souhaiterai obtenir la table / requête suivante :
Colonne 1 : par Ref marché
Colonne 2 : Concaténer par Ref Marché l'ensemble des fournisseurs
séparés par un "-"

Quelqu'un saurait-il trouver une solution simple à ce problème ?