[Access] Donnée d'un champ qui dépend d'un autre [Résolu/Fermé]

Signaler
Messages postés
415
Date d'inscription
samedi 26 août 2006
Statut
Membre
Dernière intervention
4 janvier 2020
-
Messages postés
415
Date d'inscription
samedi 26 août 2006
Statut
Membre
Dernière intervention
4 janvier 2020
-
Bonjour

Je débute dans Access 2010 et j'aurais une petite question : je remplis une base de données d'adhérents et je souhaiterais qu'access me détermine un champ à partir d'un autre champ.
Ainsi, je demande la date de naissance d'une personne et j'aimerais qu'une fois renseigné ce champ, je puisse avoir un autre champ "Categorie" qui prenne automatiquement la valeur suivant la date de naissance.
Exemple : si je rentre une date dont l'année de naissance est inférieure à 1993, il faut que Senior soit indiqué dans le champ Catégorie correspondant. ; si je rentre comme année de naissance 2000n il faudrait qu'il m'indique Minimes.
Merci de votre aide

17 réponses

Messages postés
9745
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
24 juillet 2020
1 069
Bonjour,
Concernant la catégorie je vous avais suggéré ceci :
Petite réflexion, la catégorie n'est pas une valeur fixe car elle dépend de la date de naissance et de l'année en cours, donc il ne faut pas l'enregistré dans la table mais par contre on la déterminera selon les besoins dans le formulaire ou l'état.

Libre à vous de l'ignorer et dans ce cas vous créer une requête mise à jour que vous exécuterai à chaque début de saison.

Pour l'attribution de la catégorie vous pouvez prendre comme base la saison à la place de l'année en cours.


1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60686 internautes nous ont dit merci ce mois-ci

Messages postés
9745
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
24 juillet 2020
1 069
Bonjour,
Avec une procédure événementielle [Avant MAJ] sur le champ [date de naissance] (voir sous propriétés du champ..) et dans la macro récupérer l'année et attribue la catégorie au champ [Catégorie].

Messages postés
415
Date d'inscription
samedi 26 août 2006
Statut
Membre
Dernière intervention
4 janvier 2020
19
Bonsoir

