Access : formulaire pour entrer données

Résolu/Fermé
sophie - 27 déc. 2011 à 22:54
 sophie - 30 déc. 2011 à 22:09
Bonjour à tous,

Je suis actuellement en train de créer une Base de données sous Access 2010 pour stocker des données relatives à des étudiants. Il s'agit de ma 1ère base et je rencontre des problèmes que je n'arrive pas à résoudre. Si vous pouviez me donner votre avis, j'en serai ravie.

Voici le contexte :
Pour éviter la redondance d'information (du fait de la dépendance fonctionnelle entre les champs code postal et ville ) j'ai séparé mes champs en 2 tables :
- Table Etudiant (appelée Etu) contenant :
P# : le numéro de la personne (P1, P2,...)
E# : son numéro étudiant (CLE Primaire)
ENom : son nom
CP : son code postal
Dipl : le dernier diplôme obtenu
- Table répertoriant les couples CP-Ville (appelée CV)
CP : code postal (CLE Primaire)
Ville : ville associée au code postal

Les tables sont liées au niveau du champ « CP » par une relation « un à plusieurs », et le côté « un » de la relation est pour la table Etu.

Je souhaite que la base puisse être utilisée par un utilisateur quelconque, et donc que l'enregistrement des données se fasse grâce à un formulaire. J'ai créé un formulaire avec tous les champs précédents sauf le champ « CP » de la table « CV ».

L'enregistrement des données pour un étudiant est possible que si son code postal existe déjà dans la table CV. Pour cela je m'y prends ainsi :
1) Entrer des données souhaitées pour un étudiant dans le formulaire
2) Avant de cliquer sur le triangle noir pour passer à un autre enregistrement, on clique sur un bouton (que l'on a créé dans le formulaire) qui vérifie si le couple CP-Ville existe déjà dans la table CV, et si ce n'est pas le cas, le couple est ajouté (avec une requête d'ajout) dans la table CV.
3) On peut ainsi enregistrer les données et passer à l'enregistrement suivant.

C'est dans la mise en pratique du 2) que j'échoue, est-ce réellement possible d'utiliser une fonction recherche ou une requête qui vérifie, avant toute étape d'enregistrement, si ce qui a été entré dans la case CP du formulaire existe déjà ?

Ce que je n'arrive pas à faire c'est qu'il s'agit d'un enregistrement courant (porte-il un nom générique pour l'utiliser comme argument d'une fonction par exemple ?) ; et non pas d'une valeur connue que l'on peut chercher (si j'ai bien compris) à l'aide de la fonction RechDom().

J'espère avoir expliqué clairement les choses (faites moi signe pour toute précision supplémentaire).
Je vous remercie par avance de votre aide, Sophie)

5 réponses

petite précision :

je ne souhaite pas entrer toutes les villes de France dans ma base, car il s'agit de personnes habitant principalement au même endroit et il peut y avoir quelques adresses étrangères.

