Procède dans cet ordre :
1. Ouvre le formulaire en mode construction et affiche les propriétés.
Il n’a pas de source : on le dit « indépendant ».
Parcours chacune de ses propriétés et si tu ne devines pas la signification du contenu, informe-toi avec <F1>.
Intéresse-toi aux contrôles de la première ligne.
Vois la manière de les nommer et examine leurs propriétés (<F1>).
En particulier :
zdlCarte
Dans la propriété « Contenu » clique sur le « … » à la fin de la ligne pour afficher le graphe de la requête.
Il n’était pas nécessaire d’avoir une requête de regroupement puisqu’à un véhicule, ne correspond qu’une seule carte et vice versa.
Tu peux remplacer contenu par ceci :
SELECT tVehicules.Carte, tVehicules.IdVehicule FROM tVehicules ORDER BY tVehicules.Carte;
Cette requête donne une liste de paires Carte/idVehicule => nbre de colonnes : 2.
Dans zdtCarte, c’est « Carte » qui nous intéresse => colonne liée : 1.
Et on ne veut pas afficher idVehicule => largeurs colonnes : 1 cm; 0.
Pourquoi l’y mettre alors ?
Vois l’événement « Après mise à jour »
Me.zdlVehicule = Me.zdlCarte.Column(1)
En français : mettez dans le contrôle zdlVehicule ce qui se trouve dans la 2e colonne de zdlCarte (Access commence, ici, sa numérotation des colonnes à zéro).
xxxxxxxxxxx
2. Ensuite, affiche ton formulaire en mode normal et remplis les contrôles de la première ligne.
Laisse-le affiché pendant que tu examines les requêtes :
rPleinPrecedent (vois la propriété premières valeurs = 1)
rVehiculeTraite
rAjoutConsom
Comprends comment on fait référence aux valeurs qui sont actuellement affichées dans les contrôles du formulaire.
Entraîne-toi à utiliser le générateur d’expression (clic droit dans une cellule « champ » ou « critère » et choisis « Créer… » dans le menu contextuel qui s’affiche).
xxxxxxx
3. Pour voir comment on déclenche l’exécution d’une requête, va regarder le code de l’événement « Sur clic » de btAjouter (dans ses propriétés, onglet Événement, sélectionne « Sur clic » et clique sur « … » pour accéder à l’éditeur de code VBA.
xxxxxxx
4. Intéresse-toi maintenant aux contrôles « zdtKMParcourus », « zdtConsoMoy » et « zdtpc ».
Un mot d’explication pour t’aider à comprendre.
Lorsqu’une requête ne donne qu’un seul enregistrement comme résultat (c’est le cas de rVehiculeTraite) la syntaxe pour récupérer la valeur des champs est la suivante :
RechDom("NomDuChamp";"NomDeLaRequête")
Ainsi,
RechDom("ConsomTheor";"rVehiculeTraite")
récupère la valeur de la consommation théorique (colonne « ConsomTheor ») dans la requête « rVehiculeTraite ».
xxxxxxxx
5. Le sous-formulaire « sfHistoCarbu »
Un sous-formulaire est avant tout un formulaire banal.
Ouvre-le en mode « construction » et examine sa source.
Comme tu le vois, les enregistrements sont limités à ce que contient le contrôle zdlVehicule du formulaire principal.
Remarque que la liste est vide à l’ouverture de fEncodageCarbu. C’est logique puisque la table tConsomCarbu ne contient aucun enregistrement où idVehicule a une valeur Null.
Naturellement chaque fois que la liste doit être modifiée (modif de zdtVehicule ou ajout d’un enregistrement), il faut « rafraîchir ». C’est la raison d’être de l’instruction
que tu rencontres dans le code des événements (zdtVehicule, zdtCarte et btAjouter).
xxxxxxxxx
6. Mise en forme conditionnelle
Pour voir comment ça marche, sélectionne un contrôle (par exemple zdtVehicule) et ensuite menu Format>Mise en forme conditionnelle…
xxxxxxxxxx
7. Reste à faire
Définir les règles de validité des champs des tables.
Ne déclencher l’ajout que si tous les champs nécessaires sont complétés.
Si quelque chose t'échappe, pose la question : c'est que j'ai mal expliqué.
Bon travail et à bientôt.
Partager