{Access} Sous formulaire
Fermé
damien_phenix
Messages postés
15
Date d'inscription
lundi 22 décembre 2008
Statut
Membre
Dernière intervention
10 juillet 2009
-
8 juil. 2009 à 11:53
zenon Messages postés 726 Date d'inscription jeudi 30 septembre 2004 Statut Membre Dernière intervention 13 février 2010 - 10 juil. 2009 à 21:09
zenon Messages postés 726 Date d'inscription jeudi 30 septembre 2004 Statut Membre Dernière intervention 13 février 2010 - 10 juil. 2009 à 21:09
A voir également:
- {Access} Sous formulaire
- Formulaire de réclamation facebook - Guide
- Formulaire instagram compte suspendu - Guide
- Formulaire rempli - Guide
- Récupérer compte hotmail sans formulaire ✓ - Forum Hotmail / Outlook.com
- Confirmer le nouvel envoi du formulaire err_cache_miss ✓ - Forum HTML
7 réponses
zenon
Messages postés
726
Date d'inscription
jeudi 30 septembre 2004
Statut
Membre
Dernière intervention
13 février 2010
180
8 juil. 2009 à 22:54
8 juil. 2009 à 22:54
Bonsoir,
J'imagine que tes listes déroulantes te permettent de filtrer les enregistrements de ton formulaire principal.
Il faut que ton sous-formulaire et ton formulaire principal soient liés par une relation et tu dois simplement remplir les champs "père" et "fils" dans les propriétés du sous-formulaire pour que son contenu soit mis à jour.
J'imagine que tes listes déroulantes te permettent de filtrer les enregistrements de ton formulaire principal.
Il faut que ton sous-formulaire et ton formulaire principal soient liés par une relation et tu dois simplement remplir les champs "père" et "fils" dans les propriétés du sous-formulaire pour que son contenu soit mis à jour.
damien_phenix
Messages postés
15
Date d'inscription
lundi 22 décembre 2008
Statut
Membre
Dernière intervention
10 juillet 2009
9 juil. 2009 à 09:49
9 juil. 2009 à 09:49
Bonjour et merci,
J'ai mis en place la relation champ père / champs fils. Maintenant lorsque mon formulaire s'ouvre mon sous-formulaire est vide (ce qui est plutôt bien).
Par contre lorsque je choisi deux valeurs pour mes listes déroulantes aucun tri n'est éffectué, tous les champs de ma requête apparaissent.
Vu que je suis en phase de test j'ai créé 2 sous formulaires, un basé sur une table et l'autre sur une requête. Le résultat est le même sur les deux sous formulaires.
Comment puis je faire pour que les données qui s'affichent dans mon sous formulaire soient triées en fonction de mes listes déroulantes?
Merci d'avance.
Damien
J'ai mis en place la relation champ père / champs fils. Maintenant lorsque mon formulaire s'ouvre mon sous-formulaire est vide (ce qui est plutôt bien).
Par contre lorsque je choisi deux valeurs pour mes listes déroulantes aucun tri n'est éffectué, tous les champs de ma requête apparaissent.
Vu que je suis en phase de test j'ai créé 2 sous formulaires, un basé sur une table et l'autre sur une requête. Le résultat est le même sur les deux sous formulaires.
Comment puis je faire pour que les données qui s'affichent dans mon sous formulaire soient triées en fonction de mes listes déroulantes?
Merci d'avance.
Damien
zenon
Messages postés
726
Date d'inscription
jeudi 30 septembre 2004
Statut
Membre
Dernière intervention
13 février 2010
180
9 juil. 2009 à 17:19
9 juil. 2009 à 17:19
Bon, on postule que tu utilises l'assistant liste de choix.
Dans la première boite de dialogue, il te demande ce que tu veux faire; choisis la troisième option: qqch comme "rechercher un enregistrement".
en principe, le reste est automatique. Si tu vas dans les propriétés de la liste, sous l'onglet événement, sur clic et que tu cliques sur les trois points à droite, tu ouvres VisualBasic et tu vois le code qui permet le tri.
Je ne comprends pas bien pourquoi tu as deux listes déroulantes. Probablement le contenu de la seconde dépend-il de la première. pourrais-tu nous en dire plus?
Dans la première boite de dialogue, il te demande ce que tu veux faire; choisis la troisième option: qqch comme "rechercher un enregistrement".
en principe, le reste est automatique. Si tu vas dans les propriétés de la liste, sous l'onglet événement, sur clic et que tu cliques sur les trois points à droite, tu ouvres VisualBasic et tu vois le code qui permet le tri.
Je ne comprends pas bien pourquoi tu as deux listes déroulantes. Probablement le contenu de la seconde dépend-il de la première. pourrais-tu nous en dire plus?
damien_phenix
Messages postés
15
Date d'inscription
lundi 22 décembre 2008
Statut
Membre
Dernière intervention
10 juillet 2009
9 juil. 2009 à 17:45
9 juil. 2009 à 17:45
Bonsoir,
Désolé si je n'ai pas été assez explicite sur mon projet.
Dans un formulaire se trouve deux listes modifiables.
Effectivement le contenu de la seconde liste dépend de la première.
Ma première liste est basée sur une table alors que ma seconde est basée sur requête.
(Je les ai réalisé gràce à un tutoriel :
-création de la première liste
-création de la requête de liaison entre les deux listes
-création de la deuxième liste
-mise en place du critère de ma requête
-écriture du code sur l'événement après mise à jour de ma première liste.)
(Les valeurs visibles dans la deuxième liste respectent bien les conditions de la première.)
Lorsqu'un choix sur la deuxième liste a été réalisé un sous-formulaire doit s'ouvrir.
Deux champs de mon sous-formulaire doivent reprendre les deux valeurs de choix de mes listes déroulantes. Les autres champs doivent être vide et libre en écriture car l'utilisateur viendra les compléter. Mon sous-formulaire quand à lui est basée sur une autre table.
J'ai essayer de recommencer mes listes modifiable et au début l'assistant me demande simplement si je souhaite utiliser une table/requête déjà créer ou saisir les valeurs manuellement. Dans mon cas j'ai choisi à partir d'une requête/table déjà créer.
Si il faut d'autres informations que pour vous puissiez m'aider n'hésitez pas à me demander.
Merci d'avance.
Damien.
Désolé si je n'ai pas été assez explicite sur mon projet.
Dans un formulaire se trouve deux listes modifiables.
Effectivement le contenu de la seconde liste dépend de la première.
Ma première liste est basée sur une table alors que ma seconde est basée sur requête.
(Je les ai réalisé gràce à un tutoriel :
-création de la première liste
-création de la requête de liaison entre les deux listes
-création de la deuxième liste
-mise en place du critère de ma requête
-écriture du code sur l'événement après mise à jour de ma première liste.)
(Les valeurs visibles dans la deuxième liste respectent bien les conditions de la première.)
Lorsqu'un choix sur la deuxième liste a été réalisé un sous-formulaire doit s'ouvrir.
Deux champs de mon sous-formulaire doivent reprendre les deux valeurs de choix de mes listes déroulantes. Les autres champs doivent être vide et libre en écriture car l'utilisateur viendra les compléter. Mon sous-formulaire quand à lui est basée sur une autre table.
J'ai essayer de recommencer mes listes modifiable et au début l'assistant me demande simplement si je souhaite utiliser une table/requête déjà créer ou saisir les valeurs manuellement. Dans mon cas j'ai choisi à partir d'une requête/table déjà créer.
Si il faut d'autres informations que pour vous puissiez m'aider n'hésitez pas à me demander.
Merci d'avance.
Damien.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
zenon
Messages postés
726
Date d'inscription
jeudi 30 septembre 2004
Statut
Membre
Dernière intervention
13 février 2010
180
9 juil. 2009 à 21:35
9 juil. 2009 à 21:35
Si ton sous formulaire est lié, il faut que ta seconde liste pointe sur un et un seul enregistrement de ton formulaire principal. Alors ton sous formulaire affichera automatiquement les enregistrements liés.
Si tu veux créer un nouvel enregistrement, il faut faire attention à la manière dont tu construis la requête du sous formulaire: tu ne peux pas ajouter un enregistrement du côté "plusieurs de la relation" si l'enregistrement n'existe pas dans le formulaire principal.
Sinon, tu peux écrire du code VB pour définir la valeur des contrôles dans un nouvel enregistrement.
Je pense que le mieux et de le faire au départ d'un bouton de commande dans l'en-tête du sous formulaire:
DoCmd.GoToRecord,,acNewRec
NomDuContrôle = Forms!NomFormPrincipal!NomDeLaListe
Si tu veux créer un nouvel enregistrement, il faut faire attention à la manière dont tu construis la requête du sous formulaire: tu ne peux pas ajouter un enregistrement du côté "plusieurs de la relation" si l'enregistrement n'existe pas dans le formulaire principal.
Sinon, tu peux écrire du code VB pour définir la valeur des contrôles dans un nouvel enregistrement.
Je pense que le mieux et de le faire au départ d'un bouton de commande dans l'en-tête du sous formulaire:
DoCmd.GoToRecord,,acNewRec
NomDuContrôle = Forms!NomFormPrincipal!NomDeLaListe
damien_phenix
Messages postés
15
Date d'inscription
lundi 22 décembre 2008
Statut
Membre
Dernière intervention
10 juillet 2009
10 juil. 2009 à 11:46
10 juil. 2009 à 11:46
Bonjour,
J'ai sais le code (en l'adaptant directement dans mon formulaire) :
DoCmd.GoToRecord,,acNewRec
cmb_Machine = Forms!F_Depa_1!cmbMachine
J'ai juste modifié les noms.
Je l'ai saisi tel quel à la fin de mon code exsitant :
Option Compare Database
Private Sub cmb_Societe_AfterUpdate()
Me![cmb_Societe].Requery
End Sub
Private Sub Commande4_Click()
On Error GoTo Err_Commande4_Click
Dim stDocName As String
stDocName = "Actualisation_Depa_1"
DoCmd.RunMacro stDocName
Exit_Commande4_Click:
Exit Sub
Err_Commande4_Click:
MsgBox Err.Description
Resume Exit_Commande4_Click
End Sub
DoCmd.GoToRecord , , acNewRec
cmb_Machine = Forms!F_Depa_1!cmbMachine
Par contre maintenant dès j'ai une boite de dialogue qui me demande de saisir une valeur pour cmb_Machine.
Pour poursuivre il me suffit de cliquer sur ok sans saisir de valeur. Cette boite de dialogue revient après effectuer un choix dans la première liste et après le choix de la seconde liste.
Merci.
J'ai sais le code (en l'adaptant directement dans mon formulaire) :
DoCmd.GoToRecord,,acNewRec
cmb_Machine = Forms!F_Depa_1!cmbMachine
J'ai juste modifié les noms.
Je l'ai saisi tel quel à la fin de mon code exsitant :
Option Compare Database
Private Sub cmb_Societe_AfterUpdate()
Me![cmb_Societe].Requery
End Sub
Private Sub Commande4_Click()
On Error GoTo Err_Commande4_Click
Dim stDocName As String
stDocName = "Actualisation_Depa_1"
DoCmd.RunMacro stDocName
Exit_Commande4_Click:
Exit Sub
Err_Commande4_Click:
MsgBox Err.Description
Resume Exit_Commande4_Click
End Sub
DoCmd.GoToRecord , , acNewRec
cmb_Machine = Forms!F_Depa_1!cmbMachine
Par contre maintenant dès j'ai une boite de dialogue qui me demande de saisir une valeur pour cmb_Machine.
Pour poursuivre il me suffit de cliquer sur ok sans saisir de valeur. Cette boite de dialogue revient après effectuer un choix dans la première liste et après le choix de la seconde liste.
Merci.
zenon
Messages postés
726
Date d'inscription
jeudi 30 septembre 2004
Statut
Membre
Dernière intervention
13 février 2010
180
10 juil. 2009 à 21:09
10 juil. 2009 à 21:09
Attends, je ne comprends pas:
Tu as 2 procédures Sub/End Sub
La première met à jour ta seconde liste (cmb_Societe_AfterUpdate() )
La deuxième exécute une macro (je ne sais pas à quoi elle sert)
Mais le bout de code que tu as ajouté, à quoi est-il attaché?
Il faut qu'il soit exécuté par la commande que tu souhaites voir filtrer le sous-formulaire p.ex après mise à jour de la seconde liste ou par un bouton de commande.
Tu as 2 procédures Sub/End Sub
La première met à jour ta seconde liste (cmb_Societe_AfterUpdate() )
La deuxième exécute une macro (je ne sais pas à quoi elle sert)
Mais le bout de code que tu as ajouté, à quoi est-il attaché?
Il faut qu'il soit exécuté par la commande que tu souhaites voir filtrer le sous-formulaire p.ex après mise à jour de la seconde liste ou par un bouton de commande.