Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > IHM
IHM Ce forum est dédié aux questions relatives à la création de formulaires et d'états, avec ou sans code VBA, et macros.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/04/2011, 11h27   #1
Nouveau Membre du Club
 
Homme Marc Bellêtre
Étudiant
Inscription : mars 2011
Messages : 59
Détails du profil
Informations personnelles :
Nom : Homme Marc Bellêtre
Âge : 20
Localisation : France, Seine Maritime (Haute Normandie)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mars 2011
Messages : 59
Points : 26
Points : 26
Par défaut Deux champs différents dans une même colonne

Bonjour,

Je suis actuellement en stage dans le cadre de ma deuxième année de DUT Informatique et je dois réaliser une application Access pour l'entreprise. Cependant, je n'en ai jamais fait auparavant et je rencontre donc quelques difficultés.

J'aimerais savoir s'il est possible d'afficher deux champs différents dans une même colonne. Dans mon cas, j'ai deux tables "Compétences" et "Modules" qui contiennent les mêmes champs "code" et "libellé". J'aimerais, pour les deux tables, obtenir un formulaire avec une seule colonne code et une seule colonne libellé.

Je vous remercie d'avance pour votre aide.

Cordialement,
Prettyletter
Prettyletter est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/04/2011, 15h13   #2
Membre du Club
 
Avatar de sendme
 
Sendme
Inscription : avril 2006
Messages : 86
Détails du profil
Informations personnelles :
Nom : Sendme

Informations forums :
Inscription : avril 2006
Messages : 86
Points : 50
Points : 50
Bonjour,

Dans la requête source de ton formulaire, il faut afficher tes 2 tables "Compétences" et "Modules" liées par un ID unique.
c'est par exemple une colonne contenant le n° des dossiers qui sont identiques dans les 2 tables (champ n° auto)

Ensuite dans le champ concerné : ColonneLib : [code] & " - " &[libellé]
sendme est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/04/2011, 15h14   #3
Nouveau Membre du Club
 
Homme Marc Bellêtre
Étudiant
Inscription : mars 2011
Messages : 59
Détails du profil
Informations personnelles :
Nom : Homme Marc Bellêtre
Âge : 20
Localisation : France, Seine Maritime (Haute Normandie)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mars 2011
Messages : 59
Points : 26
Points : 26
Je me permet de remonter le sujet car j'ai trouvé une astuce qui pourrait peut-être fonctionner mais ce n'est pas encore ça.

Comme les enregistrements ne peuvent pas être à la fois des compétences et des modules, j'ai effectué une concaténation dans la sélection. C'est-à-dire que, en prenant pour exemple les libellés, j'ai fait la sélection suivante :
Code :
SELECT MODULES.[libelle] & "" & COMPETENCES.[libelle] AS [libelle]
Cela à l'air de fonctionner puisque dans mon formulaire, Access me propose automatiquement les noms que j'ai donné en alias. En revanche, lors de l'affichage, j'ai de très beaux #Nom? qui s'affichent partout.
Ce qui me pose problème avec cette méthode, c'est qu'il faut bien attribuer pour chaque champ celui qui est affecté lors d'une modification. Et je dois obligatoirement choisir MODULES.[libelle] OU COMPETENCES.[libelle], or cela dépend de l'enregistrement en question...

Je ne sais pas si j'ai été clair, j'attends avec impatience vos réponses.


Edit :

Merci pour ta réponse, sendme.

En fait, les enregistrements dans mes deux tables ne sont pas identiques, elles ont simplement les mêmes intitulés de colonne. Elles possèdent les mêmes types de données mais ne sont pas enregistrées dans une même table.
Je souhaiterais "mélanger" les deux tables pour n'en former qu'une seule.
Prettyletter est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2011, 10h37   #4
Nouveau Membre du Club
 
Homme Marc Bellêtre
Étudiant
Inscription : mars 2011
Messages : 59
Détails du profil
Informations personnelles :
Nom : Homme Marc Bellêtre
Âge : 20
Localisation : France, Seine Maritime (Haute Normandie)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mars 2011
Messages : 59
Points : 26
Points : 26
Bonjour,

N'ayant toujours pas trouvé de solution, je relance la discussion.
Prettyletter est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2011, 11h06   #5
Membre éclairé
 
Homme Michel
Développeur informatique
Inscription : février 2008
Messages : 261
Détails du profil
Informations personnelles :
Nom : Homme Michel
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Finance

Informations forums :
Inscription : février 2008
Messages : 261
Points : 304
Points : 304
Par défaut Peux tu préciser ?

Bonjour,

J'avoue ne pas comprendre ton problème... et je souhaiterais donc qq précisions pour tenter de t'aider (sans garantie !).