de plus le fait de regarder ce qui a été inséré dans le formulaire me sera utile pour une autre table "Tel" de ma base contenant le numéro étudiant (E#) et le téléphone (Tel) : les 2 champs constituant la clé primaire, vu qu'une personne peut avoir plusieurs numéros de téléphones et que les téléphones peuvent être partagés.

"Tel" est reliée aussi par une relation "un à plusieurs" avec la table "Etu", le "un" du côté de "Etu". Il faut d'après le même principe que la table "CV", pour enregistrer le téléphone d'un étudiant que celui-ci ait été mis dans la table "Tel".
1
castours
Messages postés
2955
Date d'inscription
lundi 18 septembre 2006
Statut
Membre
Dernière intervention
31 août 2019
216
29 déc. 2011 à 08:26
Bonjour
Je sais que tu n'as besoin de toutes les villes de France mais c'est a toi de trier les villes de ta region ou du departement par une requete de selection.
Je te joins un fichier qui gere les adresses. Tu peux selectionner les gens ou avoir les personnes par villes. Tu npeux t'inspirer de ce qui a été réaliser. Regarde les relations
https://www.cjoint.com/?ALDirZjLjka
0
bonjour castours,
merci beaucoup pour ton aide !
Il faut donc préremplir les couples CP-Ville qui m'intéressent dans CV, et seulement ensuite remplir les données sur les étudiants via mon formulaire.
Le fait de tout faire en même temps via le formulaire (en traitant le cas de l'ajout/non dans la table CV enregistrement par enregistrement) n'est donc pas réalisable si je comprends bien ?
0
castours
Messages postés
2955
Date d'inscription
lundi 18 septembre 2006
Statut
Membre
Dernière intervention
31 août 2019
216
29 déc. 2011 à 21:26
Logiquement oui vu que ta relation entre les 2 tablesest de un a plusieurs. Le 1 dans la table CV.
Mais on doit pouvoir ajouter directement un nouveau enregistrement dans la table cv a partir de ton formulaire etudiants. Il me semble qu'il faut regarder dans les propriétes de la liste deroulante cv que tu utilise dans ton formulaire.
Dans ta table cv, il ne doit y avoir qu'une seule ville et code postal du meme nom.
0
castours
Messages postés
2955
Date d'inscription
lundi 18 septembre 2006
Statut
Membre
Dernière intervention
31 août 2019
216
29 déc. 2011 à 23:04
Si cela t'intresse j'ai trouvé le code VBA qu'il faut inserer dans l''evement NotList.
Il Te faudra l'adapter avec les noms de champs de la liste.
0
oui j'aimerai bien voir le code VBA, pour comprendre comment c'est fait.
encore merci.
0
castours
Messages postés
2955
Date d'inscription
lundi 18 septembre 2006
Statut
Membre
Dernière intervention
31 août 2019
216
28 déc. 2011 à 21:43
Bonjour
Le code postal ne peut pas etre un clé primaire pour la raison suivante: certains code postaux existe pour plusieurs villes, surtout en campagne.
Il vaut mieux partir sur la ville comme clé primaire. Le coté 1 dans la relation table cv et la table Etu doit etre dans la cv.
La raison est que dans le cp d'une ville, il peut y avoir plusieur etudiants habitant cette ville.
Sur internet tu peux trouver toute les villes avec leur code postal.
0
castours
Messages postés
2955
Date d'inscription
lundi 18 septembre 2006
Statut
Membre
Dernière intervention
31 août 2019
216
Modifié par castours le 28/12/2011 à 22:16
voici un lien d'une table contenant toute les villes de france avec leurs codes postaux. A toi de faire une requete de selection duou des departemnt de ta region. Le lien est valabe 4 jours
https://www.cjoint.com/?3LCwkarT3VP
0
merci beaucoup castours ! je n'avais pas pensé à ce point.

au sujet du formulaire, ce que je souhaite faire est-ce que c'est faisable simplement (utilisation de requêtes ou de SQL) ??
c'est à dire
a) étudier dans une case du formulaire (par exemple pour le champ Ville) ce qui a été écrit,
b) puis enregistrer le Ville-CP (s'il est nouveau) dans la table CV
c) et seulement après enregistrer les données dans les champs de ma table Etu (ce qui sera en accord avec la relation "un à plusieurs" vu que le couple Ville-CP entrée pour la personne existe bien dans la table CV) ?

Vu que je débute je n'arrive pas à voir si je me complique les choses, ou si je souhaite faire qqch de trop compliqué vu que je suis pas réellement censée utiliser VBA (que je ne connais pas).

J'ai peur de ne pas prendre le problème dans le bon sens...
Je vous remercie par avance pour votre aide.
0

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

Posez votre question
castours
Messages postés
2955
Date d'inscription
lundi 18 septembre 2006
Statut
Membre
Dernière intervention
31 août 2019
216
30 déc. 2011 à 18:47
Bonjour
Je te joins par ce lien le code vba ajout dans une liste.
Ce code n'est pas de moi mais trouver sur le site de self access.
Tu trouveras des explications pour installer la procedure.
Je te souhaite mes meilleurs pour 2012

https://www.cjoint.com/?ALEsQvkn1yx
0
merci énormément pour le temps que tu as pris pour m'aider.
A toi aussi, Meilleurs voeux pour 2012 !
0