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 :

La concaténation de champs dans une seule colonne est tronquée


Sujet :

Access

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 11
    Points : 1
    Points
    1
    Par défaut La concaténation de champs dans une seule colonne est tronquée
    Bonjour,

    Comment faire pour qu'ACCESS ne tronque pas la concaténation à 255caractères (le champ de destination est un champ Mémo)????

    Merci.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France

    Informations professionnelles :
    Secteur : Services à domicile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 219
    Points : 1 707
    Points
    1 707
    Par défaut
    Salut,
    OK , j’ai un peu oublié, mais il y avait une réponse possible de Gabout et j’avoue que je manquais un peu d’infos supplémentaires, bien sur j’aurais pu les demander.
    Soit à quel niveau doit se faire la concaténation et surtout sur quel support : requête, formulaire, table, Etat.
    On va prendre en attendant le plus simple niveau table avec l’application en VBA.
    En général on recommande de ne pas inclure de champ calculé dans une table. Les calculs pouvant se faire au niveau requête.
    Une exception confirmant la règle, une concaténation au niveau requête dépassant 255 caractères n’est semble-t-il pas supporté par le SQL sauf si le champ fait référence à celui d’une table de type mémo. Voir ex : sur base jointe – le calcul et le champ réf mémo apparaît bien a l’édit de la requête par contre celui basé directement sur un champ de requête avec le même calcul n’apparaît pas.
    Alors pour concaténer 2 ou plusieurs champs texte dans un seul champ mémo au niveau de la même table, il faut passer par du VBA, par exemple sur la base jointe, sur l’évènement après mise a jour du dernier champ saisi on met le code de concaténation qui va compléter le champ mémo
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Champ2_AfterUpdate()
    Me.Champ_Concact = Me.Champ1.Value & Me.Champ2.Value
     
     
    End Sub
    On peut également aller chercher des champs dans d’autres objets avec comme le préconise Gabout avec Dlookup, mais il nous faut un peu plus d’infos pour vous donner les pistes a suivre.
    A + si je ne m’endors pas sur le post ! mais un conseil déjà proféré très souvent dans le forum, soyez le plus précis possible sur votre demande et surtout bien définir le contexte, niveau de la base, sa structure et là ou vous avez le problème sinon on risque d’abandonner devant les infos manquantes nous sommes tous des bénévoles avec les + et les -.
    D’autre part vous m’avez re posé le problème par message personnel – le principe du forum et de ne pas poser de problème technique par message personnel les problèmes comme les solutions ou propositions de solutions doivent être collectives pour bénéficier « éventuellement » à tous.

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    Bonjour, merci et désolé d'avoir tardé, je n'avais pas vu cette réponse.
    Je consulte la base envoyée et je reviendrai dans le post avec le plus de précision possible si je ne m'en sors pas.
    Cdlt

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    Re-bonjour
    La solution proposée par TOFALU me conviendrai parfaitement mais dans le cas qui me préoccupe le résultat de la requete pour certains "projets" peut dépasser les fatidiques 255 caractères et là je coince. En résumé dans la base ci-jointe le résultat de la requete pour le projet 2 est tronqué à 255 caractères alors que j'aurai besoin de tous les "participants" associés à ce projet qui figurent dans la table.
    J'avoue n'être pas parvenu à mettre en oeuvre l'autre solution évoquée dans le post peut être par manque de maîtrise.
    Espèrant qu'avec ces précisions quelqu'un pourra me venir en aide...

    Cdlt
    Fichiers attachés Fichiers attachés

  5. #5
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Dans le cas d'alvecom, les données ne sont pas tronquées mais simplement non affichée. En les envoyant dan un formulaire et une zone de texte multiligne, ça ira. Pour preuve :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT DISTINCT Tbl_projet.Projet, Len(Recupparticipant(Projet)) AS LesParticipants
    FROM Tbl_projet;
    Affiche 559 pour la deuxieme colonne. Soit une données de 599 caractères

    Pour le 1er cas, il suffirait plutot que de faire un INSERT INTO VALUES, de faire un INSERT INTO SELECT, je pense que ça peut le faire

  6. #6
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France

    Informations professionnelles :
    Secteur : Services à domicile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 219
    Points : 1 707
    Points
    1 707
    Par défaut
    Bonsoir,
    N’étant pas expert en SQL, ci-joint si ça peut rendre service en attendant de trouver la solution, un exemple de traitement du problème avec VBA.

  7. #7
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France

    Informations professionnelles :
    Secteur : Services à domicile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 219
    Points : 1 707
    Points
    1 707
    Par défaut
    re,
    la même qui approvisionne automatiquement des TextBox pre-définis dans un formulaire en fonction du nombre de Projet.

  8. #8
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    Bjr,
    Désolé, mais en ce qui concerne la réponse de TOFALU, l'affichage en formulaire (ou dans un état) reste tronqué (les propriétés auto extensible / au réductible des zones de texte sont bien sur "oui")
    Cdlt

  9. #9
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Arf c'est logique à cause de l'affichage avec distinct. Ca opère un group by qui lui est limité à 255 caractères. Je cherche une parade ...

  10. #10
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT  Projet, Recupparticipant(Projet) AS LesParticipants
    FROM (SELECT DISTINCT tbl_Projet.Projet FROM tbl_Projet);
    Et voilà, en plus ça doit être plus performant

  11. #11
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    Bjr
    quelque chose doit m'échapper, la requête compile le N° des projets (1, 2) et non les participants ?
    merci de votre aide

  12. #12
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    Je précise que je travaille à partir de la tout 1ere version du code, et j'ai donc intégrer ta dernière trouvaille comme ci-dessous:

    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 RecupParticipant(Projet As Long) As String
    Dim res As DAO.Recordset
    Dim SQL As String
    'Selectionne les participant du projet
    SQL = "SELECT  Projet, Recupparticipant(Projet) AS LesParticipants FROM (SELECT DISTINCT tbl_Projet.Projet FROM tbl_Projet)"
    Set res = CurrentDb.OpenRecordset(SQL)
    'Concatene les différents enregistrement
    While Not res.EOF
    RecupParticipant = RecupParticipant & res.Fields(0).Value & " "
    res.MoveNext
    Wend
    'Enleve le dernier espace
    RecupParticipant = Left(RecupParticipant, Len(RecupParticipant) - 1)
    'libere la mémoire
    Set res = Nothing
    End Function
    J'ai testé 2 ou 3 modifications (NomParticipant au lieu de Projet) mais sans succès.
    Cdlt

  13. #13
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Bonjour

    Tu as modifié la requête dans le VBA au lieu de modifier celle dans le SQL

    Tu as vu que dans la requête que tu charges dans la fonction RecupParticipant tu appelles de nouveau cette fonction ?

  14. #14
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    Oups !
    Evidemment maintenant cela marche parfaitement.
    Un grand MERCI car je cherche cette solution depuis longtemps et la tienne est d'une simplicité et d'une efficacité redoutable (autant que je puisse en juger).

    Merci également aux autres contributeurs qui ont mobilisé leurs connaissances et leur temps.

    Cdlt

  15. #15
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    Pour le plaisir, j'ai un nouveau défi à partir de cette étape -> l'export (non tronqué) ... dans excel
    Cdlt

  16. #16
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    ça ne marche pas avec cette requête ?

  17. #17
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    Non, il existe vraisemblablement une 2eme limitation qui entre en jeu lors du transfert vers excel

  18. #18
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Dans ce cas, il va falloir utiliser Automation.

    Regarde sur le forum et le site, tu trouveras des infos

    Autre piste : ouvrir un recordset sur la feuille Excel. Là encore tu devrais pouvoir trouver des infos

  19. #19
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Ben non, c'est une limitation d'Excel, la taille d'une cellule est de 255 caractères

    Largeur des colonnes 255 caractères

  20. #20
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France

    Informations professionnelles :
    Secteur : Services à domicile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 219
    Points : 1 707
    Points
    1 707
    Par défaut
    bonsoir,
    cela doit dépendre du départ de l'export ex:
    d'un formulaire on y arrive - en fait normalement excel doit afficher au moins 1024 caractères dans une cellule texte me semble-t-il
    voir fichier joint.

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