2 pièce(s) jointe(s)
Affichage en temps réel, paramétré par DAO , de contrôles dans le détail d'un Etat/Formulaire?
Bonjour!
Modèle:
Je cherche à modéliser un service de bénévolat professoral - sur mon temps libre et hors du cadre scolaire précisons ;)
Deux tables de base : mentor et élève.
Deux tables "CIM" :
- mentorer, qui comprend les dates de début et fin du mentorat
- matcher, qui liste les propositions de mentorat faites par les professeurs aux élèves, avec la date, et un statut de match (1 pour proposition faite, en attente avant acceptation ; 2 pour candidature de l'élève mais ceci n'est pas dans notre morceau de modèle)
|
Pièce jointe 153486 |
Les propositions de mentorat se font par l'état "EEleve"
Pièce jointe 153488
La liste ("Liste") déroulante en en-tête simule une identification du professeur.
La création de contrôles par VBA étant du haut allemand pour moi, j'ai opté pour la superposition de contrôles, affichés ou non par VBA.
A coté de chaque élève en détail se trouve donc :
Un bouton d'ajout/proposition ("Commande")
Deux étiquettes : "Prop" et "Ment"
Problème :
Le contrôle de l'affichage se compose de deux parties :
- Vérifier l'existence d'un mentorat existant, auquel cas le bouton Ajouter de l'état serait remplaçé par l'étiquette "Mentorat en cours"
- Vérifier l'absence de propositions précédentes, sinon afficher " Proposition effectuée"
Le bouton de commande ajouter fonctionne aujourd'hui, c'est sur le contrôle de l'affichage conditionnel que je bute.
Merci de trouver ci-dessous le code existant :
J'ai bien sûr pensé à la procédure événementielle sur formatage du détail de l'état.
Premièrement je n'arrive pas à la faire fonctionner. Est-il possible d'obtenir une correction?
Code:
1 2 3 4 5 6 7
| '*****Procédure au formatage du détail de l'état - Code test******
Private Sub Détail_format(Cancel As Integer, formatCount As Integer)
'3 est une valeur arbitraire test!
If Me.CodeEleve.Value = 3 Then
Me.Commande.Visible = False
End If
End Sub |
Ci-dessous le code comprenant les deux contrôles d'affichage.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| '****************Code orphelin à insérer, pour le contrôle de l'affichage des boutons _
' "Ajouter"(Commande5), et des étiquettes "Mentorat en cours"(Ment) et _
' "Proposition effectuée"(Prop)
' Paramétrage de l'affichage par DAO d'après les tables 1/"Mentorer" et 2/"Matcher"******************
'Déclarations
Dim a As Database
Dim b As Object
Dim strCritere As String
Dim msg, mentor, eleve
Set a = CurrentDb
mentor = Me.CodeMentor.Value
eleve = Me.CodeEleve.Value
'**** 1/ Vérification qu'un mentorat n'est pas déjà en cours****
Set b = a.OpenRecordset("mentorer", dbOpenDynaset)
strCritere = "Codeeleve LIKE " & Chr(34) & eleve & "*" & Chr(34) _
& " and codementor LIKE " & Chr(34) & mentor & "*" & Chr(34) & " and datefment null"
b.FindFirst strCritere
If b.NoMatch Then
Me.Ment = False
Else
Me.Commande.Visible = False
End If
b.Close
' 2/ Vérification que la proposition n'est pas déjà postée
Set b = a.OpenRecordset("Matcher", dbOpenDynaset)
strCritere = "Codeeleve LIKE " & Chr(34) & eleve & "*" & Chr(34) _
& " and codementor LIKE " & Chr(34) & mentor & "*" & Chr(34) & " and codematch like " & Chr(34) & "1*" & Chr(34)
b.FindFirst strCritere
If b.NoMatch Then
Me.Prop.Visible = False
Else
Me.Commande.Visible = False
End If
b.Close: Set b = Nothing
'************Fin de code orphelin*************** |
Je réalise que lors du formatage de l'état la liste d'en tête n'est pas renseignée, d'où ma deuxième question :
Peut-on relancer le formatage de l'état par VBA?
Je ne suis pas sûr d'être sur la bonne piste avec le formatage de l'état et recevrai vos remarques avec plaisir!
Cordialement.
Connaissances :
J'ai une connaissance vulgaire du language VBA, surtout une très grande NON-maîtrise des méthodes, propriétés et collections :oops: