IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

regroupement de valeurs sur un champs


Sujet :

Access

  1. #21
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Points : 1 579
    Points
    1 579
    Par défaut
    Citation Envoyé par Sami Xite
    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:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT type FROM cpt_type WHERE id_commande="52677"
    Je vois pas ce qui cloche dans le module ...
    si id_commande est de type numérique c'est normal !
    Amicalement

  2. #22
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 208
    Points : 76
    Points
    76
    Par défaut
    Citation Envoyé par DMboup
    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;
    Toujours ce message d'erreur:

    Erreur d'execution
    Type de données incompatible dans l'expression du critère

    id_commande est de la forme texte dans ma table mais ne contient que des chiffres
    Je suis persuadé que c'est au niveau du module que qqchose cloche mais quoi ??!!

  3. #23
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 898
    Points : 4 787
    Points
    4 787
    Par défaut
    Ben evidemment que c'est au niveau du module :
    puisque tu as trouvé que id_commande est de type String :
    il faut corriger en conséquence ta fonction concat_type()
    Tu as 2 endroits à corriger
    "Always look at the bright side of life." Monty Python.

  4. #24
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 208
    Points : 76
    Points
    76
    Par défaut
    Ca y est j'ai qqchose !!

    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
    La requête fonctionne mais par contre elle ne fait pas de regroupement sur id_commande
    Je m'explique si j'ai dans cpt_type

    id_commande type
    1------------1x40
    1------------1x20
    1------------2x40
    2------------3x40
    2------------1x20

    il me sort :

    id_commande colisage
    1------------1x40 1x20 2x40 3x40 1x20
    2------------1x40 1x20 2x40 3x40 1x20

    J'apprécie vraiment votre patience ...juste un dernier coup de main et je retourne dans mon terrier d'ignorance

  5. #25
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 898
    Points : 4 787
    Points
    4 787
    Par défaut
    Encore :
    une modif dans (je te laisse deviner à la place de Long)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Function concat_type(id_commande As Long) As String
    et puis remplacer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ... WHERE id_commande=" & "id_commande"
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE id_commande='" & id_commande & "'"
    ça devrait le faire
    "Always look at the bright side of life." Monty Python.

  6. #26
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 208
    Points : 76
    Points
    76
    Par défaut
    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 String) 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, dbOpenDynaset, 0, dbReadOnly)
    '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 = RTrim(concat_type)
    'libere la mémoire
    Set res = Nothing
    End Function
    Ca marche !!
    Merci à tous pour votre aide

    PS : Sur String j'ai bon ??

  7. #27
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 898
    Points : 4 787
    Points
    4 787
    Par défaut
    Sur String j'ai bon ??
    ...tout bon ... et ça marche : bravo !

    Alors n'oublie pas de cliquer [résolu]
    "Always look at the bright side of life." Monty Python.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. regrouper plusieurs valeurs dans un champs
    Par remyc42 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 30/08/2012, 12h01
  2. UPDATE regrouper les valeurs d'un champ
    Par hammag dans le forum SQL
    Réponses: 4
    Dernier message: 31/07/2012, 11h17
  3. [ZF 1.10] Regrouper les données sur un champ
    Par tux59 dans le forum Zend_Db
    Réponses: 0
    Dernier message: 10/02/2012, 09h20
  4. inverser deux valeur sur un champ UNIQUE
    Par gotcha5832 dans le forum Requêtes
    Réponses: 3
    Dernier message: 23/05/2011, 04h23
  5. Regrouper des valeurs de différents champs
    Par Guranga dans le forum Access
    Réponses: 1
    Dernier message: 13/06/2006, 21h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo