{Access} Concaténation de champs

Fermé
Djo - 1 nov. 2009 à 20:34
 Djo - 4 nov. 2009 à 22:51
Bonjour,

J'ai une table à 3 champs. Je souhaiterais que l'un des champs soit (par défaut lors de la saisie d'un enregistrement) égal à la concaténation des 2 autres.

Je souhaiterais le faire le plus simplement du monde (sans VBA, sans SQL si possible mais seulement avec ce que propose Access). Comment procéder ?

Merci d'avance.

Djo

A+

20 réponses

moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
1 nov. 2009 à 21:01
dans ton formulaire clic droit propriete et onglet donné tu vas voir source control
3
moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
1 nov. 2009 à 20:40
essaie ds la valeur par default ou source control :
=[champ1]&[champs2]
1
Merci.

valeur par défaut : fonctionner pas

source control : qu'est-ce ?
0
moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
1 nov. 2009 à 21:04
je vien de test cela fonctionne si tu as besoin d' un espace ajoute un & " " & entre les 2






















&
0
Bonjour,

Oui effectivement cela fonctionne mais je rencontre un autre problème qui est lié.

En fait j'ai une table "Document". Chaque document est identifié de façon unique avec une référence et une issue.
Si je crée 2 clef primaires sur les champs référence et issue, cela me pose des problèmes pour les relations entre tables par la suite. Par contre avec une clef primaire => pas de problème (déjà ça je ne comprends pas pourquoi 2 clefs primaires posent des problèmes à Access pour les relation enfin bref si vous pouvez expliquer ce sera avec plaisir que j'essaierai de comprendre)

Donc mon idée était de créer trois champs : référence, issue, référence_issue (concaténation des 2 premiers champs) et d'attacher la clef primaire à ce dernier champs.
Or lorsque je saisie les données dans le formulaire, la concaténation se fait bien dans le champs refercence_issue mais lorsque je souhaite sauvegarder l'enregistrement, il me dit que le champs reference_issue ne peut pas contenir de valeur null (normal c'est une clef primaire) alors qu'il est bien rempli avec la concaténation des 2 premier (via le source control : =reference & " Issue " & issue)

Peut-être que je procède mal dès le départ ?
Merci de votre aide.

A+
Djo
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
3 nov. 2009 à 19:11
bonjour


le plus adapté a ta situation est de creer une requete de mise a jour

ton champ référence_issue tu ne met rien en soirce controle

met tu crait une requete de mise a jour qui dis que :


référence_issue = reference & " Issue " & issue)
0
Bonjour,

Je début complètement en Access.

Comment faire ?
Est-ce que ca va être une requete SQL ?

Je pense que le problème se pose souvent lors de la création d'une base de donnée.
Comme procédez-vous quand une table liée a des enregistrements identifiés par 2 champs ? la bonne solution est-elle bien d'en créer un 3eme ?

Merci.

A+

Djo
0
blux Messages postés 26531 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 16 décembre 2024 3 317
3 nov. 2009 à 20:51
Salut,

deux champs composant une seule clé primaire sont parfaitement gérés par ACCESS, et recommandés en lieu et place de la concaténation des deux champs pour une seule clé, qui est une aberration au sens base de données...
0
moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
3 nov. 2009 à 20:55
Une requete de mise a jour basique ds access fonctionnera parfaitement ton 3 eme champs ds mise a jour tu met = 1ER + 2eme
0
Merci moiced59 mais je préfère l'approche de blux qui fait...moins gadget...

Blux, peux-tu m'indique comme je dois préciser à Access de ne faire qu'une clef à partir de 2 champs ?

Merci d'avance.

A+
0
blux Messages postés 26531 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 16 décembre 2024 3 317
3 nov. 2009 à 22:06
tu sélectionnes les deux champs en même temps et tu cliques sur l'icône clé ;-)
0
Bonjour,

Merci blux.
Si je fais ce que tu me dis : il me crée une clef primaire par champ.

et donc comme je disais dans un précédent message :
Si je crée 2 clef primaires sur les champs référence et issue, cela me pose des problèmes pour les relations entre tables par la suite. Par contre avec une clef primaire => pas de problème (déjà ça je ne comprends pas pourquoi 2 clefs primaires posent des problèmes à Access pour les relation enfin bref si vous pouvez expliquer ce sera avec plaisir que j'essaierai de comprendre)

Merci A+
0
blux Messages postés 26531 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 16 décembre 2024 3 317
4 nov. 2009 à 13:41
il me crée une clef primaire par champ
Non, il affiche le symbole 'clé primaire' devant chaque champ qui la compose, nuance ;-)
0
VVVVoui mais (parce qu'il y a un mais) :

Dès lors que j'ai une clef composée j'ai un problème entre mes données liées je m'explique.

Table A : 1 champ "identifiant"
Table B : 2 champs "référence" et "issue"

Si j'établi les relations telle quelle (c a d avec une clef composée) j'ai le comportement suivant :
De la table B : lorsque je développe (à l'aide du petit + à gauche de chaque enregistrement) les données liées (les données de la table A) il me liste TOUS les rengistrements de A à chaque enregistrement dans B !!

Si je n'ai pas de cef composée, il le liste seulement (et c bien ce que je veux) les enregistrements de A réellement liés à l'enregistrement concerné dans B.

Pourquoi réagit-il comme ça ?? il se perd avec une clef composée ???
Comment y remédier ?

Merci
A+
0
blux Messages postés 26531 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 16 décembre 2024 3 317
4 nov. 2009 à 16:53
Quelles sont les relations que tu as établies ? As-tu mis une intégrité référentielle ?

J'ai fait ce genre de truc (ou approchant) des dizaines de fois, sans souci. Peut-être un problème dans la modélisation de la base ?
0
Djo > blux Messages postés 26531 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 16 décembre 2024
4 nov. 2009 à 17:04
Oui j'utilise l'intégrité référentielle et la mise à jour en cascade...

Je t'enverrais bien des images mais comment faire ?? je crois que je ne peux même pas t'envoyer mon adresse mail sous message privé...
0
Pardon tu m'as demandé de décrire les relations établies :

Table A liée à Table B par une liaison type "plusieurs à plusieurs". J'ai donc crée une table C de liaison entre la A et la B. la C contient les liaisons (enregistrement 1 de la table A et lié à l'enregistrement 2 et 3 de la table B etc...)

Suis-je-clair ?

Peut-être devrais-je exposer mon problème de base :
J'ai une table Produit et une table Non conformité
Un produit n'a pas forcément de Non conformité mais peut aussi en avoir plusieurs
Une Non conformité est quant à elle forcément liée à au moins 1 produit.

Voilà ce que j'essaie de faire.

Merci A+
0
Parce que pour préciser un peu : je pars du principe que la table de liaison (la table C) ne doit pas être remplie par l'uitlisateur.
Je par effectivement du principe que l'utilisateur de remplit que les tables directes (à la reception d'une non conformité, il va saisir dans la tables (bientôt le formulaire) non conformité et pas ailleurs. On est d'accord ?

En fait les données dont je parlais tout à l'heure (lorsque je développe (à l'aide du) les données liées (les données de la table A) il me liste TOUS petit + à gauche de chaque enregistrementles rengistrements de A à chaque enregistrement dans B !!) ça c'est valable lorsque je fais Insertion -> sous feuille de données.

Mais à la base je n'ai pas du tout de petit + dans ma tables à clef composée. Je ne l'ai que dans la table à clef simple.

Merci
0
blux Messages postés 26531 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 16 décembre 2024 3 317
4 nov. 2009 à 18:22
donc, une relation de n à n se simplifie par une table intermédiaire dont la clé primaire est la concaténation des clé primaires des deux tables rattachées dans une relation 1-n.

tu peux coller une copie écran de tes relations sous cjoint.com ?
0
Voici la relation :
https://www.cjoint.com/?lesUZNPjut

Je suis vraiment débutant ça se trouve je fais une gourde grosse comme moi...

Merci A+
0
blux Messages postés 26531 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 16 décembre 2024 3 317
4 nov. 2009 à 20:45
Rien de choquant pour moi dans la construction des données.

Le souci que tu évoques semble sans doute lié au + qui a un comportement étrange.

Tes tables sont elles remplies ?
0
Pour dire la vérité en fait j'utilise Toad Data Modeler pour créer la structure de ma base et cet outil me genère du code VBA que j'exécute ensuite et qui me crée la structure de toute mes tables, les relations etc...
Je pense qu'il doit y avoir une option qui fout la merde.

Si pour toi rien de choquant...alors je comprends pas.

As-tu déjà utilisé Toad ?

A+
0
blux Messages postés 26531 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 16 décembre 2024 3 317
4 nov. 2009 à 21:12
Voui, mais pas sur access...

Ton souci, c'est juste un problème dans l'affichage ? gère toi-même les formulaires et tu verras que tu ne seras plus obligé de te poser des question existentielles.

Si ton modèle de données est correct, alors, il n'y quasiment aucune limite à la gestion par access.
0
OK merci.

Je vais me mettre au formulaire et ne pas faire attention à la forme au niveau table.

Maintenant il faut que je comprenne quand faire des requêtes etc...

Merci Blux.

A+
0