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
    Membre régulier
    Profil pro
    Inscrit en
    octobre 2009
    Messages
    350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : octobre 2009
    Messages : 350
    Points : 116
    Points
    116

    Par défaut Problème de doublon dans sous-formulaire

    Bonjour,

    Je crée une BD pour établir des devis d'installation de chauffage. Lors d'un précédent échange sur le forum, Jeannot45 m'a donné une piste pour ajouter des articles dans les sous-formulaires du devis.

    Le problème que je rencontre est qu'il y a des doublons. Si je crée plusieurs devis avec le même mode de chauffage et que j'ajoute des articles dans les différents onglets (Générateur, accessoires, capteur), ces articles se retrouvent dans les autres devis.
    Pourtant dans le code du bouton "Ajouter les articles" le n° de devis est bien précisé donc il ne devrait pas y avoir de confusion au niveau des sous-formulaires....

    Quant à l'onglet "capteur" lorsque j'ajoute un article il est inséré plusieurs fois... Il y a donc quelque chose que je n'ai pas du faire correctement.

    Merci pour vos conseils, je joins la BD pour plus de compréhension.

    Gest4.zip

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    octobre 2005
    Messages
    12 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : octobre 2005
    Messages : 12 741
    Points : 19 315
    Points
    19 315

    Par défaut

    Bonjour.

    Habituellement, ce genre de problème vient des champs définis dans les propriétés Champs Père, Champ Fils du contrôle sous-formulaire.
    Regarde ce qu'elles contiennent et valide dans ta source de données que c'est bien sur cela qu'il faut faire la liaison.
    Il paraît probable qu'il manque le champ qui contient le numéro de devis dans ces propriétés.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    octobre 2009
    Messages
    350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : octobre 2009
    Messages : 350
    Points : 116
    Points
    116

    Par défaut

    Bonjour marot_r,

    Je viens de vérifier et les sous-formulaires ont bien le n° devis dans les champs père et fils.

  4. #4
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    février 2013
    Messages
    252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : février 2013
    Messages : 252
    Points : 363
    Points
    363

    Par défaut

    le probleme vient de ta requete source RqListeDEVIS et de la definition de ton combo dans FormListeDEVIS .
    je te joint le fichier revu , dis moi si c'est OK.
    merci
    ++
    Fichiers attachés Fichiers attachés

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    octobre 2009
    Messages
    350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : octobre 2009
    Messages : 350
    Points : 116
    Points
    116

    Par défaut

    Bonjour James68,

    Je viens de regarder la BD, il semble que le problème de doublon dans le devis soit réglé: lorsque j'ajoute un article il s'incrémente une seul fois dans le sous-formulaire.

    Mais le problème de doublon entre devis est toujours présent : par exemple, si on ouvre le devis n°1 et que dans l'onglet "Accessoires" on ajoute 1 ou plusieurs produits, ces produits se retrouvent dans les autres devis. Ce qui n'est pas normal puisque les champs père et fils du sous-formulaire sont bien renseignés avec le n° de devis...

  6. #6
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    février 2013
    Messages
    252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : février 2013
    Messages : 252
    Points : 363
    Points
    363

    Par défaut

    Le problème vient de ta structure relationnel je pense.
    il faudrait revoir un peu les connections.
    le mieux serait de passer par une table d'affectation.
    voir exemple ci dessous.
    ++Nom : Sans titre.jpg
