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 :

Table intermédiaire (Plusieurs à plusieurs)


Sujet :

Access

  1. #1
    Membre à l'essai
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Décembre 2018
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur commercial
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2018
    Messages : 38
    Points : 22
    Points
    22
    Par défaut Table intermédiaire (Plusieurs à plusieurs)
    Bonjour à tous,
    Après avoir déjà avoir pas mal ramé, je viens à la rescousse sur le forum. Voilà, j'aimerais développer une BD pour gérer un commerce de vins et je bute sur un plan, la construction de la BD.
    En bref, un vin peut être composé de plusieurs cépages et un cépage peut aller sur plusieurs vins. Ça fait sens. En plus, ds la table intermédiaire j'ai inséré le % de la part que représente le cépage. Jusqu'ici tout va bien SAUF que, lorsque je fais une requête, le résultat me fait voir 2 enregistrements (un pour chaque cépage) alors que c'est qu'un vin qui est constitué de 2 cépages. Ça me fausse toutes mes données!
    Avez-vs une solution? Suis-je mal parti? Merci pour votre aide.
    Pièce jointe 470541
    Images attachées Images attachées  

  2. #2
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 262
    Points : 6 561
    Points
    6 561
    Par défaut
    salut
    et en mettant des equijointures a gauche et a droite de votre table intermediaire !
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur

  3. #3
    Membre à l'essai
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Décembre 2018
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur commercial
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2018
    Messages : 38
    Points : 22
    Points
    22
    Par défaut
    J'ai essayé dans tous les sens mais le résultat n'est pas celui que j'escompte soit un enregistrement seulement et lorsque je fais un rapport, je fais un sous-rapport sur les cépages! Aie aie aie, j'espère que c'est compréhensible!
    Ça
    Nom : 1.jpg
Affichages : 554
Taille : 42,8 Ko
    Ça donne ça
    Nom : 2.jpg
Affichages : 389
Taille : 64,0 Ko
    Je veux un seul et unique enregistrement car sinon, les totaux ds les rapports sont erronés
    Peut-être que j'en demande trop! Aucune idée

  4. #4
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 262
    Points : 6 561
    Points
    6 561
    Par défaut
    Rien d'anormal sur cette capture.
    Votre gros pif n°13 doit être composé de 2 cépages et les autres 7, 8, 9 et 10 que d'un seul.
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur

  5. #5
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    bonsoir,

    J'ai essayé dans tous les sens mais le résultat n'est pas celui que j'escompte soit un enregistrement seulement et lorsque je fais un rapport, je fais un sous-rapport sur les cépages!
    Il faut enlever la table des cépages de la requête pour le rapport principal et la mettre uniquement comme source dans le sous-rapport, sinon, cela multiplie les enregistrements, c'est mathématique ... on ne peut pas avoir le jus de la treille et l'argent du jus de la treille ...
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  6. #6
    Invité
    Invité(e)
    Par défaut
    bonjour,

    une autre solution consiste à créer une fonction qui retourne les cépages dans une colonne de la requete selon le Id_vin passé en argument => Une ligne par vin avec toutes les infos

    Exemple de fonction VBA :
    Code vba : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    Public Function getCepages(ByVal Id_Vin As Variant) As String
        On Error GoTo fin
        Dim oDb As dao.Database, oRs As dao.Recordset, sSql As String
        If Not IsNull(Id_Vin) Then
            sSql = "SELECT CEPAGE & FORMAT([%_DU_CEPAGE],""(0%)"") & ""/"" AS Cep FROM " & _
                   "[06_CEPAGE/VIN] V INNER JOIN 07_CEPAGE C ON  V.ID_CEPAGE=C.ID_CEPAGE " & _
                   "WHERE V.ID_VIN=" & Id_Vin & " ORDER BY [%_DU_CEPAGE] DESC"
            Set oDb = CurrentDb: Set oRs = oDb.OpenRecordset(sSql, dbOpenSnapshot)
            If Not oRs.EOF Then
                Do
                    getCepages = getCepages & oRs(0): oRs.MoveNext
                Loop Until oRs.EOF
                getCepages = Left$(getCepages, Len(getCepages) - 1)
            End If
            oRs.Close
        End If
    fin:
        Set oDb = Nothing: Set oRs = Nothing
    End Function

    pour appeler la fonction dans la requete, il faut ajouter en mode sql:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT ..., Cépages:getCepages([ID_VIN]),...

    Il faut bien sûr enlever dans la requete l'appel aux cépages.
    Inconvénient de cette méthode : ralentissement sensible de l'exécution de la requete.

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

Discussions similaires

  1. Réponses: 13
    Dernier message: 19/12/2016, 18h34
  2. Requête avec des tables de plusieurs bases
    Par Oluha dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 11/04/2005, 16h56
  3. [postgresql]creer une table avec plusieurs clés primaire??
    Par perlgirl dans le forum Langage SQL
    Réponses: 2
    Dernier message: 09/11/2004, 17h24
  4. [Création de table] 1 table ou plusieurs
    Par Pascal dans le forum Bases de données
    Réponses: 6
    Dernier message: 17/06/2004, 15h12
  5. Une seule table VS plusieurs tables
    Par LostControl dans le forum Requêtes
    Réponses: 1
    Dernier message: 11/08/2003, 10h56

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