IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Voir le flux RSS

User

Créer un semainier à partir d'une requête paramétrée

Noter ce billet
par , 25/10/2014 à 16h00 (1477 Affichages)
Objectif

On souhaite afficher les activités de personnes sur 1 semainier et on a besoin pour cela de 2 tables:

La table "T_Personne" avec le numéro de la personne et son nom :

  • NumPersonne : type Entier long (clé)
  • NomPersonne : type Texte



Et la table "T_Planning" contenant 10 champs :

  • NumPersonne : type Entier long (clé)
  • Annee : type Entier (clé)
  • NumSemaine : type Entier (clé)
  • Lundi : type Texte
  • Mardi : type Texte
  • Mercredi : type Texte
  • Jeudi : type Texte
  • Vendredi : type Texte
  • Samedi : type Texte
  • Dimanche : type Texte



Pour atteindre notre objectif, on va réaliser une requête paramétrée avec en lignes les informations concernant les personnes, en colonnes les jours de la semaine, et à l'intersection les activités.

Cette requête sera alors facilement exploitable comme source d'un formulaire.

Marche à suivre

1) Création de la requête paramétrée

L'étape suivant consiste à créer une requête "R_Plan", basée sur la table "T_Planning", qui affiche les activités des jours de la semaine identifiée par les paramètres [Forms]![F_Planning]![Annee] et [Forms]![F_Planning]![NumSemaine], qui sont en fait des références aux contrôles situés sur le formulaire "F_Planning" :

Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
PARAMETERS  [Forms]![F_Planning]![Annee]  Value, [Forms]![F_Planning]![NumSemaine] Value; 
SELECT NumPersonne, Annee, NumSemaine, Lundi, Mardi, Mercredi, Jeudi, Vendredi, Samedi, Dimanche 
FROM T_Planning 
WHERE ((Annee=[Forms]![F_Planning]![Annee]) AND (NumSemaine=[Forms]![F_Planning]![NumSemaine]));


2) Afficher toutes les personnes

Cette étape consiste à afficher toutes les personnes en en-têtes de lignes, y compris celles qui n'ont pas eu d'activité au cours de la période. On crée donc une requête "R_Planning" basée sur la table "T_Personne" et sur la dernière requête "R_Plan" et qui réalise une jointure gauche entre la table "T_Personne" et la requête "R_Plan" sur le champ "NumPersonne" :

Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
SELECT T_Personne.NumPersonne, T_Personne.NomPersonne, R_Plan.* 
FROM T_Personne LEFT JOIN R_Plan ON T_Personne.NumPersonne = R_Plan.NumPersonne 
ORDER BY T_Personne.NumPersonne;

3) Création du sous-formulaire "SF_Planning"

Ce formulaire en mode continu ou feuille de données possède comme source la requête "R_Planning".
Il affiche en ligne les personnes et en colonnes les jours de la semaine.
Il est intégré au formulaire principal.

Pour mettre à jour les champ [Annee] et [NumSemaine] on ajoutera, sur l'évènement <strong>Avant MAJ</strong>, le code suivant :

Code vba : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
Private Sub Form_BeforeUpdate(Cancel As Integer) 
[Annee] = Forms!F_Planning!Annee 
[NumSemaine] = Forms!F_Planning!NumSemaine 
 
End Sub

4) Création du formulaire principal "F_Planning"

Ce formulaire contiendra, en plus du sous-formulaire, les contrôles (zones de texte ou listes déroulantes) nommés "Annee" pour l'année, et "NumSemaine" pour le numéro de semaine.
On ajoutera une commande pour rafraichir le sous formulaire sur l'évènement <strong>Après MAJ</strong> des 2 contrôles :

Code vba : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
Private Sub Annee_AfterUpdate() 
Me!SF_Planning.requery 
End Sub 
 
Private Sub NumSemaine_AfterUpdate() 
Me!SF_Planning.requery 
End Sub

Conclusion

Vous pouvez facilement adapter cet exemple à votre cas en changeant au besoin les noms des champs et des contrôles.

Notez que les données peuvent être directement mise à jour sur le planning.

Envoyer le billet « Créer un semainier à partir d'une requête paramétrée » dans le blog Viadeo Envoyer le billet « Créer un semainier à partir d'une requête paramétrée » dans le blog Twitter Envoyer le billet « Créer un semainier à partir d'une requête paramétrée » dans le blog Google Envoyer le billet « Créer un semainier à partir d'une requête paramétrée » dans le blog Facebook Envoyer le billet « Créer un semainier à partir d'une requête paramétrée » dans le blog Digg Envoyer le billet « Créer un semainier à partir d'une requête paramétrée » dans le blog Delicious Envoyer le billet « Créer un semainier à partir d'une requête paramétrée » dans le blog MySpace Envoyer le billet « Créer un semainier à partir d'une requête paramétrée » dans le blog Yahoo

Mis à jour 24/04/2016 à 20h49 par LittleWhite (Coloration code)

Catégories
Sans catégorie

Commentaires