Affichages : 54
Taille : 126,1 Ko

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    octobre 2009
    Messages
    350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : octobre 2009
    Messages : 350
    Points : 116
    Points
    116

    Par défaut

    Bonjour james68,

    Excusez-moi de ne pas avoir répondu plus tôt, paperasse administrative de fin d'année oblige.

    Dans votre dernier post, vous écrivez "le mieux serait de passer par une table d'affectation". Mais j'ai déjà des tables bien définies "DetailGENERATEUR", "DetailACCESGENERATEUR" et "DetailCAPTEUR".

    Logiquement en passant pas ces tables qui sont spécifiques aux articles, la relation avec le n° de devis devrait se faire sans problème ? et donc lorsque j'incrémente les articles dans les sous-formulaires, ceux ci ne devraient figurer que dans le devis dans lequel je fais ma saisie ?

    C'est pourquoi je ne comprends pas pourquoi il y a ces doublons...

  8. #8
    Membre chevronné Avatar de hyperion13
    Homme Profil pro
    Calot120 - Enseignant Post Bac
    Inscrit en
    octobre 2007
    Messages
    1 200
    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 200
    Points : 1 849
    Points
    1 849

    Par défaut

    Quand vous évoquez doublons, est-ce dans le 1er sfom (SFAccesGENERATEUR) ou le 2nd sform (SFDetailACCESGENERATEUR) ?
    Est-il normal que les tbl SousArticlesACCESGENERATEUR et ArticlesACCESSGENERATEUR ne soient liées à aucune autres tbl de votre SI ?
    Avez-vous remarqué que le 2nb sfrom dans l'onglet Générateur et Accessoires affiche #Erreur pour PrixVHT (PVHT) et PrixTotalHT (PTotHT) ?
    Normal, COEFGENE est de type Text et le point "." est utilisé comme séparateur de décimale !

    EDIT D'ailleurs le problème se poserait également pour Commande132 et Commande176 pour la clause WHERE
    Code : 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
    21
    22
    23
    24
    25
    26
    Private Sub Commande144_Click()
    ' Déclaration des variables
        Dim l_strSql As String
     
        With DoCmd
            ' Initialisation de la requete d'Ajout dans la table T_DétailDevis
            l_strSql = "INSERT INTO DetailACCESGENERATEUR ( AccesGeneArticles, ACCESGENEDEVIS ) " & _
                "SELECT ArticlesACCESSGENERATEUR.IDARTIACCESGENE, RqDEVIS.NUMDEVIS " & _
                "FROM ArticlesACCESSGENERATEUR INNER JOIN RqDEVIS ON ArticlesACCESSGENERATEUR.accesTOUTEPAC = RqDEVIS.ToutePAC " & _
                "WHERE (((RqDEVIS.NUMDEVIS)=[Formulaires]![FormDEVIS]![NUMDEVIS]) AND ((ArticlesACCESSGENERATEUR.accessSELECTION)=True));"        ' Désactivation des messages systeme
            .SetWarnings False
            ' exécution de la requete mise à jour
            .RunSQL (l_strSql)
     
            ' Initialisation de la requete de mise à jour de la table T_ArticlesChauffage
            l_strSql = "UPDATE ArticlesACCESSGENERATEUR SET accessSELECTION = 0 WHERE accessSELECTION = -1"
     
            ' Exécution de la requete Mise à jour de la table ArticlesGENERATEUR
            .RunSQL (l_strSql)
            ' réactivation des messages systeme
            .SetWarnings True
        End With
     
        ' Réactualisation de l'affichage du sous formulaire
        Me.SFDetailACCESGENERATEUR.Requery
    End Sub
    "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

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    octobre 2009
    Messages
    350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : octobre 2009
    Messages : 350
    Points : 116
    Points
    116

    Par défaut

    Bonjour,

    Le problème se produit dans tous les sous-formulaires. Lorsque j'ajoute des articles dans l'un d'entre eux, ces produits s'incrémente également dans les devis de même type de générateur.

  10. #10
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    février 2013
    Messages
    252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : février 2013
    Messages : 252
    Points : 363
    Points
    363

    Par défaut

    es tu arrivé a solutionner ton probleme ???

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    octobre 2009
    Messages
    350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : octobre 2009
    Messages : 350
    Points : 116
    Points
    116

    Par défaut

    Bonjour,

    Non je n'ai pas trouvé. J'essaie en modifiant les requête, les tables, les relations... bref tout y passe mais je n'arrive pas à solutionner ce problème.

  12. #12
    Membre chevronné Avatar de hyperion13
    Homme Profil pro
    Calot120 - Enseignant Post Bac
    Inscrit en
    octobre 2007
    Messages
    1 200
    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 200
    Points : 1 849
    Points
    1 849

    Par défaut

    L10 de mon Post#8 j'indiquais qu'il manquait un élément dans la clause WHERE, tu n'associes pas les insetions fonction du num devis en cours !
    Selon gestpac4 L10 L39 L66
    Code : 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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    Private Sub Commande132_Click()
        ' Déclaration des variables
        Dim l_strSql As String
     
        With DoCmd
            ' Initialisation de la requete d'Ajout dans la table T_DétailDevis
            l_strSql = "INSERT INTO DetailGENERATEUR ( GeneArticles, GENEDEVIS ) " & _
                "SELECT ArticlesGENERATEUR.IDARTGENE, DEVIS.NUMDEVIS " & _
                "FROM ArticlesGENERATEUR INNER JOIN DEVIS ON ArticlesGENERATEUR.GeneType = DEVIS.TYPEGENERATEUR " & _
                "WHERE (((DEVIS.NUMDEVIS)=[Formulaires]![FormDEVIS]![NUMDEVIS]) AND ((ArticlesGENERATEUR.GeneSelection)=True));"
            ' Désactivation des messages systeme
            .SetWarnings False
            ' exécution de la requete mise à jour
            .RunSQL (l_strSql)
     
            ' Initialisation de la requete de mise à jour de la table T_ArticlesChauffage
            l_strSql = "UPDATE ArticlesGENERATEUR SET GeneSelection = 0 WHERE GeneSelection = -1"
     
            ' Exécution de la requete Mise à jour de la table ArticlesGENERATEUR
            .RunSQL (l_strSql)
            ' réactivation des messages systeme
            .SetWarnings True
        End With
     
        ' Réactualisation de l'affichage du sous formulaire
        Me.SFDetailGENERATEUR.Requery
    End Sub
     
     
    Private Sub Commande144_Click()
    ' Déclaration des variables
        Dim l_strSql As String
     
        With DoCmd
            ' Initialisation de la requete d'Ajout dans la table T_DétailDevis
            l_strSql = "INSERT INTO DetailACCESGENERATEUR ( AccesGeneArticles, ACCESGENEDEVIS ) " & _
                "SELECT ArticlesACCESSGENERATEUR.IDARTIACCESGENE, RqDEVIS.NUMDEVIS " & _
                "FROM ArticlesACCESSGENERATEUR INNER JOIN RqDEVIS ON ArticlesACCESSGENERATEUR.accesTOUTEPAC = RqDEVIS.ToutePAC " & _
                "WHERE (((RqDEVIS.NUMDEVIS)=[Formulaires]![FormDEVIS]![NUMDEVIS]) AND ((ArticlesACCESSGENERATEUR.accessSELECTION)=True));"        ' Désactivation des messages systeme
            .SetWarnings False
            ' exécution de la requete mise à jour
            .RunSQL (l_strSql)
     
            ' Initialisation de la requete de mise à jour de la table T_ArticlesChauffage
            l_strSql = "UPDATE ArticlesACCESSGENERATEUR SET accessSELECTION = 0 WHERE accessSELECTION = -1"
     
            ' Exécution de la requete Mise à jour de la table ArticlesGENERATEUR
            .RunSQL (l_strSql)
            ' réactivation des messages systeme
            .SetWarnings True
        End With
     
        ' Réactualisation de l'affichage du sous formulaire
        Me.SFDetailACCESGENERATEUR.Requery
    End Sub
     
    Private Sub Commande176_Click()
    ' Déclaration des variables
        Dim l_strSql As String
     
        With DoCmd
            ' Initialisation de la requete d'Ajout dans la table T_DétailDevis
            l_strSql = "INSERT INTO DetailCAPTEUR ( CaptARTICLES, CAPTDEVIS ) " & _
                "SELECT ArticlesCAPTEUR.IDARTCAPTEUR, DEVIS.NUMDEVIS " & _
                "FROM ArticlesCAPTEUR INNER JOIN DEVIS ON ArticlesCAPTEUR.CaptTYPE = DEVIS.TYPECAPT " & _
                "WHERE (((DEVIS.NUMDEVIS)=[Formulaires]![FormDEVIS]![NUMDEVIS]) AND ((ArticlesCAPTEUR.CaptSelection)=True));"
            ' Désactivation des messages systeme
            .SetWarnings False
            ' exécution de la requete mise à jour
            .RunSQL (l_strSql)
     
            ' Initialisation de la requete de mise à jour de la table T_ArticlesChauffage
            l_strSql = "UPDATE ArticlesCAPTEUR SET CaptSelection = 0 WHERE CaptSelection = -1"
     
            ' Exécution de la requete Mise à jour de la table ArticlesGENERATEUR
            .RunSQL (l_strSql)
            ' réactivation des messages systeme
            .SetWarnings True
        End With
     
        ' Réactualisation de l'affichage du sous formulaire
        Me.SFDetailCAPTEUR.Requery
    End Sub
    "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

  13. #13
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    février 2013
    Messages
    252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : février 2013
    Messages : 252
    Points : 363
    Points
    363

    Par défaut

    sauf erreur de ma part le probleme vient de ta requete source qui pilote ton FormListeDEVIS.
    le champ TypeGenerateur doit venir de la table DEVIS et non de la Table TYPE GENERATEUR.

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    octobre 2009
    Messages
    350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : octobre 2009
    Messages : 350
    Points : 116
    Points
    116

    Par défaut

    Bonjour Hyperion13,

    Ta correction semble fonctionner je n'ai plus de doublon d'un devis de même type à l'autre. Je vais encore faire des tests mais le problème semble résolu.

    Merci à tous pour votre aide et je vous souhaite de bonnes fêtes

    Bien cordialement

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

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