Bonsoir,
J'ai une relation 1-n entre la valeur A et les valeurs a...z
Comment puis je créer sur une requête regroupée sur A un champs regroupant les valeurs 1...n
Genre : Champs1 = A ; Champs2 = "a"+"b"+"c"+..."z"
Merci pour votre aide
Bonsoir,
J'ai une relation 1-n entre la valeur A et les valeurs a...z
Comment puis je créer sur une requête regroupée sur A un champs regroupant les valeurs 1...n
Genre : Champs1 = A ; Champs2 = "a"+"b"+"c"+..."z"
Merci pour votre aide
J'ai une relation 1-n entre la valeur A et les valeurs a...z![]()
Je pense qu'il y a confusion.
Une relation 1 à N signifie que dans une table tu as un champ qui est une clé primaire, et que dans une seconde table, tu as un champ qui reprend la clé primaire de la première table, que l'on peut retrouver plusieurs fois et qui est utilisé pour la relation.
De ce fait là, le reste devient un peu obscur.
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA
Mes articles
Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
C'est exactement ça !!Envoyé par Heureux-oli
Pour être plus clair j'aimerais qu'un champs regroupe toute les valeurs rattachées à ma clef primaire
Une requête simple donnerait
Champs1---Champs2
A ----------a
A ----------b
A ----------c
A ----------...
Et j'aimerais avoir :
Champs1----Champs2
A-----------a + b + c + ...
Merci pour ton aide
Essayer
SELECT SUM(table1.champs1) from table1 where table1.champs1=table2.champs2
![]()
En tout cas il doit y avoir SUM dans la clause SQL
Au besoin utiliser INNER JOIN..ON
Seulement j'aimerais que les valeurs ne soient pas sommées, remplacer le "+" par un ";"Envoyé par Mat.M
Ce qui donnerait :
Champs1----Champs2
A-----------a ; b ; c ; ...
Merci
Je pense pas que SUM va fonctionner sur du texte.Envoyé par Mat.M
Je pense qu'il faut compter le nombre d'occurrence de A et ensuite, concaténer par une boucle les valeur du second champ.
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA
Mes articles
Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Ok pour compter mais la concaténation me pose problème. Pourrais tu m'indiquer la démérche STP ??Je pense pas que SUM va fonctionner sur du texte.
Je pense qu'il faut compter le nombre d'occurrence de A et ensuite, concaténer par une boucle les valeur du second champ.
Merci encore à tous
bjr,
n'oubliez pas les sources!
http://access.developpez.com/sources...QLLigneColonne
y a juste à mettre un ";" à la place de l'espace
Assistant de création/modification de rubans Office
Utilisez en VBA les librairies graphiques GDI, GDI+ et openGL
Blog Office Mon Site DVP
Salut,Envoyé par Arkham46
Merci de m'avoir dirigé vers ce code mais lorsque je l'adapte à ma base :
puis requête :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 Public Function concat_type(Projet As Long) As String Dim res As DAO.Recordset Dim SQL As String 'Selectionne les types de commande SQL = "SELECT type FROM cpt_type WHERE id_commande=" & id_commande Set res = CurrentDb.OpenRecordset(SQL) 'Concatenation des colisages While Not res.EOF concat_type = concat_type & res.Fields(0).Value & " " res.MoveNext Wend 'Enleve le dernier espace concat_type = Left(concat_type, Len(concat_type) - 1) 'libere la mémoire Set res = Nothing End Function
J'ai le message d'erreur suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SELECT DISTINCT cpt_type.id_commande, concat_type(id_commande) AS Colisage FROM cpt_type;
Erreur d'execution '3075':
Erreur de syntaxe (opérateur absent) dans l'expression 'id_commande='.
Merci pour votre aide et votre patience
Le message indique que id_commande n'est pas (encore) valué
Bonne journéeSQL = "SELECT type FROM cpt_type WHERE id_commande=" & id_commande
"Always look at the bright side of life." Monty Python.
Et pourtant il l'est bel et bien
Ci jointe une extraction excel de cpt_type
Est ce que le fait que cpt_type soit une requête pose problème ??
Merci à tous
et que dirais -tu de remplacer projet par ... ce qui faut
Bonne journée
Code : Sélectionner tout - Visualiser dans une fenêtre à part Public Function concat_type(Projet As Long) As String
"Always look at the bright side of life." Monty Python.
J'ai honte !!Envoyé par micniv
![]()
![]()
Modifs ok
mais maintenant j'ai
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 Public Function concat_type(id_commande As long) As String Dim res As DAO.Recordset Dim SQL As String 'Selectionne les types de commande SQL = "SELECT type FROM cpt_type WHERE id_commande=" & id_commande Set res = CurrentDb.OpenRecordset(SQL) 'Concatene les différents enregistrement While Not res.EOF concat_type = concat_type & res.Fields(0).Value & " " res.MoveNext Wend 'Enleve le dernier espace concat_type = Left(concat_type, Len(concat_type) - 1) 'libere la mémoire Set res = Nothing End Function
Erreur d'execution
Type de données incompatible dans l'expression du critère
J'ai modifié string par integer et/ou long mais j'avoues ne pas tout comprendre là
Gracias
entre les lignes
Insère
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SQL = "SELECT type FROM cpt_type WHERE id_commande=" & id_commande Set res = CurrentDb.OpenRecordset(SQL)Tu en consulteras le résultat dans la fenêtre Exécution (du VBA editeur) ca devrait pouvoir t'aider
Code : Sélectionner tout - Visualiser dans une fenêtre à part Debug.print SQL
"Always look at the bright side of life." Monty Python.
No problemo sur le sql
mais rien à faire au niveau de l'erreur sur la requête...
Merci en tout cas
mais quand tu passes la requete obtenu dans le debug.print dans l'éditeur de requete (donc par copier/coller du sql dans le QBE ), ça donne quoi ?
"Always look at the bright side of life." Monty Python.
Autant pour moi voilà ce qui ressort
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT type FROM cpt_type WHERE id_commande=52677
Thanx
alors la fenetre de la base, tu vas dans le module des requêtes
Tu fais Nouveau (pour Création d'une nouvelle requete),
sur la fenetre qui te propose de choir des tables ou des requetes, tu fais Fermer
dans le bandeau bleu supérieur de la fenetre, tu cliques droit : tu choisis "mode Sql"
dans la fentre, tu colles le texte de ta requete ci-dessus, tu sauves et tu joues la requete : elle passe ou elle plante ?
"Always look at the bright side of life." Monty Python.
Ca nous donne un "Type de donnée incompatible dans l'expression du critère" que j'ai corrigé en ajoutant les guillemets de rigueur:
Je vois pas ce qui cloche dans le module ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT type FROM cpt_type WHERE id_commande="52677"![]()
Essai
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT DISTINCT id_commande, concat_type([id_commande]) AS Colisage FROM cpt_type;
Amicalement
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager