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 :

Demande d'avis sur mise en relation de 3 tables et formulaire dépendant


Sujet :

Access

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2014
    Messages : 31
    Points : 24
    Points
    24
    Par défaut Demande d'avis sur mise en relation de 3 tables et formulaire dépendant
    Bonjour,

    J'ai un système qui fonctionne pour traiter des contentieux, mais qui a été fait à la va vite pour que l'on puisse surtout enregistrer les informations.

    Je souhaite aujourd'hui peaufiner tout ça, faire un code propre et dans la foulée en apprendre un peu plus sur Access.

    Dans la base actuelle, je n'ai fait aucune relation directe, je passe tout par requête et code. Ma femme vous dirait que les relations c'est pas mon fort...

    Armé des divers FAQ et tout ce que j'ai pu trouver, je me suis lancé dans la reprise totale de tout ça.

    Tout se passe bien, hormis un point où je me coule un peu.

    Description :

    J'ai une table qui m'enregistre des contentieux, sur laquelle je rentrais marque et type de véhicules. Dans un soucis de gain de temps et de contrôle de l'information saisie, j'ai créer une table marque_vehicule et une table type_vehicule.
    J'ai créé par la suite les liaisons suivantes :

    Nom : relation.jpg
Affichages : 198
Taille : 113,5 Ko

    Déjà est ce que ce point vous choque, car je me demande si c'est bien ça qu'il fallait faire...

    L'idée par la suite est d’appeler sur le formulaire de saisie, par zone déroulante (lst_MarqueVehicule), la marque et qu'une autre zone déroulante (lst_TypeVehicule) me sélectionne les types possible dans la marque en question.

    J'ai bien capté que la mise en relation simplifie les choses pour la sélection de la marque par exemple. Avant je faisais des requêtes, maintenant je sélectionne seulement la table.
    Pour la sélection du type en revanche, je m'attendais à pouvoir indiquer dans une requête directement dans la propriété "Contenu" du contrôle un critère de recherche basé sur le contrôle lst_MarqueVehicule. Mais ça ne fonctionne pas comme ça, semble-t-il.

    Alors avant de m'enfoncer plus loin dans d'éventuelles erreurs, je sollicite vos avis sur tout ça.

    Qu'en pensez-vous ?

  2. #2
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2014
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Je ne comprends pas pourquoi tu lies MVL-ID et TVL-RF-T-MVL-ID. (a priori, les relation triangulaires... )

    L'intérêt de ces relations c'est de rentrer effectivement dans ta table contentieux un n° de référence pour chaque marque et un autre pour chaque type mais que l'utilisateur voie cette marque et ce type affichés en clair. cela évite les "fôtes d'ortograf" qui génèrent des confusions et cela reste convivial.

    Je te conseille de construire tes deux tables marques et types sous la forme [ID](identifiant unique et univoque stocké dans la table contentieux) et [nom_en_clair] (apparaissant dans les listes déroulantes, les états ect..) il te suffit alors de lier le champ [ID] au champ correspondant dans la table contentieux

    j'espère avoir répondu à tes interrogations

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2014
    Messages : 31
    Points : 24
    Points
    24
    Par défaut
    Je ne comprends pas pourquoi tu lies MVL-ID et TVL-RF-T-MVL-ID. (a priori, les relation triangulaires... )

    L'intérêt de ces relations c'est de rentrer effectivement dans ta table contentieux un n° de référence pour chaque marque et un autre pour chaque type mais que l'utilisateur voie cette marque et ce type affichés en clair. cela évite les "fôtes d'ortograf" qui génèrent des confusions et cela reste convivial.
    L’intérêt, c'est justement ce que je cherchais à découvrir en faisant cela. Effectivement la mise en relation des bases simplifie énormément les choses.
    Ceci dit la plupart de mes relations sont simples, facture et son détail, facture et son devis... etc... Là, je me suis perdu dans le sens où j'ai voulu transcrire quelque chose comme, contentieux et sa marque et son type dans la marque.

    MVL-ID et TVL-RF-T-MVL-ID représente dans mes songes la rèf qui permet de dire que par exemple, la 106 vient de chez Peugeot. La table Type contient une clé étrangère de de la table Marque. Ça me semble logique.
    Ce qui l'est peut être moins c'est que la table contentieux ait une liaison vers la table type. Finallement il n'y a pas de lien logique entre un type de véhicule et un contentieux. Enfin...

    Depuis le post de ma question j'ai réussi à faire mon formulaire contentieux avec mon champs Marque et mon champs Type fonctionnel.

    Ca fonctionne comme ça :
    La source du controle Type est CON_REF_T_TVL_ID
    Le contenu est : SELECT TVL_ID, TVL_LBL, TVL_REF_T_MVL_ID FROM T_TYPE_VEHICULE_ WHERE (((T_TYPE_VEHICULE_.TVL_REF_T_MVL_ID)=[Formulaires]![F_ADD_CON]![lst_Marque]));
    A chaque changement d'enregistrement je suis obligé de faire un "reQuery" sur le controle Type pour que cela m'affiche les bonnes informations.

    Si le type n'existe pas dans la marque j'utilise cette fonction : (à savoir que lst_Marque m'affiche la ref de la marque et non la marque en clair, pas joli mais fonctionnel pour l'Insert)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub lst_Type_NotInList(NewData As String, Response As Integer)
    Dim ND As String
    ND = InputBox("Enregistrement du type " & NewData & " pour la marque " & lst_Marque, "Ajout d'un type", NewData)
    DoCmd.RunSQL ("INSERT INTO T_TYPE_VEHICULE_ " & _
                "(TVL_LBL, TVL_REF_T_MVL_ID) VALUES ('" & ND & "', " & lst_Marque & ");")
    Response = acDataErrAdded
    End Sub
    Ca me semble assez tordu mais le résultat voulu est là. De là à dire que cette solution est propre, j'ai comme un doute. Qu'en penses-tu ?

Discussions similaires

  1. Demande d'avis sur un bouquin (Deitel)
    Par oodini dans le forum C++
    Réponses: 7
    Dernier message: 26/02/2005, 01h50

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