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

Requêtes et SQL. Discussion :

Besoin d'aide pour une requête non correspondance


Sujet :

Requêtes et SQL.

  1. #21
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    449
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 449
    Points : 159
    Points
    159
    Par défaut
    Bonjour à tous les 2

    Philippe j'ai testé votre idée, j'ai supprimé la relation entre chantier et T_liste_lot pour la créer directement avec T_site
    quand je crée un site, je choisis donc à chaque fois sa liste de lots

    Malheureusement j'obtiens toujours le même résultat. J'ai dû mal à saisir ce que fait access, donc je dois m'y prendre mal

    Je fais une première requête afin d'avoir tous les lots en prenant dans la table site son id_site, id_liste_lot, et dans la table lots l'id_lot et le libellé. Ce qui me donne donc tous les lots pour tous les sites:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT T_SITE.ID_CHANTIER, T_SITE.ID_SITE, T_SITE.SITE, T_SITE.ID_LISTE_LOT, T_LOT.ID_LOT, T_LOT.LIBELLE_LOT
    FROM (T_LISTE_LOT INNER JOIN T_LOT ON T_LISTE_LOT.ID_LISTE_LOT = T_LOT.N°LISTE) INNER JOIN T_SITE ON T_LISTE_LOT.ID_LISTE_LOT = T_SITE.ID_LISTE_LOT
    ORDER BY T_SITE.ID_CHANTIER, T_SITE.ID_SITE;
    Dans une nouvelle requête j'associe la table T_contrat_site et T_contrat_site_lot, T_lot pour avoir les lots utilisés. Je peux les distinguer car les lots traités sont obligatoirement liés à un montant non null (ceci pour reprendre l'idée de Micniv d'ajouter un champ "terminé", je pense que montant ht peut remplir ce rôle non ?)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT T_CONTRAT_SITE.ID_SITE, T_CONTRAT_SITE_LOT.ID_LOT, T_CONTRAT_SITE_LOT.MONTANT_HT
    FROM T_LOT RIGHT JOIN (T_CONTRAT_SITE LEFT JOIN T_CONTRAT_SITE_LOT ON T_CONTRAT_SITE.ID_CONTRAT_SITE = T_CONTRAT_SITE_LOT.ID_CONTRAT_SITE) ON T_LOT.ID_LOT = T_CONTRAT_SITE_LOT.ID_LOT;
    J'associe ces deux requetes dans une nouvelle en les liant via id_lot :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT R_TOUS_LES_LOTS.ID_SITE, R_TOUS_LES_LOTS.SITE, R_TOUS_LES_LOTS.LIBELLE_LOT, T_CONTRAT_SITE_LOT.ID_LOT
    FROM R_TOUS_LES_LOTS LEFT JOIN T_CONTRAT_SITE_LOT ON R_TOUS_LES_LOTS.ID_LOT = T_CONTRAT_SITE_LOT.ID_LOT
    GROUP BY R_TOUS_LES_LOTS.ID_SITE, R_TOUS_LES_LOTS.SITE, R_TOUS_LES_LOTS.LIBELLE_LOT, T_CONTRAT_SITE_LOT.ID_LOT;
    Mais chaque lot utilisé est associé à chacun des sites qui composent le chantier.

    Est ce que cela pourrait provenir de la présence de la T_liste_lot ?

    Je ne comprends pas pourquoi vous dites que la T_contrat_site_lot on a tous les lots d'un site ? On n'a que ceux qui ont été traités, ou je comprends mal ?

    Qu'est qu'un booleen ?


    Merci de votre aide

    Isabelle
    Isabelle
    Access version office 365
    windows 7 sous mac

  2. #22
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 399
    Points : 2 221
    Points
    2 221
    Par défaut
    bonjour,

    pour t'aider efficacement peux-tu nous passer un extrait de ta base access avec seulement tes tables et relations et avec des données bidons.

    Philippe

  3. #23
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 881
    Points : 4 758
    Points
    4 758
    Par défaut
    Je ne comprends pas pourquoi vous dites que la T_contrat_site_lot on a tous les lots d'un site ?
    Bonne remarque, Isabelle :
    auusi j'ose rectifier :
    Dans la sous-table T_contrat_site_lot, on a les lots contractualisés d'un site.
    Alors que la liste complète des lots se trouve dans la Liste_lot du chantier correspondant.
    "Always look at the bright side of life." Monty Python.

  4. #24
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    449
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 449
    Points : 159
    Points
    159
    Par défaut Envoi de la base chantier
    Bien sûr

    la voici

    merci
    Isabelle
    Access version office 365
    windows 7 sous mac

  5. #25
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 399
    Points : 2 221
    Points
    2 221
    Par défaut
    j'aurai tenté une relation comme celle-ci en ajoutant éventuellement d'autres infos dans la table liensiteslots comme la date de réalisation du lot ce qui permet de réaliser votre demande initiale a priori.

    Si quelqu'un à une meilleure idée...

    Philippe

  6. #26
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 881
    Points : 4 758
    Points
    4 758
    Par défaut
    Remarques supplémentaires :
    Un site ne peut-il pas être concerné par plusieurs chantiers simultanés ? auquel cas on aurait une relation "n to n" entre Chantiers et sites (donc sous Access, avoir une table supplémentaire de jointures) ?

    De plus en liant un chantier et une liste_lot par site on fais fi de l'historique des chantiers sur un site : est-ce ok ?

    Personnellement je ne représente jamais toutes les relations de l'application dans le diagramme relationnel : je n'y représente que le squelette de l'appli. Toutes les relations que je juge secondaires, je les construis lors de l'élaboration de chaque requête ça rend l'architecture plus lisible. Mais ceci est très personnel.
    Pour info : j'ai mis à jour la "macro-architecture" dans le message #6
    "Always look at the bright side of life." Monty Python.

  7. #27
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    449
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 449
    Points : 159
    Points
    159
    Par défaut
    Philippe,

    je ne voudrais paraître ingrate, mais c'est exactement ce que j'avais fait la première fois, lorsque vous m'avez dit que je n'obtiendrai jamais gain de cause si ma liste était liée au chantier et non pas au site !

    Je peux donc dès à présent vous dire que cela ne va pas...

    et si déplacer la liste des lots du site au chantier donne le résultat identique, je préféres garder cette solution, car l'utilisateur (c'est à dire moi en l'occurence) n'aura qu'a saisir qu'une seule fois cette info

    donc on a pas fini de chercher
    Isabelle
    Access version office 365
    windows 7 sous mac

  8. #28
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 399
    Points : 2 221
    Points
    2 221
    Par défaut
    bonjour,

    les lots sont maintenants liés aux sites par une nouvelle table (liensiteslots) dans laquelle il faut créer les enregistrements liant chaque site avec chaque lot à réaliser...

    Philippe

  9. #29
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    449
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 449
    Points : 159
    Points
    159
    Par défaut
    Mes relations initiales sont comme la miniature de Micniv #6

    Dans la fenêtre des relations proposée par Philippe, si je comprends bien, tu proposes d'ajouter encore une table entre site et lot ? ce qui m'obligerais non plus à choisir une liste mais tous les lots à pour chaque création de site, c'est bien ca ? ?

    C'est justement ce que j'ai essayé d'éviter en créant la T_liste_lot entre chantier et T_lot ???? je ne comprends pas... (La même liste est réutilisée pour plusieurs chantiers différents lorsque c'est le même client pour les mêmes produits)

    Comment est alimentée dans ce cas, l'ID_liste_lot dans la T_Chantier ? Il faut bien la relier non ?

    Micniv, non un site ne peut être concerné que par un chantier et un seul c'est pourquoi je n'ai pas lieu d'avoir un historique
    Isabelle
    Access version office 365
    windows 7 sous mac

  10. #30
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 399
    Points : 2 221
    Points
    2 221
    Par défaut
    isabelle,

    j'ai laissé la table listelot non relié pour laisser le choix du lien :
    soit avec le chantier soit avec chaque site.

    Lorsqu'un site est en cours de création, tu intercepte l'évènement de création et une petite fonction vba remplie automatiquement la table de liensiteslots en fonction du type de liste choisie soit au niveau du chantier soit au niveau de chaque site, c'est complétement transparent pour toi.

    Sans plus d'effort de ta part, chaque site aura ses propres lots.

    Philippe

  11. #31
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    449
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 449
    Points : 159
    Points
    159
    Par défaut
    bonjour Philippe

    Et en plus tu es galant, tu me laisses le choix du lien...

    Je corrige ce que j'ai dis hier, effectivement ce n'est pas tout à fait ces relations que j'avais au départ. mea culpa.

    par contre, "la petite fontion vba" dont tu parles, pour moi c'est un gros problème parce que je n'y connais rien en vba

    je pourrais avoir un petit coup de pouce ?

    merci et bonne journée
    Isabelle
    Access version office 365
    windows 7 sous mac

  12. #32
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 399
    Points : 2 221
    Points
    2 221
    Par défaut
    Isabelle,

    Ci-joint la base modifiée :
    * Ajout table T_SITE_LOT et sa relation à T_SITE.
    Elle contient une colonne Date_Realisation, si le contenu est null alors ce n'est pas réalisé et permet donc de savoir par site quels sont les lots en cours...
    * Modification du formulaire F_CHANTIER pour ajouter la sélection de la liste des lots
    * Modification du formulaire F_CREATION_SITE pour ajouter automatiquement les enregistrements dans T_SITE_LOT.

    Pour le reste des modifs, je te laisse le soin de le faire (contrats,etc...)
    pour info, Les sites créés avant la modif non pas de lots dans t_site_lot.

    Philippe

  13. #33
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    449
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 449
    Points : 159
    Points
    159
    Par défaut
    Bonsoir Philippe

    merci pour ton travail, je vais regarder plus en détail après manger

    par contre, il ne faut pas perdre de vue que ce que je voudrais obtenir est la liste des lots restants à effectuer, par conséquent il faut que la liste entière des lots non attribués appararaissent dans la zl par site et non pas les lots attribués, et qu'au fur et à mesure qu'ils sont traités, ils disparaissent.

    Je voudrais également que lorsque je crée un nouveau site, tous les lots de la liste viennent bien s'ajouter à chacun des sites (j'en ai en moyenne une quinzaine par chantier avec la même liste, je ne me vois pas attribuer les 25 lots à chacun de mes sites)
    Isabelle
    Access version office 365
    windows 7 sous mac

  14. #34
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    449
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 449
    Points : 159
    Points
    159
    Par défaut
    J'ai enfin trouvé la solution,

    il fallait bien comme tu le disais Philippe ajouter une table site lot pour que cela fonctionne

    J'ai donc changé la structure suivant des indications mais je me sers d'une table désignation (à la place de contrat pour associer les lots, les sites et les soustraitants). La tâche est moins fastidieuse de la sorte

    merci de votre aide à tous

    isabelle
    Isabelle
    Access version office 365
    windows 7 sous mac

  15. #35
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 399
    Points : 2 221
    Points
    2 221
    Par défaut
    bonjour isabelle,

    Bientôt au bout du chemin...

    Félicitation,

    Philippe

  16. #36
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    449
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 449
    Points : 159
    Points
    159
    Par défaut
    bonsoir Philippe

    heureuse de te lire à nouveau

    je me suis lancée dans le vba

    comme ci c'était déjà pas assez compliqué avant !!

    je viens de poster sur le vba, c'est fois c'est du costaud

    à bientôt
    isa
    Isabelle
    Access version office 365
    windows 7 sous mac

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Besoin d'aide pour une requête de MAJ (modif. de car.)
    Par ptitscrat dans le forum Access
    Réponses: 5
    Dernier message: 22/03/2006, 17h27
  2. besoin d'aide pour une requête
    Par lipao17 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 04/01/2006, 16h55
  3. Besoin d'aide pour une requête SQL
    Par Borami dans le forum Langage SQL
    Réponses: 1
    Dernier message: 07/11/2005, 10h33
  4. Besoin d'aide pour une Requête SQL ...
    Par Kokito dans le forum Requêtes
    Réponses: 2
    Dernier message: 07/07/2004, 11h56
  5. besoin d'aide pour une requête
    Par Damien69 dans le forum Langage SQL
    Réponses: 11
    Dernier message: 31/03/2004, 15h38

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