Merci de votre aide mais à vrai dire je n'ai pas vraiment saisi ce que je devais faire :-(
Messages postés
9745
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
24 juillet 2020
1 069
Bonjour,
Le principe, vous avez un formulaire (basé sur la table T) pour saisir les données. Ouvrir le formulaire en mode création et clic droit sur champ [date de naissance] et dans la liste clic sur [Propiétés]. Dans la fenêtre sélectionner onglet [Evénement] et clic sur la ligne [Avant MAJ] et tout à droite clic sur le petit triangle et dans la liste clic sur [Procédure événementielle] et ensuite clic sur le carrées (3 petits points et vous aurez la procédure [Private Sub date de naissance _BeforeUpdate(Cancel As Integer)...... End Sub].
C'est dans cette procédure qu'il faut écrire le code qui vous permet de déterminer la catégorie et de l'inscrire dans le champ [Catégorie].


Salutations.
Le Pingou
Messages postés
415
Date d'inscription
samedi 26 août 2006
Statut
Membre
Dernière intervention
4 janvier 2020
19
J'ai essayé de créer cette procédure (en cherchant sur internet) mais elle ne me donne pas le résultat attendu :

Option Compare Database

Private Sub Datenaissance_BeforeUpdate(Cancel As Integer)
Select Case Year(Date_naissance)
Case Is >= 2007
Categorie = "Baby volley"
Case Is = 2005, 2006
Categorie = "Pupille"
Case Is = 2003, 2004
Categorie = "Poussin"
Case Is = 2001, 2002
Categorie = "Benjamin"
Case Is = 1999, 2000
Categorie = "Minime"
Case Is = 1997, 1998
Categorie = "Cadet"
Case Is = 1995, 1996
Categorie = "Junior"
Case Is = 1993, 1994
Categorie = "Espoir"
Case Is < 1993
Categorie = "Sénior"
End Select
End Sub
Messages postés
9745
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
24 juillet 2020
1 069
Bonjour,
J'ai testé votre code et cela fonctionne correctement.
Où est le problème ?

Messages postés
415
Date d'inscription
samedi 26 août 2006
Statut
Membre
Dernière intervention
4 janvier 2020
19
Je suis allé dans le formulaire et quand je rentre une date de naissance, il ne me met pas la catégorie dans ma table.
Messages postés
9745
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
24 juillet 2020
1 069
Bonjour,
Le champ [Categorie] du formulaire doit avoir comme source de donnée le champ correspondant de la table

Messages postés
9745
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
24 juillet 2020
1 069
Bonjour,
Petite réflexion, la catégorie n'est pas une valeur fixe car elle dépend de la date de naissance et de l'année en cours, donc il ne faut pas l'enregistré dans la table mais par contre on la déterminera selon les besoins dans le formulaire ou l'état.

Messages postés
415
Date d'inscription
samedi 26 août 2006
Statut
Membre
Dernière intervention
4 janvier 2020
19
J'ai beau cherché, je n'arrive pas à trouver comment : une fois rempli le code dans les propriétés de date_naissance (en suivant la méthode que vous m'avez indiqué), je dois sélectionner quoi dans les propriétés de catégorie ?
Messages postés
9745
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
24 juillet 2020
1 069
Bonjour,
Je suppose que vous avez lu le message avec ma réflexion.... !
Dans le formulaire vous avez le champ [Categorie], alors un clic droit et clic sur [Propriétés], dans l'onglet [Données] sous [Source contrôle] il faut avoir le nom du champ de votre table.

Messages postés
415
Date d'inscription
samedi 26 août 2006
Statut
Membre
Dernière intervention
4 janvier 2020
19
Dans [Source contrôle], j'ai Categorie
Je pensais qu'il correspondait à la même variable que celle issue de la procédure
Messages postés
9745
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
24 juillet 2020
1 069
Bonjour,
Bon, mais est-ce que cela fonctionne maintenant....?
Question: l'année prochaine la moitié de vos adhérents seront dans la mauvaise catégorie car elle dépend de l'âge..... y avez-vous pensé.....?
Messages postés
415
Date d'inscription
samedi 26 août 2006
Statut
Membre
Dernière intervention
4 janvier 2020
19
Non, une fois la date de naissance saisie, je n'ai rien qui s'inscrit dans Categorie.

Pour l'année prochaine, les catégories d'âge dépendant effectivement de l'année de naissance, je changerais juste les années dans la procédure pour mettre à jour la bonne catégorie.
Messages postés
9745
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
24 juillet 2020
1 069
Bonjour,
Pour l'année prochaine ce n'est pas en changent la procédure que les données enregistrés seront mise à jour.... vous en ferez l'expérience...!
En plus ce n'est pas une bonne solution de devoir changer chaque année dans la procédure, il serait souhaitable de travailler avec les classe d'âge d'une catégorie comme par exemple : Baby volley de 7 - 8 ans, Pupille de 9 - 10 ans, etc......

Deuxième point pour la date de naissance et la catégorie vous avez certainement une faute soit dans les champs du formulaire ou la table, contrôler bien l'orthographe des noms!

Messages postés
415
Date d'inscription
samedi 26 août 2006
Statut
Membre
Dernière intervention
4 janvier 2020
19
Je crois que je commence à comprendre la phrase "Pour l'année prochaine ce n'est pas en changent la procédure que les données enregistrés seront mise à jour.... vous en ferez l'expérience...!"

J'ai changé le code de la procédure en tenant compte de vos remarques :

Option Compare Database

Private Sub Datenaissance_BeforeUpdate(Cancel As Integer)
Dim Age As Long
Age = Year(Date) - Year(Datenaissance)
Select Case Age
Case Is <= 6
Categorie = "Baby volley"
Case Is = 7, 8
Categorie = "Pupille"
Case Is = 9, 10
Categorie = "Poussin"
Case Is = 11, 12
Categorie = "Benjamin"
Case Is = 13, 14
Categorie = "Minime"
Case Is = 15, 16
Categorie = "Cadet"
Case Is = 17, 18
Categorie = "Junior"
Case Is = 19, 20
Categorie = "Espoir"
Case Is > 20
Categorie = "Sénior"
End Select
End Sub

J'ai testé sur mon formulaire et j'ai l'impression que ça fonctionne.
Par contre, j'ai l'impression qu'une fois la date indiquée, effectivement la catégorie reste la même même si je change quelque chose dans la procédure : d'un côté, cela m'arrange car je n'ai pas de changement de catégorie d'âge au 1er janvier de l'année suivante (une catégorie d'âge est définie pour une saison sportive donc à cheval sur 2 années). Mais je vais avoir un problème pour la saison prochaine quand je vais vouloir modifier ma base de données : les catégories d'âge indiquées seront celles de cette année et pas celle de l'année prochaine.
Existe-t-il un moyen pour passer outre ce problème (autrement que de resaisir tous les enregistrements) ?
Messages postés
415
Date d'inscription
samedi 26 août 2006
Statut
Membre
Dernière intervention
4 janvier 2020
19
Je crois en fait que je n'ai pas compris ce que signifiait cette phrase en gras.
Messages postés
415
Date d'inscription
samedi 26 août 2006
Statut
Membre
Dernière intervention
4 janvier 2020
19
dans ce cas, ça me paraît compliqué de la comprendre si le rédacteur d'une phrase ne la comprend pas !!