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

VBA Access Discussion :

Concaténer plusieurs enregistrements dans une seule colonne ( Résultat supérieur à 255 digits) [AC-2010]


Sujet :

VBA Access

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 123
    Points : 67
    Points
    67
    Par défaut Concaténer plusieurs enregistrements dans une seule colonne ( Résultat supérieur à 255 digits)
    Bonjour

    Sur le site j'ai trouvé un super tuto qui correspond tout à fait pour avoir le résultat que je souhaite obtenir.

    C'est à dire avoir dans un champ la concaténation de x valeurs contenus dans x enregistrements.

    Le lien est

    http://access.developpez.com/sources...QLLigneColonne

    Au Chapitre: Concaténer plusieurs enregistrements dans une seule colonne

    et Option: R02

    Avec pour code

    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
    17
    18
    19
     
    Public Function RecupProjet(Nom As String) As String
    Dim res As DAO.Recordset
    Dim SQL As String
    'Selectionne les  projet du partcipant
    'chr(34) correspond a des guillemets pour encadrer le texte
    SQL = "SELECT Projet FROM Tbl_Projet WHERE NomParticipant=" & _
              Chr(34) & Nom & Chr(34)
    Set res = CurrentDb.OpenRecordset(SQL)
    'Concatene les différents enregistrement
    While Not res.EOF
    RecupProjet = RecupProjet & res.Fields(0).Value & ";"
    res.MoveNext
    Wend
    'Enleve le dernier ;
    RecupProjet = Left(RecupProjet, Len(RecupProjet) - 1)
    'libere la mémoire
    Set res = Nothing
    End Function

    et requête SQL


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT DISTINCT Tbl_projet.NomParticipant, Recupprojet(NomParticipant) AS LesProjets
    FROM Tbl_projet;

    J'ai adapté ce code à mon application et tout fonctionne très bien.
    Sauf que le résultat obtenu dans le champ de cet exemple "LesProjets" est tronqué à 255 digits.
    Dans mon cas je peux atteindre beaucoup plus voire beaucoup plus.
    Peut-être faut-il préciser que le type de champ est de type "Mémo" ??
    Si oui comment faire ?
    Existe-t-il une solution ??

    D'avance merci pour votre aide

    Cordialement

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 600
    Points
    24 600
    Par défaut
    Bonjour,

    Pour stocker des caractères alphanumérique dans une table au delà de 255 car. il faut évidemment utiliser le type Mémo.
    On le règle dans la table. Clic-droit sur la table, Création...

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 123
    Points : 67
    Points
    67
    Par défaut
    Bonjour Loufab

    Merci pour ta réponse rapide.

    Je conçois bien qu'il faille configurer le champ de la table en type Mémo pour avoir plus de digits.
    Sauf que dans mon cas avec le code utilisé, j'ai le résultat dans une requête et non dans une table.

    J'ai oublié de mentionner que je suis novice en vba et que je joue à l'apprenti sorcier à essayer d'adapter à mes besoins les codes trouvés sur le site.

    Cordialement.
    StSym

  4. #4
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 600
    Points
    24 600
    Par défaut
    Dans ce cas il n'y a rien à changer, la requête doit afficher autant de caractères que récupérés sans restriction de longueur.

    Tu n'as pas rajouté de référence DAO au moins ?!
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 123
    Points : 67
    Points
    67
    Par défaut
    Bonjour Loufab

    Non je n'ai rien ajouté au code.

    Pour être certain j'ai créé une nouvelle base.
    J'ai créé une table identique à celle de l'exemple
    J'ai copié sans les adapter les deux codes et les deux sql.

    J'ai testé mais le résultat des 2 requêtes est bien tronqué à 255 car..

    Cordialement
    StSym

  6. #6
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 600
    Points
    24 600
    Par défaut
    peux-tu poster ta base exemple ?
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 123
    Points : 67
    Points
    67
    Par défaut
    Bonjour Loufab

    Ci-joint ma base

    Merci pour ton aide

    StSym
    Fichiers attachés Fichiers attachés

  8. #8
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 600
    Points
    24 600
    Par défaut
    Cette base ne serait pas issue d'une SharePoint par hasard ?
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 123
    Points : 67
    Points
    67
    Par défaut
    Non pas du tout.
    Créée tout simplement sur mon PC.

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 123
    Points : 67
    Points
    67
    Par défaut
    Bonjour Loufab

    C'est bon ça fonctionne!!

    Sur le site j'ai trouvé un code et un sql qui donnent le bon résultat.

    Par contre le j'ai adapté le sql pour qu'il ajoute son résultat dans une table " TableResultatConcatenation".
    Dans cette dernière j'ai configuré le champ "listeProjet" en type Mémo.

    Donc à priori mon problème est résolu.
    Encore merci pour ton aide.

    Ci-joint la nouvelle base




    Cordialement
    StSym
    Fichiers attachés Fichiers attachés

  11. #11
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 600
    Points
    24 600
    Par défaut
    J'ai repris mes tests depuis le début.

    J'ai trouvé la différence, elle était tellement énorme que je ne l'avais même pas vu... heureusement que pour moi les vacances c'est ce soir.

    Ta requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT DISTINCT Tbl_Projet.NomParticipant, RecupProjet([NomParticipant]) AS lesProjets
    FROM Tbl_Projet;
    Ma requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT Tbl_Projet.NomParticipant, RecupProjet([NomParticipant]) AS lesProjets
    FROM Tbl_Projet;
    Si on enlève le Distinct ça fonctionne, par contre on se retrouve avec des doublons.

    Ce que tu peux éventuellement faire c'est créer une table temporaire avec un champ mémo, insérer tout ça dedans (sans le distinct), puis faire une requête de suppression de doublons sur le NomParticipant.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  12. #12
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 600
    Points
    24 600
    Par défaut
    Je viens de lire ta réponse.

    Entre les 2 codes il n'y a pas de différence fondamentale. C'est surtout la méthode qui change. On ne trouve plus de Distinct.

    A noter que le regroupement donne les mêmes symptômes.

    Bonne continuation !
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2007] Concaténer des enregistrements dans une seule colonne
    Par germchou dans le forum Requêtes et SQL.
    Réponses: 16
    Dernier message: 03/07/2018, 16h00
  2. [AC-2007] Probleme pour Concaténer plusieurs enregistrements dans une seule colonne
    Par severik dans le forum Requêtes et SQL.
    Réponses: 23
    Dernier message: 08/11/2017, 15h15
  3. Réponses: 2
    Dernier message: 11/04/2014, 18h16
  4. [AC-2003] Concaténer plusieurs enregistrements dans une seule colonne
    Par pgomis dans le forum Access
    Réponses: 2
    Dernier message: 29/07/2013, 10h39
  5. Réponses: 4
    Dernier message: 29/10/2010, 17h05

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