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

Modélisation Discussion :

[A-03] Gestion des relations multiples


Sujet :

Modélisation

  1. #1
    Candidat au Club
    Inscrit en
    Novembre 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 13
    Points : 3
    Points
    3
    Par défaut [A-03] Gestion des relations multiples
    Bonjour a tous et merci pour votre visite,

    Voile je dois conduire un ptit projet qui consiste a metter en place un outil de pricing sous access.
    Une fois developpe, il doit permettre d effectuer une quotation en quelques clics car toutes les informations de prix y figureront.

    desole pour les accents, jecris depuis tokyo et mon clavier nest pas pratique du tout.

    voila mon probleme =

    j ai cree une table appelee DESTINATION
    Il sagit dune liste exhaustive des points de livraisons et de depart deservis par la compagnie.

    jai une deuxieme table denommee TRANSPORT ID
    je voudrais y faire figurer
    - 5 points de depart
    - 1 point darrivee
    - le nom du commercial affecte

    LE tout doit creer un nouvel ID = TRANSPORT ID


    En effet, le prix du transport va varier suivant le point darrivee mais aussi le commercial qui va leffectuer. aussi, les 5 points de depart sont presentes comme un choix pour mon client.

    Donc le probleme =
    jai une table avec un ID unique pour mes destinations
    OR
    ma table transport requiert 6 fois cet ID = 5 pour les points de depart et 1 pour le point darrivee
    DONC
    je ne peux pas creer de lien avec option dintegrite entre les deux tables

    Dans ce cas de figure, comment dois je proceder ? cest a dire si jai un ID unique en cle primaire dans un table, et que dans la deuxieme je dois exploiter cet ID plusieurs fois ?

    Je suis debutant soyez indulgents. La version est access 2003

    Merci infinimment pour votre aide





    Jai mis le visuel en piece jointe
    merci encore
    Fichiers attachés Fichiers attachés

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut
    Bonjour et bienvenue à toi,

    Citation Envoyé par Helder_Tokyo Voir le message
    Donc le probleme =
    jai une table avec un ID unique pour mes destinations
    OR
    ma table transport requiert 6 fois cet ID = 5 pour les points de depart et 1 pour le point darrivee
    DONC
    je ne peux pas creer de lien avec option dintegrite entre les deux tables

    Dans ce cas de figure, comment dois je proceder ? cest a dire si jai un ID unique en cle primaire dans un table, et que dans la deuxieme je dois exploiter cet ID plusieurs fois ?
    Dans Access 2000 (que j'utilise) il est tout a fait possible de créer N relations entre 2 tables avec application de l'intégrité référentielle pour chacune d'elles.
    Dans 2003 c'est pareil.

    D'où vient l'image que tu nous as jointe: de la fenêtre des relations ou alors d'une requête ?
    _

  3. #3
    Candidat au Club
    Inscrit en
    Novembre 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 13
    Points : 3
    Points
    3
    Par défaut N relation avec integrite...suite
    Bonjour JBO, merci pour la rapidite de cette reponse.
    avec le decallage horaire jesperais pas vous lire aussi vite

    alors voila une description sommaire du resultat que je souhaite obtenir.

    j organise des transports commerciaux - appeles freight - et nos commerciaux doivent faire des devis pour nos clients.

    le prix de la prestation, soit le devis, depend des variables suivantes
    - la destination
    - la compagnie de transporteur sollicitee - on se contente dorganiser, on ne transporte pas mais on sous traite a des compagnies
    - en precision, et meme si cela naffecte pas le prix, je dois aussi preciser quelles sont les villes de departs pour le chargement des marchandises - cela dependra de la destination et de la compagnie de transport aussi.

    jessaye de creer un outil qui puisse me permettre de referencer toutes les compagnies dans une base avec leurs tarifs. je pourrais ainsi obtenir rapidement des devis et comparer les prix.

    donc actuellement jai fait une base de donnee qui reunit toutes les places de chargement et de livraison. chaque lieu est dote dun code unique grace a la clef primaire.

    jai aussi une table COMPAGNIE qui me renseigne sur les transporteurs avec lequels je travaille.

    je voudrais donc trouver le moyen de structurer ces donnes pour que je puiss affecter la requete suivante =
    1. je precise mon lieu de destination

    2. il maffiche toutes les compagnies qui desservent ce lieux de destination avec leur tarif

    3. il maffiche les endroits de chargement possible par compagnie.

    merci pour votre aide, cest vraiment sympa

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut Quelques précisions STP
    Bonjour Helder_Tokyo,

    Merci d'avoir encore précisé ton besoin, cela permettra à qui veut bien de mieux t'aider.

    Je me permets d'insérer l'image de ton schéma de base de données actuel (j'espère que tu ais d'accord, sinon dis le moi par MP).

    Ainsi, il sera plus facile à chacun de l'analyser et de t'apporter une aide.



    Si je comprends bien, tu voudrais associer jusqu'à 5 points de chargement (pol) pour un même couple <chargeur,destination> (concrétisé par la table shipper_destination).
    De prime abord, je te dirai d'utiliser une table intermédiaire pour les associer (c'est plus propre, moins restrictif et plus facile à interroger).

    Mais je ne suis pas certain de tes intentions. Alors il va falloir que tu sois très précis (normal ).

    Peut-on dire que les points de chargement (pol) proposés par le transporteur (Shipping_line) sont étroitement liés à la destination (pod) ?
    Ou alors (à l'opposé), le transporteur propose toujours tous les points de chargement, quelle que que soit la destination ?

    Autre chose, d'après ton schéma, le prix du transport varie selon le couple <chargeur,destination> et le type de conteneur/marchandise (ctn): le point de chargement n'a-t-il pas de conséquence sur la fixation du prix ?

    Merci de tes réponses.

    P.S. Quel est le décalage horaire entre la France métropolitaine et le Japon (Tokyo) ?
    _

  5. #5
    Candidat au Club
    Inscrit en
    Novembre 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 13
    Points : 3
    Points
    3
    Par défaut Probleme solutionne
    BOnjour JBO

    Merci pour ton intervention.

    Alors je crois avoir mal compris le fonctionnement daccess des le debut. mais cette idee de table intermediaire m a permis de realiser le fonctionnement dun systeme de BDD.

    Du coup jai tout efface pour tout recreer

    Je mets limage en piece jointe car je ne sais pas comment linclure sur ce post.

    En resume - jai cherche a reunir au sein dune meme table toute les infos necessaire a letablissement dun devis
    - lieu de depart
    - lieu de destination
    - compagnie de transport
    ces trois indicateurs donnant naissance a un ID unique sur lequel jallais etablir definir mes prix par container.

    OR jai realise que finalement le prix ne dependait, a la source, que de ma destination et de ma compagnie.
    jai donc cree un table A intermediaire avec ces deux elements.
    jai ensuite cree un table B pour les lieux de depart valable pour chaque identifiant creer en table A
    enfin jai une table C avec les prix pour chaque ID de la table A

    Et ca marche!!!!!

    Mon souci concerne desormais la saisie des informations grace au menu FORM WIZARD. Jai besoin de creer un module avec plusieurs subforms qui seront a chaque fois rattache a la table mere A.

    Enfin,....

    Je mets limage en PJ et reste disponible si le sujet necessite quelques eclaircissements, pour les interesses

    Bonne journee a tous.

    PS ' est-il possible de creer un formulaire de saisie avec plusieurs sous formulaire ?
    Images attachées Images attachées  

  6. #6
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut
    Bonjour,

    Citation Envoyé par Helder_Tokyo Voir le message
    Alors je crois avoir mal compris le fonctionnement daccess des le debut. mais cette idee de table intermediaire m a permis de realiser le fonctionnement dun systeme de BDD.

    Du coup jai tout efface pour tout recreer

    Je mets limage en piece jointe car je ne sais pas comment linclure sur ce post.


    Citation Envoyé par Helder_Tokyo Voir le message
    En resume - jai cherche a reunir au sein dune meme table toute les infos necessaire a letablissement dun devis
    - lieu de depart
    - lieu de destination
    - compagnie de transport
    ces trois indicateurs donnant naissance a un ID unique sur lequel jallais etablir definir mes prix par container.

    OR jai realise que finalement le prix ne dependait, a la source, que de ma destination et de ma compagnie.
    jai donc cree un table A intermediaire avec ces deux elements.
    jai ensuite cree un table B pour les lieux de depart valable pour chaque identifiant creer en table A
    enfin jai une table C avec les prix pour chaque ID de la table A

    Et ca marche!!!!!
    La question que je me posais porte sur les lieux de départ et leur relation directe avec le lieu de destination comme tu le décris dans ton schéma ci-dessus.

    Existe-t-il vraiment une telle dépendance ? (il va falloir lister les lieux de départ pour chaque destination desservie par la compagnie de transport).
    Ainsi ton schéma répond à la question:
    Pour une destination donnée, quels sont les lieux de chargements desservis par la compagnie de transport ?

    Ne serait-ce pas plutôt une relation entre lieux de départ et compagnie de transport ? (que la destination soit X ou Y, les lieux de départ sont toujours les mêmes)
    Ainsi, le schéma répondrait aux questions:
    (a) quels sont les lieux de départ desservis par la compagnie de transport ?
    (b) quels sont les lieux de destination desservis par la compagnie de transport ?

    Et puis je préférais quand lieux de départ et destination sont dans la même table.

    Donc je te fais le schéma qui explique ma pensée, qu'en penses-tu ?



    Citation Envoyé par Helder_Tokyo Voir le message
    Mon souci concerne desormais la saisie des informations grace au menu FORM WIZARD. Jai besoin de creer un module avec plusieurs subforms qui seront a chaque fois rattache a la table mere A.
    [...]
    PS ' est-il possible de creer un formulaire de saisie avec plusieurs sous formulaire ?
    Oui pour la possibilité d'avoir n sous-formulaires dans un formulaire.

    Mais je ne suis pas sûr que ce soit ce qui convient.
    Là, comme ça, je verrais plutôt des listes dans un formulaire.

    Et puis, avant de créer ton formulaire, valide ton schéma de base de données en répondant à mes questions.

    Merci.
    _

  7. #7
    Candidat au Club
    Inscrit en
    Novembre 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 13
    Points : 3
    Points
    3
    Par défaut Suite...
    Bonjour JBO

    Merci pour ce suivi !

    Je suis assez surpris de voir ta comprehension du sujet malgre le peu dinformations delivrees.

    Malheureusement sur ce projet rien nest fait pour me simplifier la vie. ainsi, les compagnies de transport nauront pas les memes lieux de chargements suivants la destinations.

    Ex. mon transporteur MSC va me proposer de livrer depuis Tokyo si je me rends en Europe. En revanche il me proposera Yokohama si je souhaite livrer a Dallas !

    Il sagit decceptions mais je souhaite que ma base soit compatible avec toutes ces variables, des la conception de son architecture.

    Donc ma solution etait de creer un identifiant unique par compagnie et port de livraison - ensuite, je peux y rattacher les port de chargements disponibles.

    Javais ainsi penser faire un formulaire de saisie sous la forme suivante =

    1. Je choisis mon transporteur
    2. Je choisis le port de livraison
    3. je selectionne les ports de chargements - pour faire simple il faudrait que je puisse cocher les ports de chargement disponible sur une liste
    4. je rentre dans un subform mes tarifs par categories de container.
    5. je valide... et les infos sont automatiquement dispatchees dans leur base respective.

    A CE STADE

    Jai donc un ID unique qui correspond a
    - un transporteur
    - un port de destination

    Je ne parviens pas a plugger mes infos de destinations. Jai donc formuler un petit probleme avec une image, le doc est en PJ.

    Mille merci pour toute cette aide!
    Fichiers attachés Fichiers attachés

  8. #8
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut
    Bonjour Helder_Tokyo,

    Dans la pièce jointe de ton dernier message:

    Citation Envoyé par Helder_Tokyo
    Si vous regarder la pièce jointe, vous apercevez =
    - une table centrale Pod per SL
    - une table secondaire loading per discharge

    Le reste n’est pas important a ce stade

    Je voudrais créer un lien double entre ces deux tables, avec intégrité.
    - de loading PodSL vers loading PodSL
    - de Pod SL ID vers Pod SL ID

    Or Access refuse de créer le deuxième lien. Pourriez vous me donner quelques éclaircissements ?
    Si je traduis ça de façon concrète.

    Dans ma table LOADING PER D… J’ai besoin de l ID de la table 1 Pod per SL
    A cet ID j’ajoute une table POD ID, j’ai ainsi deux éléments qui donnent naissance a un nouvel ID loading Pod per SL

    Je dois désormais retourner cet ID dans la table initiale 1 POD PER SL.
    Mais je ny arrive pas…

    Merci de votre aide !


    Non, je pense que tu fais fausse route, cette double relation ne se justifie pas.
    Seule la relation sur le champ clé Pod_SL_ID est utile.
    D'ailleurs, je ne vois pas pourquoi tu mets le champ loading_PodSL dans la table Pod_per_SL.

    En fait, une bonne manière de valider un schéma de base de données est de poser toutes les questions auxquelles on veut pouvoir répondre (par exemple quels sont les lieux de chargements possibles, pour telle destination si je fais appel à tel transporteur) et puis lire le schéma pour vérifier si son organisation permet de répondre à la question.

    A quelle "question métier" répondrait cette deuxième relation sur le champ clé loading_PodSL ?
    _

  9. #9
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut
    En ce qui concerne ton formulaire (tes formulaires ),

    Citation Envoyé par Helder_Tokyo Voir le message

    Javais ainsi penser faire un formulaire de saisie sous la forme suivante =

    1. Je choisis mon transporteur
    2. Je choisis le port de livraison
    3. je selectionne les ports de chargements - pour faire simple il faudrait que je puisse cocher les ports de chargement disponible sur une liste
    4. je rentre dans un subform mes tarifs par categories de container.
    5. je valide... et les infos sont automatiquement dispatchees dans leur base respective.
    Un unique formulaire qui ferait tout ça (avec des sous-formulaires, des listes etc.) n'est pas simple à développer, mais tout est possible.

    Un conseil:
    s'il s'agit d'un outil pour toi seul ou quelques collaborateurs proches, tu ferais bien d'envisager plusieurs formulaires "simples" pour renseigner ta base de données.
    - créer/modifier les lieux de chargement et destination (tables zone + pod_pol)
    - créer/modifier un transporteur (table Shiping_line)
    - créer/modifier les destinations desservies par un transporteur, avec pour chaque destination :
    __ (1) un formulaire pour gérer la liste des lieux de chargement,
    __ (2) un formulaire pour gérer la liste des coût par type de container (base_rate + ctn).

    Pourquoi ?
    C'est plus facile et plus rapide à développer. Il y aura même assez peu de programmation si tu utilises des index qui rendent impossible les saisies erronées de doublons.
    Le côté "bof" de cette approche, c'est qu'il faut gérer une "navigation" d'un formulaire à l'autre, et qu'on ne voit pas toute l'information d'un seul coup d'œil (dans une unique fenêtre).

    En fait, tout dépend du temps dont tu disposes, de ton niveau de compétence, et du "niveau" des utilisateurs ou de leurs exigences.
    _

  10. #10
    Candidat au Club
    Inscrit en
    Novembre 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 13
    Points : 3
    Points
    3
    Par défaut suivi
    bonjour JBO

    jai redige un message hier, moyennement long avec pj, mais je ne le trouve pas sur la discussion.

    penses-tu quil ait ete efface ?

    jexpliquais avoir suivi tes recommandations, avec un nouveau schema cette fois que je glisse en pj au cas ou.

    jai une question au passage. lorsque je fais un etat, jaffiche toutes les colonnes de chaque table. est-il possible de creer un etat qui repond a certains criteres precis. ex- dans la table 1, je veux que tu me fasse une extraction de toutes les donnees concernant pierre, au lieu de me sortir les donnees de tout le monde.
    comme une requete finalement...

    arigato gozaimasu
    Images attachées Images attachées  

  11. #11
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut
    Bonjour Helder_Tokyo,

    Apparemment ton message précédent s'est perdu en route.

    Toujours est-il que ton nouveau schéma me semble très bien.

    Citation Envoyé par Helder_Tokyo Voir le message
    jai une question au passage. lorsque je fais un etat, jaffiche toutes les colonnes de chaque table. est-il possible de creer un etat qui repond a certains criteres precis. ex- dans la table 1, je veux que tu me fasse une extraction de toutes les donnees concernant pierre, au lieu de me sortir les donnees de tout le monde.
    comme une requete finalement...
    Tu viens de le dire: "comme une requête" !

    Un état (tout comme un formulaire) est basé sur une source de données.
    Cette source de données est, au choix:
    * une table,
    * une requête

    Donc tu peux déjà utiliser une requête, ce qui implique la possibilité de définir les critères de sélection que tu souhaites.

    Mais ce n'est pas tout.
    L'état peut être ouvert avec un filtrage supplémentaire sur sa source de données.

    Dans Access (cf. aide en ligne), la commande VBA pour ouvrir un état est donnée ci-dessous, où le paramètre conditionWhere permet d'ajouter un critère de sélection supplémentaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenReport nométat[, affichage][, nomfiltre][, conditionwhere]
    Imaginons un état appelé "FinalReport", dont la source de données comporte un champ NomPersonne sur lequel nous voulons filtrer l'état pour ne conserver que les enregistrements tels que: NomPersonne = 'Pierre'

    Voici le code pour ouvrir un état filtré, en mode aperçu avant impression (acViewPreview):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenReport "FinalReport", acViewPreview, , "NomPersonne='Pierre'"
    Ce n'est pas trop compliqué.
    _

  12. #12
    Candidat au Club
    Inscrit en
    Novembre 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 13
    Points : 3
    Points
    3
    Par défaut suite
    Merci JBO !

    C'est en fait tres simple avec une requete, j'ai cree des relations avec integrite et qualifie tous mes liens ce qui me rassure sur lexactitude des resultats obtenus.

    J'aimerais pouvoir editer une page pre formatee a l'image de notre societe. Ainsi, lorsque j'effectue une requete, mon devis se creer de facon automatique.

    J'ai une autre petite demande tres importante pour ne pas passer des journees dans la saisie.

    Est-il possible de creer un formulaire de saisie avec un sous formulaire sur une seule et unique table ?

    Je m'explique, j'ai un formulaire qui me permet de saisir les infos suivantes au sein d'une seule table :
    - port de destination
    - type de container
    - prix

    A chaque fois je dois saisir le port, une seule categorie, et un seul prix !
    Or je voudrais saisir le port, puis dans un subform creer autant de lignes necessaires pour les differents types de container et leur prix respectif

    Attention cependant. Je sais que tu es tente de me faire reference a differentes tables. Or dans ce cas particulier je ne peux pas.

    Peut-on creer un formulaire avec un subform pour une seule et unique table ?

    Mille merci JBO, je t'envois l'image de mon schema finalisee. Je pense que je n'ai pas bien gerer les relations avec les tables OTHC, CAF RATE et BAF ID

    Qu'en penses tu ?

  13. #13
    Candidat au Club
    Inscrit en
    Novembre 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 13
    Points : 3
    Points
    3
    Par défaut quelques precisions
    JBO,

    SI tu regarde le schema que je viens de poster, tu vas T'apercevoir que je centralise toutes mes informations de quotation grace a la cle FREIGHT_ID.

    J'ai ainsi une cle qui me dit :
    - 1 transporteur
    - 1 zone
    - 1 destination

    J'affecte a cela mes informations de prix, mes charges etc.

    Or la ou ca bloque c'est au niveau des trois tables situees sur la droite.
    J'aurais voulu pouvoir utiliser le freight_ID mais ici ca ne va pas.

    En effet, il S'agit de tables pre renseignees et non pas de tables que je vais remplir moi meme. Par exemple, la Baf qui est une charge se calcul suivant la shipping line, la zone de livraison et le type de container.
    Je veux donc creer une relation du genre :
    CHercher dans la table BAF la valeur pour laquelle :
    - le transporteur = choupi
    - le container = 20 pouces
    - la zone = afrique

    Il va donc chercher l'information qui match avec le freight ID, mais en aucun cas je ne vais saisir une nouvelle info.

    Le systeme que je t'envoi marche, mais j'ai peur qu'il cache quelques vices

    Merci chef !

Discussions similaires

  1. Gestion des relations
    Par jcaspar dans le forum Modélisation
    Réponses: 1
    Dernier message: 01/10/2007, 10h07
  2. [mcd]héritage pour gestion des relations
    Par jmarco dans le forum Schéma
    Réponses: 5
    Dernier message: 17/07/2007, 15h31
  3. [PHPMyAdmin] Gestion des relations chez Free
    Par grenoult dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 21/12/2006, 18h56
  4. Réponses: 2
    Dernier message: 22/07/2005, 12h06

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