Bonjour,
Comment faire pour qu'ACCESS ne tronque pas la concaténation à 255caractères (le champ de destination est un champ Mémo)????
Merci.
Bonjour,
Comment faire pour qu'ACCESS ne tronque pas la concaténation à 255caractères (le champ de destination est un champ Mémo)????
Merci.
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
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.
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
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.
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
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
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 :
Affiche 559 pour la deuxieme colonne. Soit une données de 599 caractères
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;
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
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.
re,
la même qui approvisionne automatiquement des TextBox pre-définis dans un formulaire en fonction du nombre de Projet.
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
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 ...
Et voilà, en plus ça doit être plus performant
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);
Bjr
quelque chose doit m'échapper, la requête compile le N° des projets (1, 2) et non les participants ?
merci de votre aide
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:
J'ai testé 2 ou 3 modifications (NomParticipant au lieu de Projet) mais sans succès.
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
Cdlt
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 ?
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
Pour le plaisir, j'ai un nouveau défi à partir de cette étape -> l'export (non tronqué) ... dans excel
Cdlt
ça ne marche pas avec cette requête ?
Non, il existe vraisemblablement une 2eme limitation qui entre en jeu lors du transfert vers excel
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
Ben non, c'est une limitation d'Excel, la taille d'une cellule est de 255 caractères
Largeur des colonnes 255 caractères
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.
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