J'imagine que le champ "Code", dans les deux tables est celui qui va te permettre d'établir une relation entre les deux tables (qui donc doivent contenir des (ou quelques) codes identiques que l'on va retrouver dans l'une et l'autre table) et que seuls les libellés diffèrent pour un même code présent dans les 2 tables... est-ce bien cela ?

style :

Code :
1
2
3
4
5
6
7
Table1
Code   = "00001"
Libelle  = "Libellé 1"
 
Table2
Code   = "00001"
Libelle  = "Libellé 2"
Si c'est bien cela que veux tu faire exactement ?

- une requete dont le résultat concatène pour un même code les champs "libellés" des deux tables ? Ce qui donnerait ici :

Code :
1
2
Code : "00001"
Libellé : "Libellé 1 - Libellé 2"
- un formulaire de saisie et/ou d'affichage issu de cette requête ?

- Peux tu montrer une partie du code que tu as fait pour cela et qui ne fonctionne pas, ou un exemple simplifié (comme j'ai tenté de le faire ci-dessus) ?

Merci pour les éventuelles précisions
Michel
Orion34080 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2011, 15h58   #6
Nouveau Membre du Club
 
Homme Marc Bellêtre
Étudiant
Inscription : mars 2011
Messages : 59
Détails du profil
Informations personnelles :
Nom : Homme Marc Bellêtre
Âge : 20
Localisation : France, Seine Maritime (Haute Normandie)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mars 2011
Messages : 59
Points : 26
Points : 26
Bonjour et merci pour ta réponse.

En fait, mes deux tables ne sont pas en relation. J'ai une table Modules comprenant les champs "ID", "CODE" et "LIBELLE", et une table Compétences comprenant les trois mêmes champs mais n'ayant aucune relation entre eux. Je souhaiterais obtenir un tableau où Compétences et Modules seraient mélangés. Trois colonnes ID, CODE et LIBELLE pour deux tables.

Après, peut-être que c'est impossible...
Prettyletter est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2011, 16h12   #7
Membre éclairé
 
Homme Michel
Développeur informatique
Inscription : février 2008
Messages : 261
Détails du profil
Informations personnelles :
Nom : Homme Michel
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Finance

Informations forums :
Inscription : février 2008
Messages : 261
Points : 304
Points : 304
Par défaut Peur être une solution de contournement du problème ?

Si je comprends bien tes 2 tables ont la même structure mais des données différentes et si cet ensemble constituait une seule et même table tu résoudrais sans doute ton problème.

Partant de cela (si pas d'erreur d'interprêtation de ma part), tu pourrait créer une 3° Table à la structure strictement identique et en début de traitement

1 - Tu crées une requete "Ajout" de la Table "Commentaires" vers la nouvelle table ... et tu l'exécutes
2 - Tu crées une requete "Ajout" de la Table "Modules" vers la nouvelle table ... et tu l'exécutes
3 - Tu fais les traitements que tu voulais faire avec tes 2 tables mais à partir de la nouvelle table.
4 - Ces traitements étant terminés, tu vides la nouvelle table en vue de t'en resservir de la même manière lors du prochain traitement.

En terme de programme cela pourrait donner un truc du genre :

Code :
1
2
3
4
5
6
7
8
DoCmd.SetWarnings False
DoCmd.OpenQuery "Ajout_Commentaires_Dans_Résultat", acViewNormal,acEdit
DoCmd.OpenQuery "Ajout_Modules_Dans_Résultat", acViewNormal,acEdit
'
'TON TRAITEMENT S'EXECUTE ICI
'
DoCmd.OpenQuery "Suppression_Contenu_Resultat", acViewNormal,acEdit
DoCmd.SetWarnings True
La nouvelle table dans l'exemple ci-dessus se nommant "Résultat" ... et les requêtes appelées étant censées exister.

Michel
Orion34080 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2011, 16h17   #8
Nouveau Membre du Club
 
Homme Marc Bellêtre
Étudiant
Inscription : mars 2011
Messages : 59
Détails du profil
Informations personnelles :
Nom : Homme Marc Bellêtre
Âge : 20
Localisation : France, Seine Maritime (Haute Normandie)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mars 2011
Messages : 59
Points : 26
Points : 26
Oui c'est exactement ça, les données pourraient tout aussi bien être dans la même table mais elles ne le sont pas car ce ne sont pas les mêmes données. Je pense que cette solution serait trop lourde car j'ai beaucoup d'enregistrements dans ces tables.. Il n'existe pas de solution pour les afficher l'une après l'autre, par exemple? Ou avec l'attribut UNION en SQL?
Prettyletter est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2011, 16h37   #9
Membre éclairé
 
Homme Michel
Développeur informatique
Inscription : février 2008
Messages : 261
Détails du profil
Informations personnelles :
Nom : Homme Michel
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Finance

Informations forums :
Inscription : février 2008
Messages : 261
Points : 304
Points : 304
Par défaut suffisait de demander.

Je crois que c'est donc ceci que tu souhaites ?

Code :
SELECT Modules.* FROM Modules UNION SELECT Commentaire.* From Commentaire

Michel
Orion34080 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/04/2011, 09h57   #10
Nouveau Membre du Club
 
Homme Marc Bellêtre
Étudiant
Inscription : mars 2011
Messages : 59
Détails du profil
Informations personnelles :
Nom : Homme Marc Bellêtre
Âge : 20
Localisation : France, Seine Maritime (Haute Normandie)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mars 2011
Messages : 59
Points : 26
Points : 26
C'est bien ça, merci!

Maintenant, c'est un détail, mais est-il possible avec un attribut UNION de trier d'abord la première requête PUIS la deuxième?
Je voudrais que tous les modules soient d'abord affichés par ordre croissant (identifiant) et qu'ensuite soient affichés les compétences par ordre croissant. J'ai mis une clause ORDER BY sur chaque requête mais ça fait un tri général sur les deux tables.
Prettyletter est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/04/2011, 23h16   #11
Membre émérite
 
Conseil + Formation
Inscription : février 2010
Messages : 583
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Conseil + Formation

Informations forums :
Inscription : février 2010
Messages : 583
Points : 885
Points : 885
Bonjour

Ajoutes un champ ordre valorisé à 1 dans la 1ère requête et à 2 dans le seconde et fait un tri double sur ce champ + l'Id.
78chris est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h34.


 
 
 
 
Partenaires

Hébergement Web