J'ai une table qui r=E9pertorie la provenance des fleurs
Fleurs Pays
Roses Hollande
Roses Suisse
Roses France
Tulipes Hollande
Tulipes Allemagne
Tulipes Autriche
Marguerites France
Marguerites Suisse
Dans mon formulaire de gestion des fleurs, je voudrais avec un champ
r=E9pertoriant les pays sur une seule ligne s=E9par=E9s par une virgule:
Pour rose
Hollande, Suisse, France
J'ai pens=E9 cr=E9er un autre champ sous ma TableProvenance qui concat=E8ne
tous les pays mais je n'y arrive pas, est-ce la solution ?
Parce que j'aurais, au cours de la construction de mon programme, un
formulaire qui devra r=E9pertorier toutes les fleurs avec leurs pays de
provenance, un peu du style ci-dessous.
Roses : Hollande, Suisse, France
Tulipes : Hollande, Allemagne, Autriche
Marguerites : France, Suisse
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
pbserv
bonjour,
une solution consiste à créer une fonction VBA qui réalise la concaténation. Fonction VBA à placcer dans un module standard, elle nécessite d'activer la référence DAO : Public Function ConcatColonne(vValeurPivot As Variant, _ sNomColonnePivot As String, _ sNomColonneConcat As String, _ sNomDomaine As String) As String On Error GoTo errtag Dim oDb As DAO.Database Dim oRs As DAO.Recordset Dim sSQL As String If IsNull(vValeurPivot) Then Exit Function sSQL = "SELECT " & sNomColonneConcat & " & ', ' As C FROM " & _ sNomDomaine & " WHERE " & sNomColonnePivot & "=" Select Case VarType(vValeurPivot) Case vbString sSQL = sSQL & """" & vValeurPivot & """" Case vbDate sSQL = sSQL & CDbl(vValeurPivot) Case Else sSQL = sSQL & CStr(vValeurPivot) End Select sSQL = sSQL & " ORDER BY " & sNomColonneConcat Set oDb = CurrentDb Set oRs = oDb.OpenRecordset(sSQL, dbOpenForwardOnly) While Not oRs.EOF ConcatColonne = ConcatColonne & oRs(0) oRs.MoveNext Wend ConcatColonne = Left$(ConcatColonne, Len(ConcatColonne) - 2) fin: Set oDb = Nothing Set oRs = Nothing Exit Function errtag: ConcatColonne = "Erreur !" Resume fin End Function
et voici la requete correspondante : SELECT DISTINCT [Fleurs] & " : " & ConcatColonne([Fleurs],"Fleurs","Pays","MaTable") AS [Fleur et Pays] FROM MaTable AS T;
pb
On 9 sep, 20:07, wrote:
Bonjour à tous,
J'ai une table qui répertorie la provenance des fleurs
Fleurs Pays Roses Hollande Roses Suisse Roses France Tulipes Hollande Tulipes Allemagne Tulipes Autriche Marguerites France Marguerites Suisse
Dans mon formulaire de gestion des fleurs, je voudrais avec un champ répertoriant les pays sur une seule ligne séparés par une virgule:
Pour rose
Hollande, Suisse, France
J'ai pensé créer un autre champ sous ma TableProvenance qui concatè ne tous les pays mais je n'y arrive pas, est-ce la solution ?
Parce que j'aurais, au cours de la construction de mon programme, un formulaire qui devra répertorier toutes les fleurs avec leurs pays de provenance, un peu du style ci-dessous.
Roses : Hollande, Suisse, France Tulipes : Hollande, Allemagne, Autriche Marguerites : France, Suisse
Comment dois-je m'y prendre.
Merci pour votre aide précieuse. Xavier
bonjour,
une solution consiste à créer une fonction VBA qui réalise la
concaténation.
Fonction VBA à placcer dans un module standard, elle nécessite
d'activer la référence DAO :
Public Function ConcatColonne(vValeurPivot As Variant, _
sNomColonnePivot As String, _
sNomColonneConcat As String, _
sNomDomaine As String) As String
On Error GoTo errtag
Dim oDb As DAO.Database
Dim oRs As DAO.Recordset
Dim sSQL As String
If IsNull(vValeurPivot) Then Exit Function
sSQL = "SELECT " & sNomColonneConcat & " & ', ' As C FROM " & _
sNomDomaine & " WHERE " & sNomColonnePivot & "="
Select Case VarType(vValeurPivot)
Case vbString
sSQL = sSQL & """" & vValeurPivot & """"
Case vbDate
sSQL = sSQL & CDbl(vValeurPivot)
Case Else
sSQL = sSQL & CStr(vValeurPivot)
End Select
sSQL = sSQL & " ORDER BY " & sNomColonneConcat
Set oDb = CurrentDb
Set oRs = oDb.OpenRecordset(sSQL, dbOpenForwardOnly)
While Not oRs.EOF
ConcatColonne = ConcatColonne & oRs(0)
oRs.MoveNext
Wend
ConcatColonne = Left$(ConcatColonne, Len(ConcatColonne) - 2)
fin:
Set oDb = Nothing
Set oRs = Nothing
Exit Function
errtag:
ConcatColonne = "Erreur !"
Resume fin
End Function
et voici la requete correspondante :
SELECT DISTINCT
[Fleurs] & " : " & ConcatColonne([Fleurs],"Fleurs","Pays","MaTable")
AS [Fleur et Pays]
FROM MaTable AS T;
pb
On 9 sep, 20:07, domi...@hotmail.com wrote:
Bonjour à tous,
J'ai une table qui répertorie la provenance des fleurs
Fleurs Pays
Roses Hollande
Roses Suisse
Roses France
Tulipes Hollande
Tulipes Allemagne
Tulipes Autriche
Marguerites France
Marguerites Suisse
Dans mon formulaire de gestion des fleurs, je voudrais avec un champ
répertoriant les pays sur une seule ligne séparés par une virgule:
Pour rose
Hollande, Suisse, France
J'ai pensé créer un autre champ sous ma TableProvenance qui concatè ne
tous les pays mais je n'y arrive pas, est-ce la solution ?
Parce que j'aurais, au cours de la construction de mon programme, un
formulaire qui devra répertorier toutes les fleurs avec leurs pays de
provenance, un peu du style ci-dessous.
Roses : Hollande, Suisse, France
Tulipes : Hollande, Allemagne, Autriche
Marguerites : France, Suisse
une solution consiste à créer une fonction VBA qui réalise la concaténation. Fonction VBA à placcer dans un module standard, elle nécessite d'activer la référence DAO : Public Function ConcatColonne(vValeurPivot As Variant, _ sNomColonnePivot As String, _ sNomColonneConcat As String, _ sNomDomaine As String) As String On Error GoTo errtag Dim oDb As DAO.Database Dim oRs As DAO.Recordset Dim sSQL As String If IsNull(vValeurPivot) Then Exit Function sSQL = "SELECT " & sNomColonneConcat & " & ', ' As C FROM " & _ sNomDomaine & " WHERE " & sNomColonnePivot & "=" Select Case VarType(vValeurPivot) Case vbString sSQL = sSQL & """" & vValeurPivot & """" Case vbDate sSQL = sSQL & CDbl(vValeurPivot) Case Else sSQL = sSQL & CStr(vValeurPivot) End Select sSQL = sSQL & " ORDER BY " & sNomColonneConcat Set oDb = CurrentDb Set oRs = oDb.OpenRecordset(sSQL, dbOpenForwardOnly) While Not oRs.EOF ConcatColonne = ConcatColonne & oRs(0) oRs.MoveNext Wend ConcatColonne = Left$(ConcatColonne, Len(ConcatColonne) - 2) fin: Set oDb = Nothing Set oRs = Nothing Exit Function errtag: ConcatColonne = "Erreur !" Resume fin End Function
et voici la requete correspondante : SELECT DISTINCT [Fleurs] & " : " & ConcatColonne([Fleurs],"Fleurs","Pays","MaTable") AS [Fleur et Pays] FROM MaTable AS T;
pb
On 9 sep, 20:07, wrote:
Bonjour à tous,
J'ai une table qui répertorie la provenance des fleurs
Fleurs Pays Roses Hollande Roses Suisse Roses France Tulipes Hollande Tulipes Allemagne Tulipes Autriche Marguerites France Marguerites Suisse
Dans mon formulaire de gestion des fleurs, je voudrais avec un champ répertoriant les pays sur une seule ligne séparés par une virgule:
Pour rose
Hollande, Suisse, France
J'ai pensé créer un autre champ sous ma TableProvenance qui concatè ne tous les pays mais je n'y arrive pas, est-ce la solution ?
Parce que j'aurais, au cours de la construction de mon programme, un formulaire qui devra répertorier toutes les fleurs avec leurs pays de provenance, un peu du style ci-dessous.
Roses : Hollande, Suisse, France Tulipes : Hollande, Allemagne, Autriche Marguerites : France, Suisse
Comment dois-je m'y prendre.
Merci pour votre aide précieuse. Xavier
kdonu
Merci pb pour ta r�ponse,
Mais l� je peine un peu avec les fonctions.
Je la mets dans un module standard, jusque-l�, �a va mais e nsuite...
1) comment est-ce que la fonction s'ex�cute 2) dois-je vraiment rajouter une colonne concatener directement dans ma Table 3) tu me donnes aussi la requ�te correspondante, je ne comprends pas tellement le AS [Fleur et Pays] alors que ce sont deux champs bien distincts.
Merci pour tes pr�cisions. A bient�t. Xvier
Merci pb pour ta r�ponse,
Mais l� je peine un peu avec les fonctions.
Je la mets dans un module standard, jusque-l�, �a va mais e nsuite...
1) comment est-ce que la fonction s'ex�cute
2) dois-je vraiment rajouter une colonne concatener directement dans
ma Table
3) tu me donnes aussi la requ�te correspondante, je ne comprends pas
tellement le AS [Fleur et Pays] alors que ce sont deux champs bien
distincts.
Je la mets dans un module standard, jusque-l�, �a va mais e nsuite...
1) comment est-ce que la fonction s'ex�cute 2) dois-je vraiment rajouter une colonne concatener directement dans ma Table 3) tu me donnes aussi la requ�te correspondante, je ne comprends pas tellement le AS [Fleur et Pays] alors que ce sont deux champs bien distincts.
Merci pour tes pr�cisions. A bient�t. Xvier
pbserv
bonjour, Q: 1) comment est-ce que la fonction s'ex?cute R: elle est appelé dans la requete donnee ci-dessus
Q: 2) dois-je vraiment rajouter une colonne concatener directement dans ma Table R: NON, il faut simplement enregistrer la requete dans votre base de donnees puis creer un formulaire ayant comme source de donnee cette requete et non votre table
Q: 3) tu me donnes aussi la requ?te correspondante, je ne comprends pas tellement le AS [Fleur et Pays] alors que ce sont deux champs bien distincts. R: la requete ne retourne qu'un champ qui contient le nom de la fleur et la liste des pays (grace a la fonction VBA) c'est pour ca que je le nomme [Fleur et Pays].
pb
On 9 sep, 22:31, wrote:
Merci pb pour ta r?ponse,
Mais l? je peine un peu avec les fonctions.
Je la mets dans un module standard, jusque-l?, ?a va mais ensuite...
1) comment est-ce que la fonction s'ex?cute 2) dois-je vraiment rajouter une colonne concatener directement dans ma Table 3) tu me donnes aussi la requ?te correspondante, je ne comprends pas tellement le AS [Fleur et Pays] alors que ce sont deux champs bien distincts.
Merci pour tes pr?cisions. A bient?t. Xvier
bonjour,
Q: 1) comment est-ce que la fonction s'ex?cute
R: elle est appelé dans la requete donnee ci-dessus
Q: 2) dois-je vraiment rajouter une colonne concatener directement
dans ma Table
R: NON, il faut simplement enregistrer la requete dans votre base de
donnees puis creer un formulaire ayant comme source de donnee cette
requete et non votre table
Q: 3) tu me donnes aussi la requ?te correspondante, je ne comprends
pas tellement le AS [Fleur et Pays] alors que ce sont deux champs bien
distincts.
R: la requete ne retourne qu'un champ qui contient le nom de la fleur
et la liste des pays (grace a la fonction VBA) c'est pour ca que je le
nomme [Fleur et Pays].
pb
On 9 sep, 22:31, kd...@hotmail.com wrote:
Merci pb pour ta r?ponse,
Mais l? je peine un peu avec les fonctions.
Je la mets dans un module standard, jusque-l?, ?a va mais ensuite...
1) comment est-ce que la fonction s'ex?cute
2) dois-je vraiment rajouter une colonne concatener directement dans
ma Table
3) tu me donnes aussi la requ?te correspondante, je ne comprends pas
tellement le AS [Fleur et Pays] alors que ce sont deux champs bien
distincts.
bonjour, Q: 1) comment est-ce que la fonction s'ex?cute R: elle est appelé dans la requete donnee ci-dessus
Q: 2) dois-je vraiment rajouter une colonne concatener directement dans ma Table R: NON, il faut simplement enregistrer la requete dans votre base de donnees puis creer un formulaire ayant comme source de donnee cette requete et non votre table
Q: 3) tu me donnes aussi la requ?te correspondante, je ne comprends pas tellement le AS [Fleur et Pays] alors que ce sont deux champs bien distincts. R: la requete ne retourne qu'un champ qui contient le nom de la fleur et la liste des pays (grace a la fonction VBA) c'est pour ca que je le nomme [Fleur et Pays].
pb
On 9 sep, 22:31, wrote:
Merci pb pour ta r?ponse,
Mais l? je peine un peu avec les fonctions.
Je la mets dans un module standard, jusque-l?, ?a va mais ensuite...
1) comment est-ce que la fonction s'ex?cute 2) dois-je vraiment rajouter une colonne concatener directement dans ma Table 3) tu me donnes aussi la requ?te correspondante, je ne comprends pas tellement le AS [Fleur et Pays] alors que ce sont deux champs bien distincts.
Je reviens par rapport à la réponse sur le concaténer d'hier qui marche à merveille mais en réfléchissant bien il me fallait celle-ci non pas à partir d'une Table mais bien évidemment d'une requête.
J'ai créé ma requête qui regroupe six Tables (des fois je ne sais vraiment pas comment j'y arrive).
Cette requête est importante puisque qu'elle contient le numéro de facture.
Je voudrais grâce à cette requête à ce que le client ait sur sa facture la provenance des fleurs qu'il a commandées et non pas la liste de la provenance de toutes nos fleurs. Par exemple : Roméo achète que des roses pour la Saint-Valentin et il reçoit la facture avec la provenance de toutes nos fleurs... ben il revient plus et il quitte Juliette.
En mettant, directement le numéro de facture dans mon critère dans la requête, la fonction marche à merveille.
Par contre, si je fais référence dans mon critère à une valeur d'un TextBox de mon formulaire du genre [Formulaires]![FormCreationFacture]! [NoFacture], je me retrouve avec les bonnes fleurs MAIS avec comme pays de provenance.... Rose : Erreur !
Qu'est ce que je fais de faux ?
Merci pour vos réponses. A bientôt Xavier
Bonjour,
Je reviens par rapport à la réponse sur le concaténer d'hier qui
marche à merveille mais en réfléchissant bien il me fallait celle-ci
non pas à partir d'une Table mais bien évidemment d'une requête.
J'ai créé ma requête qui regroupe six Tables (des fois je ne sais
vraiment pas comment j'y arrive).
Cette requête est importante puisque qu'elle contient le numéro de
facture.
Je voudrais grâce à cette requête à ce que le client ait sur sa
facture la provenance des fleurs qu'il a commandées et non pas la
liste de la provenance de toutes nos fleurs. Par exemple : Roméo
achète que des roses pour la Saint-Valentin et il reçoit la facture
avec la provenance de toutes nos fleurs... ben il revient plus et il
quitte Juliette.
En mettant, directement le numéro de facture dans mon critère dans la
requête, la fonction marche à merveille.
Par contre, si je fais référence dans mon critère à une valeur d'un
TextBox de mon formulaire du genre [Formulaires]![FormCreationFacture]!
[NoFacture], je me retrouve avec les bonnes fleurs MAIS avec comme
pays de provenance.... Rose : Erreur !
Je reviens par rapport à la réponse sur le concaténer d'hier qui marche à merveille mais en réfléchissant bien il me fallait celle-ci non pas à partir d'une Table mais bien évidemment d'une requête.
J'ai créé ma requête qui regroupe six Tables (des fois je ne sais vraiment pas comment j'y arrive).
Cette requête est importante puisque qu'elle contient le numéro de facture.
Je voudrais grâce à cette requête à ce que le client ait sur sa facture la provenance des fleurs qu'il a commandées et non pas la liste de la provenance de toutes nos fleurs. Par exemple : Roméo achète que des roses pour la Saint-Valentin et il reçoit la facture avec la provenance de toutes nos fleurs... ben il revient plus et il quitte Juliette.
En mettant, directement le numéro de facture dans mon critère dans la requête, la fonction marche à merveille.
Par contre, si je fais référence dans mon critère à une valeur d'un TextBox de mon formulaire du genre [Formulaires]![FormCreationFacture]! [NoFacture], je me retrouve avec les bonnes fleurs MAIS avec comme pays de provenance.... Rose : Erreur !
Qu'est ce que je fais de faux ?
Merci pour vos réponses. A bientôt Xavier
pbserv
bonjour,
très heureux que la fonction vous plaise.
A priori, je pense que l'erreur vient du fait que le numero de facture retourné par le formulaire est de type String et non de type Long. Il faut donc forcer le type Long dans la requete avec la fonction CLng() en écrivant dans la requete : CLng([Formulaires]![FormCreationFacture]![NoFacture])
en espérant que ca fonctionne...
pb
On 10 sep, 23:15, wrote:
Bonjour,
Je reviens par rapport à la réponse sur le concaténer d'hier qui marche à merveille mais en réfléchissant bien il me fallait celle-ci non pas à partir d'une Table mais bien évidemment d'une requête.
J'ai créé ma requête qui regroupe six Tables (des fois je ne sais vraiment pas comment j'y arrive).
Cette requête est importante puisque qu'elle contient le numéro de facture.
Je voudrais grâce à cette requête à ce que le client ait sur sa facture la provenance des fleurs qu'il a commandées et non pas la liste de la provenance de toutes nos fleurs. Par exemple : Roméo achète que des roses pour la Saint-Valentin et il reçoit la facture avec la provenance de toutes nos fleurs... ben il revient plus et il quitte Juliette.
En mettant, directement le numéro de facture dans mon critère dans la requête, la fonction marche à merveille.
Par contre, si je fais référence dans mon critère à une valeur d' un TextBox de mon formulaire du genre [Formulaires]![FormCreationFacture]! [NoFacture], je me retrouve avec les bonnes fleurs MAIS avec comme pays de provenance.... Rose : Erreur !
Qu'est ce que je fais de faux ?
Merci pour vos réponses. A bientôt Xavier
bonjour,
très heureux que la fonction vous plaise.
A priori, je pense que l'erreur vient du fait que le numero de facture
retourné par le formulaire est de type String et non de type Long.
Il faut donc forcer le type Long dans la requete avec la fonction
CLng() en écrivant dans la requete :
CLng([Formulaires]![FormCreationFacture]![NoFacture])
en espérant que ca fonctionne...
pb
On 10 sep, 23:15, kd...@hotmail.com wrote:
Bonjour,
Je reviens par rapport à la réponse sur le concaténer d'hier qui
marche à merveille mais en réfléchissant bien il me fallait celle-ci
non pas à partir d'une Table mais bien évidemment d'une requête.
J'ai créé ma requête qui regroupe six Tables (des fois je ne sais
vraiment pas comment j'y arrive).
Cette requête est importante puisque qu'elle contient le numéro de
facture.
Je voudrais grâce à cette requête à ce que le client ait sur sa
facture la provenance des fleurs qu'il a commandées et non pas la
liste de la provenance de toutes nos fleurs. Par exemple : Roméo
achète que des roses pour la Saint-Valentin et il reçoit la facture
avec la provenance de toutes nos fleurs... ben il revient plus et il
quitte Juliette.
En mettant, directement le numéro de facture dans mon critère dans la
requête, la fonction marche à merveille.
Par contre, si je fais référence dans mon critère à une valeur d' un
TextBox de mon formulaire du genre [Formulaires]![FormCreationFacture]!
[NoFacture], je me retrouve avec les bonnes fleurs MAIS avec comme
pays de provenance.... Rose : Erreur !
A priori, je pense que l'erreur vient du fait que le numero de facture retourné par le formulaire est de type String et non de type Long. Il faut donc forcer le type Long dans la requete avec la fonction CLng() en écrivant dans la requete : CLng([Formulaires]![FormCreationFacture]![NoFacture])
en espérant que ca fonctionne...
pb
On 10 sep, 23:15, wrote:
Bonjour,
Je reviens par rapport à la réponse sur le concaténer d'hier qui marche à merveille mais en réfléchissant bien il me fallait celle-ci non pas à partir d'une Table mais bien évidemment d'une requête.
J'ai créé ma requête qui regroupe six Tables (des fois je ne sais vraiment pas comment j'y arrive).
Cette requête est importante puisque qu'elle contient le numéro de facture.
Je voudrais grâce à cette requête à ce que le client ait sur sa facture la provenance des fleurs qu'il a commandées et non pas la liste de la provenance de toutes nos fleurs. Par exemple : Roméo achète que des roses pour la Saint-Valentin et il reçoit la facture avec la provenance de toutes nos fleurs... ben il revient plus et il quitte Juliette.
En mettant, directement le numéro de facture dans mon critère dans la requête, la fonction marche à merveille.
Par contre, si je fais référence dans mon critère à une valeur d' un TextBox de mon formulaire du genre [Formulaires]![FormCreationFacture]! [NoFacture], je me retrouve avec les bonnes fleurs MAIS avec comme pays de provenance.... Rose : Erreur !
Qu'est ce que je fais de faux ?
Merci pour vos réponses. A bientôt Xavier
kdonu
Bonsoir pb,
Non, �a ne marche pas.
Si je mets le num�ro de facture manuellement � l'invite de "Entrer une valeur de param�tre" en lan�ant ma requ�te, aucun probl�me, elle s'affiche correctement.
Par contre, si je mets le m�me num�ro � l'invite de la requ�te o� se trouve la fonction, je me retrouve avec :
Roses : Erreur ! Tulipes : Erreur !
Malgr� votre conseil.
Je vais encore chercher un peu.
Bonne nuit.
Bonsoir pb,
Non, �a ne marche pas.
Si je mets le num�ro de facture manuellement � l'invite de "Entrer une
valeur de param�tre" en lan�ant ma requ�te, aucun probl�me, elle
s'affiche correctement.
Par contre, si je mets le m�me num�ro � l'invite de la requ�te o� se
trouve la fonction, je me retrouve avec :
Si je mets le num�ro de facture manuellement � l'invite de "Entrer une valeur de param�tre" en lan�ant ma requ�te, aucun probl�me, elle s'affiche correctement.
Par contre, si je mets le m�me num�ro � l'invite de la requ�te o� se trouve la fonction, je me retrouve avec :
Roses : Erreur ! Tulipes : Erreur !
Malgr� votre conseil.
Je vais encore chercher un peu.
Bonne nuit.
kdonu
J'arrive vraiment pas � trouver comment faire, sniff !
J'arrive vraiment pas � trouver comment faire, sniff !