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 15/06/2011, 14h18   #1
Membre à l'essai
 
Femme Mélanie
Inscription : janvier 2007
Messages : 80
Détails du profil
Informations personnelles :
Nom : Femme Mélanie
Localisation : France

Informations forums :
Inscription : janvier 2007
Messages : 80
Points : 24
Points : 24
Par défaut Affichage d'un champs multi-valué dans un formulaire

Bonjour à tous,

Grâce au très bon tutoriel de Christophe WARIN sur les champs multi-valués, j'ai pu utilisé cette nouvelle fonctionnalité de ACCESS 2007 dans mon projet.
Néanmoins, je rencontre un petit problème d'affichage dans un sous-formulaire.

Je m'explique :
- J'ai donc créé une table de référence (appelons la tbl_eleve pour reprendre l'exemple de Christophe) et une table tbl_classe, où mon champs Eleves est multi-valué
- J'ai ensuite créé un formulaire basé sur la tbl_classe, qui me permet de créer une nouvelle classe en faisant une sélection multiple des élèves parmi ceux enregistrés dans la tbl_eleve.

Jusque là, tout va bien !

A présent, je cherche à créer un formulaire de visualisation de la composition des classes. J'ai donc créé un champs de recherche, dans laquelle j'indique la classe que je cherche à voir, et un sous-formulaire en mode feuille de données qui me permet de voir l'ensemble des élèves présents dans cette classe.

Et là, j'ai 2 problèmes:
- Le premier est que dans le sous-formulaire, dans le champs correspondant aux élèves, il y a une erreur (#Nom ?)
- Le deuxième est que je voudrais modifier l'affichage de ce champs, pour faire apparaitre seulement les élèves sélectionnés dans la tbl_classe sur une seule ligne et dans un seul champs, en les séparant par des virgules (par exemple : DURAND, DUPONT)

Je sèche complètement, donc si quelqu'un a la gentillesse de m'aider...
Voilà la base exemple (basée sur le tutoriel de Christophe WARIN, toujours) en pièce jointe, afin que cela soit un peu plus clair.

Je vous remercie par avance.
MelaAllIn
Fichiers attachés
Type de fichier : zip Base de données1.zip (32,6 Ko, 4 affichages)
MelaAllIn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2011, 20h05   #2
Expert Confirmé Sénior
 
Avatar de f-leb
 
Homme Fabien
Enseignant
Inscription : janvier 2009
Messages : 2 415
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 41
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : janvier 2009
Messages : 2 415
Points : 4 446
Points : 4 446
bonsoir,

Citation:
Le premier est que dans le sous-formulaire, dans le champs correspondant aux élèves, il y a une erreur (#Nom ?)
La source du contrôle Eleve.value du sous-formulaire n'est pas bonne.

Ouvre le sous-formulaire, supprime le contrôle Eleve.value, clique sur le bouton "ajouter des champs existants" et fait glisser tbl_classe.eleve.value dans le sous-formulaire.

pas le temps pour le deuxième point j'essaierais de revenir
f-leb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2011, 22h50   #3
Expert Confirmé Sénior
 
Avatar de f-leb
 
Homme Fabien
Enseignant
Inscription : janvier 2009
Messages : 2 415
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 41
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : janvier 2009
Messages : 2 415
Points : 4 446
Points : 4 446
Citation:
Envoyé par MelaAllIn
Le deuxième est que je voudrais modifier l'affichage de ce champs, pour faire apparaitre seulement les élèves sélectionnés dans la tbl_classe sur une seule ligne et dans un seul champs, en les séparant par des virgules (par exemple : DURAND, DUPONT)
là il faut une fonction VBA pour concaténer les noms, à copier/coller dans un module:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Public Function concat(idclasse As Long, annee As Integer) As String
Dim strSQL As String
Dim db As Database
Dim rst As DAO.Recordset
 
          strSQL = "SELECT tbl_eleve.Nom "
 strSQL = strSQL & "FROM tbl_classe INNER JOIN tbl_eleve "
 strSQL = strSQL & "ON tbl_classe.Eleves.Value = tbl_eleve.ID "
 strSQL = strSQL & "WHERE tbl_classe.Annee=" & annee & " "
 strSQL = strSQL & "AND tbl_classe.IDclasse=" & idclasse & " "
 strSQL = strSQL & "ORDER BY tbl_eleve.Nom" & ";"
 
 
Set db = CurrentDb
Set rst = db.OpenRecordset(strSQL, dbReadOnly)
 
With rst
.MoveFirst
Do While Not .EOF
        concat = concat & .Fields(0) & ", "
        .MoveNext
Loop
End With
 
concat = Left(concat, Len(concat) - 2)
Set rst = Nothing
End Function
Dans les propriétés du formulaire recherche_classe, changer la source:
Code sql :
SELECT tbl_classe.IDClasse, tbl_classe.NomClasse, tbl_classe.Annee, concat([IDClasse],[Annee]) AS NomEleves FROM tbl_classe;

puis cliquer sur le bouton "ajouter des champs existants" dans le ruban et faire glisser "NomEleves" dans le détail du formulaire.

ça roule ?
f-leb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/06/2011, 08h57   #4
Membre à l'essai
 
Femme Mélanie
Inscription : janvier 2007
Messages : 80
Détails du profil
Informations personnelles :
Nom : Femme Mélanie
Localisation : France

Informations forums :
Inscription : janvier 2007
Messages : 80
Points : 24
Points : 24
Merci beaucoup f-leb pour tes réponses et le temps passé.
Je vais regarder tout ça dans la journée et je reviens vers le forum pour signaler si c'est OK ou non.
MelaAllIn
MelaAllIn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/06/2011, 18h08   #5
Membre à l'essai
 
Femme Mélanie
Inscription : janvier 2007
Messages : 80
Détails du profil
Informations personnelles :
Nom : Femme Mélanie
Localisation : France

Informations forums :
Inscription : janvier 2007
Messages : 80
Points : 24
Points : 24
Re-bonjour le forum,

J'ai donc utilisé les conseils données par f-leb, et je suis arrivé à mes fins!
Quelques petites modifications néanmoins :
- Le code sql donné n'est pas à utiliser comme source du formulaire recherche_classe, mais bien du sous-formulaire "tbl_classe sous-formulaire"
- Une fois que l'on a fait cela et ajouté le module donnée par f-leb, la source du contrôle Eleve.value du sous-formulaire n'est du coup plus bonne, et il faut la remplacer par NomEleves

Et là, ça fonctionne nickel !

Pour ceux que ça intéresse, je joints la base exemple modifiée.
Encore un grand merci à f-leb !

MelaAllIn
Fichiers attachés
Type de fichier : zip Base de données2.zip (44,2 Ko, 5 affichages)
MelaAllIn 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 21h13.


 
 
 
 
Partenaires

Hébergement Web