Afficher dans un contrôle d'un formulaire une valeur selon un critère
Résolu/Fermé
BoJav
Messages postés
49
Date d'inscription
mardi 23 février 2021
Statut
Membre
Dernière intervention
17 février 2022
-
23 févr. 2021 à 18:25
yg_be Messages postés 22707 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 avril 2024 - 4 mars 2021 à 10:44
yg_be Messages postés 22707 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 avril 2024 - 4 mars 2021 à 10:44
A voir également:
- Afficher dans un contrôle d'un formulaire une valeur selon un critère
- Controle parental pc - Guide
- Formule excel si contient texte alors valeur ✓ - Forum Excel
- Excel ne pas afficher #valeur ✓ - Forum Excel
- Afficher mot de passe wifi android - Guide
- Afficher calendrier outlook dans google agenda - Guide
14 réponses
f894009
Messages postés
17185
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
15 avril 2024
1 701
24 févr. 2021 à 07:13
24 févr. 2021 à 07:13
yg_be
Messages postés
22707
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
19 avril 2024
1 471
24 févr. 2021 à 14:21
24 févr. 2021 à 14:21
bonjour,
tu écris:
c'est quoi
ne devrais-tu pas plutôt utiliser Classe de la tbl_Classe? quel est le type de ce champ?
si il est numérique, peut-être:
tu écris:
Me.FraisScol = DLookup("[Frais_Scolarite]", "tbl_Classe", "[Classe_Eleve]=ClasseEleve")
c'est quoi
Classe_Eleve?
ne devrais-tu pas plutôt utiliser Classe de la tbl_Classe? quel est le type de ce champ?
si il est numérique, peut-être:
Me.FraisScol = _ DLookup("[Frais_Scolarite]", "tbl_Classe", "Classe=" + cstr(me.ClasseEleve))
BoJav
Messages postés
49
Date d'inscription
mardi 23 février 2021
Statut
Membre
Dernière intervention
17 février 2022
26 févr. 2021 à 09:44
26 févr. 2021 à 09:44
Bonjour,
Merci pour la réponse mais cela ne marche pas.
Dans tbl_Classe:
Frais_scolarite : entier long format standard décimale 0
Classe_Eleve : texte court, 40
Dans tbl_Eleve:
Frais_scolarite : entier long format standard décimale 0
Classe_Eleve : texte court, 40
Dans le formulaire (formalaire d'ajout basé sur une requête d'ajout dans la tbl_Eleve)
FraisScol (format standart, décimale 0)
ClasseEleve (format non spécifié), Propriété - Données - Contenu (tbl_Classe), source contrôle vide.
La tbl_Classe et tbl_Eleve ne sont pas liées
Où dois-je mettre le code Dlookup? Après MAJ dans les propriétés du contrôle Classe? ou dans les propriétés du contrôle FraisScol? Si sur FraisScol Où?
D'avance merci.
Merci pour la réponse mais cela ne marche pas.
Dans tbl_Classe:
Frais_scolarite : entier long format standard décimale 0
Classe_Eleve : texte court, 40
Dans tbl_Eleve:
Frais_scolarite : entier long format standard décimale 0
Classe_Eleve : texte court, 40
Dans le formulaire (formalaire d'ajout basé sur une requête d'ajout dans la tbl_Eleve)
FraisScol (format standart, décimale 0)
ClasseEleve (format non spécifié), Propriété - Données - Contenu (tbl_Classe), source contrôle vide.
La tbl_Classe et tbl_Eleve ne sont pas liées
Où dois-je mettre le code Dlookup? Après MAJ dans les propriétés du contrôle Classe? ou dans les propriétés du contrôle FraisScol? Si sur FraisScol Où?
D'avance merci.
yg_be
Messages postés
22707
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
19 avril 2024
1 471
26 févr. 2021 à 09:48
26 févr. 2021 à 09:48
c'est quoi le contrôle Classe?
tu avais mentionne le champs Classe de la tbl_Classe: il n'existe plus?
montre-nous où tu as mis le dlookup.
tu avais mentionne le champs Classe de la tbl_Classe: il n'existe plus?
montre-nous où tu as mis le dlookup.
BoJav
Messages postés
49
Date d'inscription
mardi 23 février 2021
Statut
Membre
Dernière intervention
17 février 2022
26 févr. 2021 à 15:02
26 févr. 2021 à 15:02
Il n'y a pas de contrôle Classe, mais ClasseEleve
Le champs dans le table Classe est Classe_Eleve
J'ai mis DLookup dans AprèsMaj du contrôle ClasseEleve
Le champs dans le table Classe est Classe_Eleve
J'ai mis DLookup dans AprèsMaj du contrôle ClasseEleve
yg_be
Messages postés
22707
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
19 avril 2024
1 471
26 févr. 2021 à 17:23
26 févr. 2021 à 17:23
essaie de partager des infos correctes.
peut-être:
partage tout ton code, pas uniquement une ligne.
peut-être:
Me.FraisScol = _ DLookup("[Frais_Scolarite]", "tbl_Classe", " Classe_Eleve = '" + cstr(me.ClasseEleve) +"' " )
partage tout ton code, pas uniquement une ligne.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
BoJav
Messages postés
49
Date d'inscription
mardi 23 février 2021
Statut
Membre
Dernière intervention
17 février 2022
26 févr. 2021 à 18:31
26 févr. 2021 à 18:31
Désolé, je débute sur les forums et j'essaie d'être au plus clair.
J'ai donc fait
Private Sub ClasseEleve_AfterUpdate()
Me.FraisScol = DLookup("[Frais_Scolarite]", "tbl_Classe", " Classe_Eleve = '" + CStr(Me.ClasseEleve) + "' ")
End Sub
Et cela ne donne rien, le contrôle FraisScol reste désespérément vide (et aucun bug n'est signalé).
Est-ce que cela aurait avoir avec le champs de la clé primaire de la Tbl_Classe sur lequel la liste déroulante du contrôle ClasseEleve est basée? La clé primaire est un champ numeroAuto.
NB. En essayant avec la fct RechDom dans la sourcecontrôle de FraisScol, cela signale #erreur
PS. Merci pour vos réponses.
J'ai donc fait
Private Sub ClasseEleve_AfterUpdate()
Me.FraisScol = DLookup("[Frais_Scolarite]", "tbl_Classe", " Classe_Eleve = '" + CStr(Me.ClasseEleve) + "' ")
End Sub
Et cela ne donne rien, le contrôle FraisScol reste désespérément vide (et aucun bug n'est signalé).
Est-ce que cela aurait avoir avec le champs de la clé primaire de la Tbl_Classe sur lequel la liste déroulante du contrôle ClasseEleve est basée? La clé primaire est un champ numeroAuto.
NB. En essayant avec la fct RechDom dans la sourcecontrôle de FraisScol, cela signale #erreur
PS. Merci pour vos réponses.
yg_be
Messages postés
22707
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
19 avril 2024
1 471
26 févr. 2021 à 18:40
26 févr. 2021 à 18:40
et si tu ajoutes
msgbox "afterupdate: " + Me.ClasseEleve?
BoJav
Messages postés
49
Date d'inscription
mardi 23 février 2021
Statut
Membre
Dernière intervention
17 février 2022
26 févr. 2021 à 18:58
26 févr. 2021 à 18:58
Private Sub ClasseEleve_AfterUpdate()
Me.FraisScol = DLookup("[Frais_Scolarite]", "tbl_Classe", " Classe_Eleve = '" + CStr(Me.ClasseEleve) + "' ")
MsgBox "afterupdate: " + Me.ClasseEleve
End Sub
la msgBox affiche le numéro d'enregistrement de la clé primaire (si je choisis la 3ème classe de la liste déroulante, il affiche dans la msgbox : afterupdate : 3
Me.FraisScol = DLookup("[Frais_Scolarite]", "tbl_Classe", " Classe_Eleve = '" + CStr(Me.ClasseEleve) + "' ")
MsgBox "afterupdate: " + Me.ClasseEleve
End Sub
la msgBox affiche le numéro d'enregistrement de la clé primaire (si je choisis la 3ème classe de la liste déroulante, il affiche dans la msgbox : afterupdate : 3
yg_be
Messages postés
22707
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
19 avril 2024
1 471
26 févr. 2021 à 20:51
26 févr. 2021 à 20:51
tu négliges d'écrire le plus important: clé primaire de quelle table?
qu'est donc
qu'est donc
Me.ClasseEleve, d'après toi? comment, alors, adapter le dlookup?
yg_be
Messages postés
22707
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
19 avril 2024
1 471
>
yg_be
Messages postés
22707
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
19 avril 2024
26 févr. 2021 à 20:53
26 févr. 2021 à 20:53
comprends-tu qu'en choisissant le même nom pour différents éléments, tu te compliques la vie?
évite de nommer plusieurs éléments ClasseEleve, utilises des noms différents, cela t'aidera à comprendre ce que tu fais.
évite de nommer plusieurs éléments ClasseEleve, utilises des noms différents, cela t'aidera à comprendre ce que tu fais.
BoJav
Messages postés
49
Date d'inscription
mardi 23 février 2021
Statut
Membre
Dernière intervention
17 février 2022
>
yg_be
Messages postés
22707
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
19 avril 2024
27 févr. 2021 à 11:22
27 févr. 2021 à 11:22
La liste du contrôle ClasseEleve du formulaire étant basé sur la tbl_classe, c'est la clé primaire de cette table.
Bien compris ta remarque sur le choix des nom, dans les tables (classe et eleve) le champs se nomme Classe_Eleve et dans le frm il est nommé ClasseEleve. Quand il s'agit de contrôle de frm je ne mets jamais de _ comme cela je pensais m'y retrouver.
Quant à Me.ClasseEleve vu qu'on parle de ClasseEleve, c'est forcément du controle du frm qu'on parle, ce qui me parait de prime abord logique vu que le critère pour renvoyer une valeur dans le contrôle FraisScol est basé sur la valeur contenue après choix dans le contrôle ClasseEleve du même frm.
Comment adapter la Dlookup, je vois pas. Préciser dans quelle table le Classe_Eleve se situe?
Stp explique-moi que je progresse.
D'avance merci.
Bien compris ta remarque sur le choix des nom, dans les tables (classe et eleve) le champs se nomme Classe_Eleve et dans le frm il est nommé ClasseEleve. Quand il s'agit de contrôle de frm je ne mets jamais de _ comme cela je pensais m'y retrouver.
Quant à Me.ClasseEleve vu qu'on parle de ClasseEleve, c'est forcément du controle du frm qu'on parle, ce qui me parait de prime abord logique vu que le critère pour renvoyer une valeur dans le contrôle FraisScol est basé sur la valeur contenue après choix dans le contrôle ClasseEleve du même frm.
Comment adapter la Dlookup, je vois pas. Préciser dans quelle table le Classe_Eleve se situe?
Stp explique-moi que je progresse.
D'avance merci.
yg_be
Messages postés
22707
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
19 avril 2024
1 471
>
BoJav
Messages postés
49
Date d'inscription
mardi 23 février 2021
Statut
Membre
Dernière intervention
17 février 2022
27 févr. 2021 à 11:49
27 févr. 2021 à 11:49
tu as écrit "la msgBox affiche le numéro d'enregistrement de la clé primaire", et je te demande "clé primaire de quelle table"?
il sera utile, quand tu as le temps, de décrire la structure de tes tables.
avoir deux champs de même nom dans deux tables est aussi une source de confusion.
pas très logique, me semble-t-il, dans la table tbl_Classe, d'utiliser le nom Classe_Eleve.
il sera utile, quand tu as le temps, de décrire la structure de tes tables.
avoir deux champs de même nom dans deux tables est aussi une source de confusion.
pas très logique, me semble-t-il, dans la table tbl_Classe, d'utiliser le nom Classe_Eleve.
BoJav
Messages postés
49
Date d'inscription
mardi 23 février 2021
Statut
Membre
Dernière intervention
17 février 2022
27 févr. 2021 à 12:56
27 févr. 2021 à 12:56
La msgBox affiche le numéro de l'enregistrement de la table Classe [tbl_Classe]
Cette table Classe à 3 champs :
Id_Classe (numéroAuto) il y a 27 enregistrements dans cette table. Exemple l'enregistrement n°3 soit 3 dans Id_Classe est maternelle 3 dans le chmaps Classe_Eleve (texte court limité à 40) avec un Frais_Scolarite (Numérique - entier long format standard, 0 décimale avec valeur par défaut 0) de 3.000. Donc si je choisi dans la liste déroulante du Frm, Maternelle 3, la msgbox me renvoie la valeur 3.
J'ai 4 tables:
tbl_Parent et tbl_Eleve qui sont lié de 1 à plusieurs partant de la tbl_Parent vers la tbl_eleve.
La clé primaire de tbl_Parent est Id_Parent (numéroauto). J'aurais préféré que la clé primaire soient basée sur un champs Parent_Matricule qui est unique mais j'ai préféré jouer la sécurité à ce stade de mes compétences.
Dans la tbl_Eleve, la clé externe qui relie à la clé primaire de tbl_Parent est un champ nommé ID2_Parent. La tbl_Eleve a une clé primaire ID_Eleve (numéroauto).
Les 2 autres tables sont
tbl_Classe (clé primaire Id_Classe - numéroauto)
tbl_SecteurMLN (clé primaire Id_Secteur - numéroauto)
Elles sont indépendantes (aucune liaison avec aucune autre table).
Idéalement j'aurais voulu construire un formulaire d'ajout avec un sous formulaire d'ajout qui permet d'enregistrer des nouveau Parents (qui doivent être filtrable par des secteurs qui sont dans la tbl_Secteur) et de nouveau élèves qui doivent être filtrable par des classes contenu dans la tbl_Classe.
J'ai donc fait 2 requêtes d'ajout (une pour les élèves et une pour les parents) et construit 2 formulaires (1 pour les élève et 1 pour les parents) basés sur ces requêtes d'ajout.
L'idée finale est de pouvoir rapporter à la comptabilité de l'entreprise MLN tel parent appartenant à tel secteur doit payer xxxx pour les frais de scolarité de ses enfants élèves inscrits à l'école.
Je suis prêt à t'envoyer la BDD par mail si tu veux.
Cette table Classe à 3 champs :
Id_Classe (numéroAuto) il y a 27 enregistrements dans cette table. Exemple l'enregistrement n°3 soit 3 dans Id_Classe est maternelle 3 dans le chmaps Classe_Eleve (texte court limité à 40) avec un Frais_Scolarite (Numérique - entier long format standard, 0 décimale avec valeur par défaut 0) de 3.000. Donc si je choisi dans la liste déroulante du Frm, Maternelle 3, la msgbox me renvoie la valeur 3.
J'ai 4 tables:
tbl_Parent et tbl_Eleve qui sont lié de 1 à plusieurs partant de la tbl_Parent vers la tbl_eleve.
La clé primaire de tbl_Parent est Id_Parent (numéroauto). J'aurais préféré que la clé primaire soient basée sur un champs Parent_Matricule qui est unique mais j'ai préféré jouer la sécurité à ce stade de mes compétences.
Dans la tbl_Eleve, la clé externe qui relie à la clé primaire de tbl_Parent est un champ nommé ID2_Parent. La tbl_Eleve a une clé primaire ID_Eleve (numéroauto).
Les 2 autres tables sont
tbl_Classe (clé primaire Id_Classe - numéroauto)
tbl_SecteurMLN (clé primaire Id_Secteur - numéroauto)
Elles sont indépendantes (aucune liaison avec aucune autre table).
Idéalement j'aurais voulu construire un formulaire d'ajout avec un sous formulaire d'ajout qui permet d'enregistrer des nouveau Parents (qui doivent être filtrable par des secteurs qui sont dans la tbl_Secteur) et de nouveau élèves qui doivent être filtrable par des classes contenu dans la tbl_Classe.
J'ai donc fait 2 requêtes d'ajout (une pour les élèves et une pour les parents) et construit 2 formulaires (1 pour les élève et 1 pour les parents) basés sur ces requêtes d'ajout.
L'idée finale est de pouvoir rapporter à la comptabilité de l'entreprise MLN tel parent appartenant à tel secteur doit payer xxxx pour les frais de scolarité de ses enfants élèves inscrits à l'école.
Je suis prêt à t'envoyer la BDD par mail si tu veux.
yg_be
Messages postés
22707
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
19 avril 2024
1 471
27 févr. 2021 à 13:08
27 févr. 2021 à 13:08
as-tu créé une clé unique sur le champs Parent_Matricule?
puisque, comme tu le vois, Me.ClasseEleve correspond au champ Id_Classe de la table tbl_Classe,
je suggère ceci pour le lookup:
puisque, comme tu le vois, Me.ClasseEleve correspond au champ Id_Classe de la table tbl_Classe,
je suggère ceci pour le lookup:
Me.FraisScol = _ DLookup("[Frais_Scolarite]", "tbl_Classe", " Id_Classe = " + CStr(Me.ClasseEleve) )
BoJav
Messages postés
49
Date d'inscription
mardi 23 février 2021
Statut
Membre
Dernière intervention
17 février 2022
1 mars 2021 à 09:43
1 mars 2021 à 09:43
Yesss, ça marche!
Merci beaucoup!
J'avais essayé mais j'avais laissé les [ ] de Id_Classe et la fin + '"
Sans abuser, tu pourrais m'expliquer ce que je devrais faire pour remplacer la clé primaire (Id_Parent) de la table Parent qui est un numéro auto par la champs Matricule_Parent qui se générerait automatiquement dans un format de 4 chiffres?
Donc quand je crée un nouveau parent, automatiquement, il génére un matricule à 4 chiffres et ce champs serait la clé primaire de la table.
Je voudrais faire idem pour la tbl_eleve.
D'avance merci.
Merci beaucoup!
J'avais essayé mais j'avais laissé les [ ] de Id_Classe et la fin + '"
Sans abuser, tu pourrais m'expliquer ce que je devrais faire pour remplacer la clé primaire (Id_Parent) de la table Parent qui est un numéro auto par la champs Matricule_Parent qui se générerait automatiquement dans un format de 4 chiffres?
Donc quand je crée un nouveau parent, automatiquement, il génére un matricule à 4 chiffres et ce champs serait la clé primaire de la table.
Je voudrais faire idem pour la tbl_eleve.
D'avance merci.
yg_be
Messages postés
22707
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
19 avril 2024
1 471
1 mars 2021 à 10:54
1 mars 2021 à 10:54
le plus simple n'est-il pas d'utiliser Id_Parent comme matricule?
BoJav
Messages postés
49
Date d'inscription
mardi 23 février 2021
Statut
Membre
Dernière intervention
17 février 2022
>
yg_be
Messages postés
22707
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
19 avril 2024
1 mars 2021 à 11:24
1 mars 2021 à 11:24
Le problème est qu'une partie des matricule existe déjà avant la création de cette base de données Access.
yg_be
Messages postés
22707
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
19 avril 2024
1 471
>
BoJav
Messages postés
49
Date d'inscription
mardi 23 février 2021
Statut
Membre
Dernière intervention
17 février 2022
1 mars 2021 à 11:33
1 mars 2021 à 11:33
le mieux, alors, est d'ajouter un champ matricule (avec une clé unique), et d'utiliser une fonction VBA pour assigner la valeur de ce champ.
BoJav
Messages postés
49
Date d'inscription
mardi 23 février 2021
Statut
Membre
Dernière intervention
17 février 2022
1 mars 2021 à 11:39
1 mars 2021 à 11:39
Ok, et concrètement?
Le champs matricule existe déjà dans la tbl_Parent. il est au format texte court
Il est indexé sans doublons
Quelle serait la fct VBA d'assignation de la valeur? Et je devrai la mettre où?
Le champs matricule existe déjà dans la tbl_Parent. il est au format texte court
Il est indexé sans doublons
Quelle serait la fct VBA d'assignation de la valeur? Et je devrai la mettre où?
yg_be
Messages postés
22707
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
19 avril 2024
1 471
1 mars 2021 à 12:02
1 mars 2021 à 12:02
la fonction VBA fournira le matricule du nouveau parent. elle calculera ce matricule en examinant les matricules existants.
tu avais écrit "J'ai donc fait 2 requêtes d'ajout (une pour les élèves et une pour les parents) et construit 2 formulaires (1 pour les élève et 1 pour les parents) basés sur ces requêtes d'ajout."
peux-tu partager la source SQL de la requête d'ajout de parent?
tu avais écrit "J'ai donc fait 2 requêtes d'ajout (une pour les élèves et une pour les parents) et construit 2 formulaires (1 pour les élève et 1 pour les parents) basés sur ces requêtes d'ajout."
peux-tu partager la source SQL de la requête d'ajout de parent?
BoJav
Messages postés
49
Date d'inscription
mardi 23 février 2021
Statut
Membre
Dernière intervention
17 février 2022
1 mars 2021 à 15:35
1 mars 2021 à 15:35
Le voici
INSERT INTO tbl_Parent ( Matr_MLN_Parent, Nom_Parent, Prenom_Parent, Categ_Parent, Secteur_MLN )
SELECT [Formulaires]![F_Ajout_Parent]![MatrParent] AS Expr1, [Formulaires]![F_Ajout_Parent]![NomParent] AS Expr2, [Formulaires]![F_Ajout_Parent]![PrenomParent] AS Expr3, [Formulaires]![F_Ajout_Parent]![CategParent] AS Expr4, [Formulaires]![F_Ajout_Parent]![SecteurMLN] AS Expr5;
INSERT INTO tbl_Parent ( Matr_MLN_Parent, Nom_Parent, Prenom_Parent, Categ_Parent, Secteur_MLN )
SELECT [Formulaires]![F_Ajout_Parent]![MatrParent] AS Expr1, [Formulaires]![F_Ajout_Parent]![NomParent] AS Expr2, [Formulaires]![F_Ajout_Parent]![PrenomParent] AS Expr3, [Formulaires]![F_Ajout_Parent]![CategParent] AS Expr4, [Formulaires]![F_Ajout_Parent]![SecteurMLN] AS Expr5;
yg_be
Messages postés
22707
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
19 avril 2024
1 471
1 mars 2021 à 15:38
1 mars 2021 à 15:38
veux-tu que le matricule apparaisse dans le formulaire avant la création de l'enregistrement?
BoJav
Messages postés
49
Date d'inscription
mardi 23 février 2021
Statut
Membre
Dernière intervention
17 février 2022
1 mars 2021 à 16:38
1 mars 2021 à 16:38
Oui stp
yg_be
Messages postés
22707
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
19 avril 2024
1 471
1 mars 2021 à 16:56
1 mars 2021 à 16:56
alors c'est dans le contrôle du formulaire qu'il faut utiliser la formule.
BoJav
Messages postés
49
Date d'inscription
mardi 23 février 2021
Statut
Membre
Dernière intervention
17 février 2022
>
yg_be
Messages postés
22707
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
19 avril 2024
1 mars 2021 à 18:26
1 mars 2021 à 18:26
Ok et je rentre quel code VBA et sur quel événement?
yg_be
Messages postés
22707
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
19 avril 2024
1 471
>
BoJav
Messages postés
49
Date d'inscription
mardi 23 février 2021
Statut
Membre
Dernière intervention
17 février 2022
1 mars 2021 à 21:40
1 mars 2021 à 21:40
il faut d'abord écrire la fonction, et ensuite l'utiliser comme valeur par défaut pour le contrôle matricule.
BoJav
Messages postés
49
Date d'inscription
mardi 23 février 2021
Statut
Membre
Dernière intervention
17 février 2022
2 mars 2021 à 11:18
2 mars 2021 à 11:18
Ok, je suis incapable d'écrire cette fonction, tu peux m'aider?
yg_be
Messages postés
22707
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
19 avril 2024
1 471
2 mars 2021 à 12:28
2 mars 2021 à 12:28
que devrait faire cette fonction?
BoJav
Messages postés
49
Date d'inscription
mardi 23 février 2021
Statut
Membre
Dernière intervention
17 février 2022
3 mars 2021 à 09:32
3 mars 2021 à 09:32
J'ai demandé si tu pouvais m'aider pour remplacer la clé primaire (Id_Parent) de la table Parent qui est un numéro auto par la champs Matricule_Parent qui se générerait automatiquement dans un format de 4 chiffres.
Tu m'as répondu:
- Le mieux, alors, est d'ajouter un champ matricule (avec une clé unique), et d'utiliser une fonction VBA pour assigner la valeur de ce champ, puis
-la fonction VBA fournira le matricule du nouveau parent. elle calculera ce matricule en examinant les matricules existants, ensuite
- Veux-tu que le matricule apparaisse dans le formulaire avant la création de l'enregistrement? Enfin,
- Alors c'est dans le contrôle du formulaire qu'il faut utiliser la formule.
Et la tu me demandes ce que devrait faire cette fonction :)
Donc en résumé, comment affecter la clé primaire à un autre champs que celui d'un numéroAutomatique qui se générerait seul à partir de d'un formulaire basé sur une requête d'ajout. Ce champs qui serait la clé primaire serait un nombre de 4 chiffres et servirait de Matricule.
D'avance merci
Tu m'as répondu:
- Le mieux, alors, est d'ajouter un champ matricule (avec une clé unique), et d'utiliser une fonction VBA pour assigner la valeur de ce champ, puis
-la fonction VBA fournira le matricule du nouveau parent. elle calculera ce matricule en examinant les matricules existants, ensuite
- Veux-tu que le matricule apparaisse dans le formulaire avant la création de l'enregistrement? Enfin,
- Alors c'est dans le contrôle du formulaire qu'il faut utiliser la formule.
Et la tu me demandes ce que devrait faire cette fonction :)
Donc en résumé, comment affecter la clé primaire à un autre champs que celui d'un numéroAutomatique qui se générerait seul à partir de d'un formulaire basé sur une requête d'ajout. Ce champs qui serait la clé primaire serait un nombre de 4 chiffres et servirait de Matricule.
D'avance merci
yg_be
Messages postés
22707
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
19 avril 2024
1 471
3 mars 2021 à 09:44
3 mars 2021 à 09:44
comment la fonction doit-elle calculer le nouveau matricule en tenant compte des matricules existants?
elle peut choisir n'importe quel matricule non utilisé?
elle peut choisir n'importe quel matricule non utilisé?
BoJav
Messages postés
49
Date d'inscription
mardi 23 février 2021
Statut
Membre
Dernière intervention
17 février 2022
>
yg_be
Messages postés
22707
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
19 avril 2024
3 mars 2021 à 10:14
3 mars 2021 à 10:14
Oui, le matricule doit se composé de 4 chiffres ex: 1252
yg_be
Messages postés
22707
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
19 avril 2024
1 471
>
BoJav
Messages postés
49
Date d'inscription
mardi 23 février 2021
Statut
Membre
Dernière intervention
17 février 2022
3 mars 2021 à 11:07
3 mars 2021 à 11:07
un exemple:
Function newmatricule(table As String, champ As String, longueur As Integer) As String Dim rstab As DAO.Recordset, maxmat As Long, candidatemat As Long, hasardmat As Long, smat As String, i As Integer Set rstab = CurrentDb.OpenRecordset(table, dbOpenDynaset) maxmat = 10 ^ longueur - 1 smat = "" For i = 1 To longueur smat = smat + "0" Next i Call Randomize hasardmat = CLng(Rnd() * maxmat) candidatemat = hasardmat Do newmatricule = Format(candidatemat, smat) rstab.FindFirst ("matricule='" + newmatricule + "'") If rstab.NoMatch Then Exit Function End If ' Debug.Print "non", newmatricule candidatemat = candidatemat + 1 If candidatemat > maxmat Then candidatemat = 0 End If Loop Until candidatemat = hasardmat newmatricule = "" End Function
newmatricule("Parent", "Matricule_Parent", 4)
yg_be
Messages postés
22707
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
19 avril 2024
1 471
>
yg_be
Messages postés
22707
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
19 avril 2024
4 mars 2021 à 10:44
4 mars 2021 à 10:44
la ligne 14 devrait être:
rstab.FindFirst (champ + " = '" + newmatricule + "' ")
BoJav
Messages postés
49
Date d'inscription
mardi 23 février 2021
Statut
Membre
Dernière intervention
17 février 2022
4 mars 2021 à 10:15
4 mars 2021 à 10:15
Merci, je vais tester cela et te reviens.
Je mets où la dernier ligne de ton message newmatricule("Parent", "Matricule_Parent", 4)?
Je mets où la dernier ligne de ton message newmatricule("Parent", "Matricule_Parent", 4)?
yg_be
Messages postés
22707
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
19 avril 2024
1 471
4 mars 2021 à 10:43
4 mars 2021 à 10:43
soit comme valeur par défaut de [MatrParent] dans le formulaire [F_Ajout_Parent]
soit directement dans la requête de création d'un enregistrement:
soit directement dans la requête de création d'un enregistrement:
INSERT INTO tbl_Parent ( Matr_MLN_Parent, Nom_Parent, Prenom_Parent, Categ_Parent, Secteur_MLN ) SELECT newmatricule("tbl_Parent", "Matr_MLN_Parent", 4), [Formulaires]![F_Ajout_Parent]![NomParent] AS Expr2, [Formulaires]![F_Ajout_Parent]![PrenomParent] AS Expr3, [Formulaires]![F_Ajout_Parent]![CategParent] AS Expr4, [Formulaires]![F_Ajout_Parent]![SecteurMLN] AS Expr5;