A voir également:
- Sous formulaire access
- Formulaire de réclamation facebook - Guide
- Formulaire instagram compte suspendu - Guide
- Formulaire rempli - Guide
- Confirmer le nouvel envoi du formulaire err_cache_miss ✓ - Forum HTML
- Récupérer compte hotmail sans formulaire ✓ - Forum Hotmail / Outlook.com
7 réponses
borisdu
Messages postés
1824
Date d'inscription
samedi 24 décembre 2005
Statut
Membre
Dernière intervention
27 octobre 2014
228
5 janv. 2012 à 14:51
5 janv. 2012 à 14:51
Lu'
C'est pas très claire ton histoire. Tu peut détailler exactement tes tables, les liaisons et les formulaires?
C'est pas très claire ton histoire. Tu peut détailler exactement tes tables, les liaisons et les formulaires?
je vais essayer de rendre ça plus clair.
la première table s'appelle "candidats" elle contient les champs "nocandidat" en numéroauto et les champs "nomcandidat", "prenom", "adresse", "cp", "ville", "tel", "courriel".
La deuxième table s'appelle notes et comprend les champs "nonote" en numéroAuto et les champs "nocandidat", "CultG", "Logique", "Français".
Les deux tables sont reliées par le champ nocandidat.
Pour chaque candidat enregistré, j'ai besoin qu'un enregistrement lui correspondant soit automatiquement généré dans la table des notes avant même qu'il ai passé des tests.
J'ai un formulaire dédié à la saisie de tout nouveau candidat qui s'appelle "saisie_candidats".
Et la solution que j'utilise, c'est un sous formulaire qui s'appelle "creation_note" (dans le formulaire saisie_candidats) toujours rataché par "nocandidat" et qui comprend uniquement les champs "nonote", "nocandidat" et "logique". Comme je veux que l'opération soit transparente pour l'utilisateur ce sous formulaire a une taille de 0 par 0.
et j'ai entré le code vba suivant sur sortie du champ nomcandidat dans le formulaire saisie_candidats:
Private Sub nomcandidat_Exit(Cancel As Integer)
Forms![saisie_candidats]![note_creation].Form![logique] = 1
Forms![saisie_candidats]![note_creation].Form![logique] = ""
end sub
une fois ce code exécuté, j'ai bien un enregistrement qui existe pour le candidat en cours de saisie dans ma table note et le curseur se situe sur le champ "logique" du sous formulaire.
Et pour éviter que l'utilisateur ne rentre du texte (puisque normalement il continue avec la saisie du prénom) dans le champ "logique" il faudrait que je réussisse à remettre le focus sur le formulaire "saisie_candidats" et sur son champ "prenom"
j'ai essayé de compléter le code comme ça :
Private Sub nomcandidat_Exit(Cancel As Integer)
Forms![saisie_candidats]![note_creation].Form![logique] = 1
Forms![saisie_candidats]![note_creation].Form![logique] = ""
me.prenom.setfocus
end sub
et comme ça :
Private Sub nomcandidat_Exit(Cancel As Integer)
Forms![saisie_candidats]![note_creation].Form![logique] = 1
Forms![saisie_candidats]![note_creation].Form![logique] = ""
me.setfocus
me.prenom.setfocus
end sub
j'ai aussi tenté le docmd.gotocontrol, et d'affecter de la même manière que pour le champ logique une valeur à prenom, sans aucun succès. Et là je bloque je n'ai pas d'autre idée de ce que je pourrais faire.
espérant que ce sera plus clair merci d'avance !
la première table s'appelle "candidats" elle contient les champs "nocandidat" en numéroauto et les champs "nomcandidat", "prenom", "adresse", "cp", "ville", "tel", "courriel".
La deuxième table s'appelle notes et comprend les champs "nonote" en numéroAuto et les champs "nocandidat", "CultG", "Logique", "Français".
Les deux tables sont reliées par le champ nocandidat.
Pour chaque candidat enregistré, j'ai besoin qu'un enregistrement lui correspondant soit automatiquement généré dans la table des notes avant même qu'il ai passé des tests.
J'ai un formulaire dédié à la saisie de tout nouveau candidat qui s'appelle "saisie_candidats".
Et la solution que j'utilise, c'est un sous formulaire qui s'appelle "creation_note" (dans le formulaire saisie_candidats) toujours rataché par "nocandidat" et qui comprend uniquement les champs "nonote", "nocandidat" et "logique". Comme je veux que l'opération soit transparente pour l'utilisateur ce sous formulaire a une taille de 0 par 0.
et j'ai entré le code vba suivant sur sortie du champ nomcandidat dans le formulaire saisie_candidats:
Private Sub nomcandidat_Exit(Cancel As Integer)
Forms![saisie_candidats]![note_creation].Form![logique] = 1
Forms![saisie_candidats]![note_creation].Form![logique] = ""
end sub
une fois ce code exécuté, j'ai bien un enregistrement qui existe pour le candidat en cours de saisie dans ma table note et le curseur se situe sur le champ "logique" du sous formulaire.
Et pour éviter que l'utilisateur ne rentre du texte (puisque normalement il continue avec la saisie du prénom) dans le champ "logique" il faudrait que je réussisse à remettre le focus sur le formulaire "saisie_candidats" et sur son champ "prenom"
j'ai essayé de compléter le code comme ça :
Private Sub nomcandidat_Exit(Cancel As Integer)
Forms![saisie_candidats]![note_creation].Form![logique] = 1
Forms![saisie_candidats]![note_creation].Form![logique] = ""
me.prenom.setfocus
end sub
et comme ça :
Private Sub nomcandidat_Exit(Cancel As Integer)
Forms![saisie_candidats]![note_creation].Form![logique] = 1
Forms![saisie_candidats]![note_creation].Form![logique] = ""
me.setfocus
me.prenom.setfocus
end sub
j'ai aussi tenté le docmd.gotocontrol, et d'affecter de la même manière que pour le champ logique une valeur à prenom, sans aucun succès. Et là je bloque je n'ai pas d'autre idée de ce que je pourrais faire.
espérant que ce sera plus clair merci d'avance !
f894009
Messages postés
17205
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
19 octobre 2024
1 709
7 janv. 2012 à 10:38
7 janv. 2012 à 10:38
Bonjour,
Comment atteindre un contrôle d'un autre formulaire ? (un sous-formulaire est un formulaire).
Forms![NomFormulaire]![MaZoneDeText] et ensuite .SetFocus pour vous
Ce lien vous emmene sur developpez.com ou vous trouverez beaucoup de renseignements
https://access.developpez.com/faq/?page=Ctrl#ctlsForm
Bonne suite
Comment atteindre un contrôle d'un autre formulaire ? (un sous-formulaire est un formulaire).
Forms![NomFormulaire]![MaZoneDeText] et ensuite .SetFocus pour vous
Ce lien vous emmene sur developpez.com ou vous trouverez beaucoup de renseignements
https://access.developpez.com/faq/?page=Ctrl#ctlsForm
Bonne suite
castours
Messages postés
2955
Date d'inscription
lundi 18 septembre 2006
Statut
Membre
Dernière intervention
31 août 2019
217
7 janv. 2012 à 10:44
7 janv. 2012 à 10:44
Bonjour
Le fonctionnement du formulaire et du sous form sont liés par la relation un a plusieurs.
Lors d'un enregistrement du formulaire, tu peux en faire plusieurs dans le sous formulaire.
Le champ nocandidat , dans la table canditats, il doit etre N°Auto ,clé primaire, sansDoublon;Pour la table Notes, il doit etre numerique avec doublon.
La relation un à plusieurs peut s'établir entre les 2 tables.
Logiquement tu peux retrouver le nocandidat dans le sous formulaire si le champ est présent.
Le fonctionnement du formulaire et du sous form sont liés par la relation un a plusieurs.
Lors d'un enregistrement du formulaire, tu peux en faire plusieurs dans le sous formulaire.
Le champ nocandidat , dans la table canditats, il doit etre N°Auto ,clé primaire, sansDoublon;Pour la table Notes, il doit etre numerique avec doublon.
La relation un à plusieurs peut s'établir entre les 2 tables.
Logiquement tu peux retrouver le nocandidat dans le sous formulaire si le champ est présent.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
merci pour vos réponses :
@ f894009 : j'ai tenté mais le curseur reste désespérément sur le champ [logique] du sous formulaire creation_note
@castours : effectivement le champ nocandidat étant présent dans le champ du sous formulaire dès que je renseigne quelque chose dans l'un des champs du sous formulaire j'ai un enregistrement qui se créé avec le nocandidat correspondant, mais pas si je ne modifie rien dans le sous formulaire.
il doit y avoir quelque chose qui empeche le focus de revenir sur le formulaire mais je ne comprend pas ce qui se passe exactement.
j'ai choisi de passer par une autre solution qui consiste à executer une requete ajout à la fermeture du formulaire saisie_candidats
j'ajoute le champ nocandidat de la table candidats au champ nocandidat de la table notes pour tous les candidats dont la date de création est aujourd'hui
J'ai réalisé qu'avec la solution précédente, il y avait plein d'enregistrements vides qui s'étaient créés (avec juste le champ nonote de renseigné) et que j'avais également plein de doublons.
Merci en tout cas pour vos réponses :)
@ f894009 : j'ai tenté mais le curseur reste désespérément sur le champ [logique] du sous formulaire creation_note
@castours : effectivement le champ nocandidat étant présent dans le champ du sous formulaire dès que je renseigne quelque chose dans l'un des champs du sous formulaire j'ai un enregistrement qui se créé avec le nocandidat correspondant, mais pas si je ne modifie rien dans le sous formulaire.
il doit y avoir quelque chose qui empeche le focus de revenir sur le formulaire mais je ne comprend pas ce qui se passe exactement.
j'ai choisi de passer par une autre solution qui consiste à executer une requete ajout à la fermeture du formulaire saisie_candidats
j'ajoute le champ nocandidat de la table candidats au champ nocandidat de la table notes pour tous les candidats dont la date de création est aujourd'hui
J'ai réalisé qu'avec la solution précédente, il y avait plein d'enregistrements vides qui s'étaient créés (avec juste le champ nonote de renseigné) et que j'avais également plein de doublons.
Merci en tout cas pour vos réponses :)
castours
Messages postés
2955
Date d'inscription
lundi 18 septembre 2006
Statut
Membre
Dernière intervention
31 août 2019
217
Modifié par castours le 18/01/2012 à 17:31
Modifié par castours le 18/01/2012 à 17:31
bonjour
Logiquement si tu as N°Candidat clé primaire en N°Auto dans le formulaire, puis N°Candidat en numerique et N°Note en N°Auto dans le sous formule , que la relation soit faite, tu devrais pouvoir modifier l'enregistrement du sous formulair.
Exemple 1 premier Candidat
Formulaire Candidat
N°Candidat Nom Prenom
1 Dupont Georges
S/F_Note
N°Candidat N°Note CultG Logique Français.
1 1 12 13 15
1 2 14 12 12
1 5 13 10 14
Exemple 2 deuxieme Candidat
Formulaire Candidat
N°Candidat Nom Prenom
2 Laforêt Marc
S/F_Note
N°Candidat N°Note CultG Logique Français.
2 3 11 13 15
2 4 15 14 13
Voila ce que tu devrais pouvoir faire.
On remarque que le N°Candidat a 2 enregistrements dans le formulaire ,3 enregistremnt pour le Candidat N°1, 2 pour le candidat N°2
Dans le sous formulaire tu peux modifier les notes ou d'ajouter des enregistrements.
Est ce bien cela que tu veux obtenir?
Il te manque, soi un champ date ou mois dans la table note.
Si cela ne va pas, mets ta base sur le forum avec cjoint.com
J'ai fait rapidement un exemple dans ce lien
https://www.cjoint.com/?BAsrCu8WMBh
Logiquement si tu as N°Candidat clé primaire en N°Auto dans le formulaire, puis N°Candidat en numerique et N°Note en N°Auto dans le sous formule , que la relation soit faite, tu devrais pouvoir modifier l'enregistrement du sous formulair.
Exemple 1 premier Candidat
Formulaire Candidat
N°Candidat Nom Prenom
1 Dupont Georges
S/F_Note
N°Candidat N°Note CultG Logique Français.
1 1 12 13 15
1 2 14 12 12
1 5 13 10 14
Exemple 2 deuxieme Candidat
Formulaire Candidat
N°Candidat Nom Prenom
2 Laforêt Marc
S/F_Note
N°Candidat N°Note CultG Logique Français.
2 3 11 13 15
2 4 15 14 13
Voila ce que tu devrais pouvoir faire.
On remarque que le N°Candidat a 2 enregistrements dans le formulaire ,3 enregistremnt pour le Candidat N°1, 2 pour le candidat N°2
Dans le sous formulaire tu peux modifier les notes ou d'ajouter des enregistrements.
Est ce bien cela que tu veux obtenir?
Il te manque, soi un champ date ou mois dans la table note.
Si cela ne va pas, mets ta base sur le forum avec cjoint.com
J'ai fait rapidement un exemple dans ce lien
https://www.cjoint.com/?BAsrCu8WMBh
en effet je peux tout à fait depuis mon sous formulaire apporter des modifications. Mais ce que je voulais c'était trouver un moyen de créer automatiquement un enregistrement dans la table note pour chaque nouveau candidat sans que l'utilisateur ait à faire quoi que ce soit de particulier. J'ai trouvé ma solution avec la requête ajout.