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

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Directeur commercial
    Inscrit en
    décembre 2018
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur commercial
    Secteur : Industrie

    Informations forums :
    Inscription : décembre 2018
    Messages : 20
    Points : 9
    Points
    9

    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
    Membre chevronné Avatar de hyperion13
    Homme Profil pro
    Calot120 - Enseignant Post Bac
    Inscrit en
    octobre 2007
    Messages
    1 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Calot120 - Enseignant Post Bac
    Secteur : Enseignement

    Informations forums :
    Inscription : octobre 2007
    Messages : 1 344
    Points : 2 058
    Points
    2 058

    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)
    GMT+4 - 21°19'18" S - 055°25'32" E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse est pertinente. N'oubliez pas svp de clôturer le sujet en cliquant sur

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Directeur commercial
    Inscrit en
    décembre 2018
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur commercial
    Secteur : Industrie

    Informations forums :
    Inscription : décembre 2018
    Messages : 20
    Points : 9
    Points
    9

    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 : 38
Taille : 42,8 Ko
    Ça donne ça
    Nom : 2.jpg
Affichages : 38
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
    Membre chevronné Avatar de hyperion13
    Homme Profil pro
    Calot120 - Enseignant Post Bac
    Inscrit en
    octobre 2007
    Messages
    1 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Calot120 - Enseignant Post Bac
    Secteur : Enseignement

    Informations forums :
    Inscription : octobre 2007
    Messages : 1 344
    Points : 2 058
    Points
    2 058

    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)
    GMT+4 - 21°19'18" S - 055°25'32" E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse est pertinente. N'oubliez pas svp de clôturer le sujet en cliquant sur

  5. #5
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité mais encore activé
    Inscrit en
    novembre 2004
    Messages
    4 293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité mais encore activé

    Informations forums :
    Inscription : novembre 2004
    Messages : 4 293
    Points : 7 332
    Points
    7 332

    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 ...

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    août 2010
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : août 2010
    Messages : 329
    Points : 525
    Points
    525

    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.

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