IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

Presentation des donnees


Sujet :

Access

  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 14
    Points : 8
    Points
    8
    Par défaut Presentation des donnees
    Bonjour,
    la companie qui m embauche me demande de gerer un calendrier pour gerer les ressources humaines sous access. Je m explique: les employes ont plusieurs fonctions, et de semaine en semaine leur fonction change (ou si une personne est malade, en vacance, etc ...). Leur probleme est qu un departement prevoit un travail pour un employe, un autre pour le meme employe, donc il y a conflicts, donc problemes, donc perte d argent. De meme un departement prevoit des fois quelque chose pour quelqu un qui est en vacance, car au passage rien n est informatise ou je travaille (c est pour ca que je suis la).
    Le principe est donc simple, une table contenant

    IdEmployee
    IdFunction
    Date

    Avec comme cle primaire IdEmployee et Date comme ca il ne peut plus y avoir conflit. Mon probleme est de presenter cette table dans un formulaire pour que TOUT LE MONDE (meme les nons initie info et pas tres fufute) puisse ajouter leur nom pour un certain jour pour une certaine fonction. J ai donc choisit la vue calendrier (piece jointe, en anglais car je bosse en angleterre, mais c est pas difficile a comprendre) qui me parait tres tres simple. Les cases vides serviront a mettre le nom des employes. J aimerai de plus une liste deroulante qui choisit les employees en fonction de leur fonction.

    Ma question est donc, avez vous la moindre idee de comment achever ca ? En gros quand on choisit un employe, cela affecte automatiquement les valeur du titre de la colonne (Date) dans Date et le titre de la fonction (IdFunction) dans les champs correspondant. Je n ai pas peur d attaquer ca en VBA

    Merci d avance pour vos suggestion
    PS: SVP pas de change de SGBD, je dois integrer cela a un preexistant
    Images attachées Images attachées  

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Vite comme cela je vois dexu approches :

    La plus simple pour la prog mais tu vas avoir pas mal de travail au niveau des requètes c'est de faire une table non normalisée avec 1 enr par semaine et des champ (Lun à Dim). Comme cela tu peux utiliser tous les méchanismes d'Access.

    La seconde c'est de faire un forms avec des cases qui affiche les données d'un enr (date, personne) et de gérer la mise à jour de la table par code. Le pb c'est la gestion des conflits, si deux personnes modifie le même enr tu ne le saura qu'à la sauvegarde.

    A+

  3. #3
    Expert éminent

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Points : 9 197
    Points
    9 197
    Par défaut
    Une requête analyse croisée, ca ne te conviendrait pas ?
    Tu n'as qu'à afficher une semaine au choix, et le tour est joué !

  4. #4
    Futur Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 14
    Points : 8
    Points
    8
    Par défaut
    Merci a vous deux pour vos reponses, mais j ai peur de ne pas saisir ce que vous dites, faut que je cogite un peu dessus. Ca a l air tres bien et tres facile a faire (pour la reponse de maxence) apparement mais je ne saisi pas ...

    Bon je vais deja me renseigner sur ce qu est une requete croisee (honte a moi je ne crois pas avoir utiliser ca pour le moment !) et continuer cette discusion apres si je n arrive pas a faire fonctionner tout ca.

    En tout cas merci pour les idees, n hesiter pas a me donner plus d indications si vous avez un peu plus de temps.

    Tom

  5. #5
    Futur Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 14
    Points : 8
    Points
    8
    Par défaut
    Voila donc j ai regarde les requetes d analyse croisee, ca a l air d etre ce que je veux, mais je n ai aucun resltats qui resort de tout ca. J utilise le wizzard d access et il me pond ce code:

    TRANSFORM Var(Schedule.IdEmpl) AS VarOfIdEmpl
    SELECT Schedule.IdFunction
    FROM Schedule
    GROUP BY Schedule.IdFunction
    PIVOT Format([Date],"Short Date");

    Ma Table Schedule contient ces donnees:

    IdEmpl Date IdFunction
    9 28/07/2006 1
    9 29/07/2006 1
    9 30/07/2006 1
    10 28/07/2006 2
    10 29/07/2006 2
    10 30/07/2006 2
    11 28/07/2006 3
    11 29/07/2006 3
    11 30/07/2006 3
    12 28/07/2006 5
    12 29/07/2006 5
    12 30/07/2006 5
    13 28/07/2006 6
    13 29/07/2006 6
    13 30/07/2006 6

    Est ce normal ???

    Tom

  6. #6
    Expert éminent

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Points : 9 197
    Points
    9 197
    Par défaut
    Il te manque le N°Semaine.
    Tout dépend comment tu compte les semaines, mais, au pire, tu peux te faire la petite fonction suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function NoSemaine(d As Date) As Long
        NoSemaine = DatePart("ww", d, vbMonday, vbFirstFourDays)
    End Function
    Après, avec ce code, tu devrais avoir quelque chose de pas mal, pourtant...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    TRANSFORM First(IdEmpl) AS PremierDeIdEmpl
    SELECT nosemaine([date]) AS Week, IdFunction
    FROM Schedule
    GROUP BY nosemaine([date]), IdFunction
    PIVOT Format([Date],"dddd") 
    In ("Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi","Dimanche");
    Ca te fais pas ce que tu veux ça ?
    Si jamais tu n'obtiens pas ton bonheur, explique le pourquoi du comment !

  7. #7
    Futur Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 14
    Points : 8
    Points
    8
    Par défaut
    Re,
    Bon j ai mis longtps a repondre mais je viens seulement aujourd hui de me repencher sur le sujet. J ai changer les regles, en tete de ligne j ai les employees et en tete de colonne j ai la date. La fonction est donc au croisement d un employe et d une date (un employee a une fonction a une date precise). Bref j ai fait ma propre requete analyse croisee et tout a l air de fonctionner SAUF ....

    Je vous donne la sous structure de la base

    Employee(IdEmployee,Name,Surname,...)
    WorkAs(IdWorkAs,IdEmployee,IdFunction)
    Function(IdFunction,NameFunction,...)
    Planing(IdPlaning,IdEmpl,IdFunction,DatePlaning)

    En gras c est les cle primaire.

    Ma requete croisee est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    TRANSFORM First(Planing.IdFunction) AS PremierDeIdEmpl
    SELECT Employee.Name, Employee.Surname
    FROM Planing, Employee, Function, WorkAs
    WHERE Planing.IdEmpl=Employee.IdEmpl And Planing.DatePl>=#7/31/2006# And Planing.DatePl<=#8/6/2006# And Employee.IdGroup=7
    GROUP BY Employee.Name, Employee.Surname
    PIVOT Planing.DatePl;
    Tou va bien le seul probleme c est que le resultat donne des numero de fonction au lien du nom de ces fonction. C est normal j ai choisi IdFunction dans mon TRANSFORM, j ai essayer avec Function.NameFonction et ensuite faire les jointure dans la clause WHERE mais ca me donne des betises. Et j aimerai avoir ces noms de fonction au lieu des Numero.

    Quelqu un a une idee ? Je precise j ai deja cherche sur le forum et rien !

    Tom

Discussions similaires

  1. Select et presentation des donnees
    Par wanagro dans le forum Langage SQL
    Réponses: 2
    Dernier message: 26/10/2007, 12h36
  2. [Oracle 8i] Présentation des données par lignes
    Par simof1977 dans le forum Langage SQL
    Réponses: 11
    Dernier message: 10/05/2006, 18h42
  3. Comment inserer des donnee de type Large Object !!
    Par josoft dans le forum Requêtes
    Réponses: 4
    Dernier message: 20/07/2003, 11h21
  4. [] Impression des donnees sur etiquettes
    Par der dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 03/12/2002, 15h43
  5. importer des donnees dans interbase
    Par ms91fr dans le forum InterBase
    Réponses: 3
    Dernier message: 25/11/2002, 17h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo