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 :

[AC 2010] Problème structure base de données


Sujet :

Access

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 5
    Points : 4
    Points
    4
    Par défaut [AC 2010] Problème structure base de données
    Bonjour,

    J'ai un problème dans ma base de données. Je possède 2 tables :
    -une table EMPLOYES avec pour champs : Id, Nom, Prénom, E-mail (que j'ai crée avec les personnes de l'entreprise)
    -une table COMMANDES avec pour champs : IdEmployesTache1, DatePrevuFinTache1 , IdEmployesTache2, DatePrevuFinTache2 ( que je récupère d'un logiciel )
    (par exemple, lorsqu'on reçoit une commande, l'employé numéro 5 doit faire la tâche 1 puis l'employé numéro 8 doit faire la tâche 2 avant les dates de fin prévues)

    Je dois récupérer (par exemple grâce à une requête) l'e-mail de l'employé affecté à la tâche 1 si la date de fin prévu pour la tâche 1 est passée et pareil pour la tâche 2 ( et aussi les 2 e-mail si les 2 tâches sont en retard). Voici la structure de ma base avec les relation entre Id et IdEmployesTache1 puis entre Id et IdEmployesTache2

    Nom : Capture.PNG
Affichages : 193
Taille : 7,4 Ko
    J'ai réussi à créer une requête qui me trouve bien les tâches en retard et l'e-mail de l'employé de la tâche 1 (mais pas celui de l'employé de la tache 2) lorsque je ne met que la première relation mais des que je met les 2 relations ça ne marche plus, je n'ai plus aucun résultat.

    Comment faire ?
    Merci d'avance

  2. #2
    Expert confirmé Avatar de jerome.vaussenat
    Homme Profil pro
    Formateur Bureautique
    Inscrit en
    Janvier 2011
    Messages
    1 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur Bureautique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 629
    Points : 4 299
    Points
    4 299
    Par défaut
    Salut,

    C'est dû au paramétrage de ta relation DANS LA REQUETE.

    Elle doit ne faire afficher que les enregistrements qui sont en relation.
    Du coup, si tu as un enregistrement qui a un employé1 mais pas d'employé2, l'enregistrement ne s'affiche pas.

    Pour résoudre le pb.
    Ouvre ta requête en modification
    Met en place la relation empoyé2 si nécessaire.
    Fait un double clic sur le trait représentant la relation et dans la boîte de dialogue choisis l'option 2 ou 3 selon ce que tu vois et souhaites.

    En espérant que cela correspond à ce que tu veux faire et te permettras d'avancer
    Jérôme

    " Je pense donc je suis. Tu es donc j'apprends ". (GCM)

    Si ce message vous à aidé, merci de cliquer sur . Si ce message est résolu, cliquez sur .

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Re,

    Merci mais je ne pense pas que c'est le type de jointure qui me fait buguer, c'est plutôt que je lui demande d'afficher des champs (Email, nom,...) de deux enregistrements (Employés 5, Employés 8) différents de la table Employes en fonction d'un enregistrement de la table Commandes.

    Quand j'ai modifié le type de jointure, j'avais les informations concernant la commande mais les champs de la table employés dans la requête étaient vides.

  4. #4
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Bonjour vous deux,

    Une proposition :






    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Commandes.CommandesPK, IIf(Date()>[DatePrevuFinTache1],[Employes].[eMail],"-") AS RetardTache1, IIf(Date()>[DatePrevuFinTache2],[Employes_1].[eMail],"-") AS RetardTache2
    FROM Employes INNER JOIN (Employes AS Employes_1 INNER JOIN Commandes ON Employes_1.id = Commandes.idEmployesTache2) ON Employes.id = Commandes.idEmployesTache1
    WHERE (((IIf(Date()>[DatePrevuFinTache1],[Employes].[eMail],"-"))<>"-")) OR (((IIf(Date()>[DatePrevuFinTache2],[Employes_1].[eMail],"-"))<>"-"));
    Fichiers attachés Fichiers attachés
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  5. #5
    Membre habitué
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Novembre 2009
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2009
    Messages : 97
    Points : 131
    Points
    131
    Par défaut
    Salut TOROP,

    A mon avis, la solution est simplement de faire 2 requêtes quasi identique.

    La première récupère l'e-mail de l'employé affecté à la tâche 1 si la date de fin prévu pour la tâche 1 est passée:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT EMPLOYES.[E-mail]
    FROM COMMANDES INNER JOIN EMPLOYES ON COMMANDES.IdEmployesTache1 = EMPLOYES.id
    WHERE (((COMMANDES.DatePrevuFinTache1)<Now()));


    La seconde récupère l'e-mail de l'employé affecté à la tâche 2 si la date de fin prévu pour la tâche 2 est passée:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT EMPLOYES.[E-mail]
    FROM COMMANDES INNER JOIN EMPLOYES ON COMMANDES.IdEmployesTache2 = EMPLOYES.id
    WHERE (((COMMANDES.DatePrevuFinTache2)<Now()));

    Pour tester, il te suffit de créer deux requêtes vierges dans lesquelles tu colles ces codes en mode SQL.
    Labor omnia vincit improbus (Un travail opiniâtre vient à bout de tout)


    Vous vous posez une question? Quelqu'un se l'est certainement posée avant vous!
    Avant de poster, n'oubliez pas de consulter les FAQ Access et VBA ainsi que les tutoriels.
    Utilisez le champ de recherche sans modération pour fouiller les forums.

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Merci à tous pour vos solutions !

    J'avais pensé à cette solution ClaudeLELOUP mais mon problème est que j'ai une dizaine de tâches (je n'en ai mis que 2 parce que le principe sera le même) mais du coup ça fera beaucoup de tables et en plus celles-ci sont susceptibles d'évoluer (si on ajoute un employé).

    Pour la solution de mc.schmer, c'est actuellement ce que j'essaie de faire; mais j'aurais bien aimé avoir tout dans une requête car après à partir de cette requête j'envoi un mail automatique à l'employé avec les commandes où ils sont en retard et pour quels tâches. En une requête ça se faisait assez bien mais si je dois faire une dizaine de requête et les parcourir pour concaténer les tâches à faire pour toutes les commandes en retard, c'est compliqué... Mais si il n'y a pas d'autres solutions, c'est ce que je ferais

  7. #7
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Ici, le temps est à la pluie...

    Si tu postes une db exemple en version Access2000 avec des données pour toutes les colonnes (par exemple dans le fichier que j'ai joint), je te proposerai une sous-routine qui te créera la table ad hoc pour envoyer tes e-mails.
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutants]Analyse structure base de données simple
    Par Serge57 dans le forum Sondages et Débats
    Réponses: 41
    Dernier message: 29/10/2007, 18h54
  2. Problème conexion base de données MSSql DBE
    Par kaouane dans le forum Bases de données
    Réponses: 4
    Dernier message: 28/05/2006, 12h40
  3. Réponses: 3
    Dernier message: 27/04/2006, 15h21
  4. Problème accès base de données
    Par alainconnu dans le forum Outils
    Réponses: 3
    Dernier message: 27/04/2006, 09h31
  5. Problème Update Base de données avec les composants ADO
    Par lingli dans le forum Bases de données
    Réponses: 5
    Dernier message: 20/04/2006, 00h41

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