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

VBA Access Discussion :

Erreur de dédoublonnage : méthode avec une table temporaire


Sujet :

VBA Access

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2012
    Messages : 49
    Points : 30
    Points
    30
    Par défaut Erreur de dédoublonnage : méthode avec une table temporaire
    Bonjour,

    Je travaille sur un formulaire Access.

    J'ai une variable "StrTableNameMail" qui récupère le nom de la table en saisie.

    Je souhaiterais dédoublonner cette table selon cette règle : une adresse mail est unique.

    J'ai testé cette méthode avec une table temporaire afin d'obtenir dans ma table finale "StrTableNameMail" les bons enregistrements.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    DoCmd.RunSQL "SELECT DISTINCT AdrEmail INTO T_DOUBLON_TMP FROM [" & StrTableNameCourrier & "] GROUP BY AdrEmail ;"
     
    strSQL = "DELETE FROM [" & StrTableNameCourrier & "] T1"
    strSQL = strSQL & " WHERE EXISTS (SELECT * FROM [" & StrTableNameCourrier & "] T2 WHERE T1.AdrEmAil = T2.AdrEmail GROUP BY AdrEmail)" & ";"
     
    DoCmd.RunSQL "INSERT INTO [" & StrTableNameCourrier & "] SELECT AdrEmail FROM T_DOUBLON_TMP ;"
     
    DoCmd.RunSQL "DROP TABLE T_DOUBLON_TMP ;"
    DoCmd.RunSQL strSQL

    Lorsque j'excute mon code une erreur 3121 est lancée :
    Impossible d'effectuer un regroupement sur les champs sélectionnés avec *
    Donc mon erreur se trouve ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strSQL = strSQL & " WHERE EXISTS (SELECT * FROM [" & StrTableNameCourrier & "] T2 WHERE T1.AdrEmAil = T2.AdrEmail GROUP BY AdrEmail)" & ";"
    Je bute et je n'arrive pas avancer. Je ne vois pas en quoi l'erreur lancée est réelement un problème.

    Merci pour votre aide !

  2. #2
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2012
    Messages : 191
    Points : 324
    Points
    324
    Par défaut
    Bonjour,

    Pourquoi utiliser le HAVING COUNT après GROUPY BY? Normalement, en utilisant le GROUP BY AdrMail, tu ne devrais avoir plus qu'une fois la même adresse mail dans ta table qu'il y ait 10 fois la même ou une seule fois.

    Cordialement.

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2012
    Messages : 49
    Points : 30
    Points
    30
    Par défaut
    Merci pour ta réponse, j'ai apporté les modications que tu m'as suggérées.

    Oui, je comprends maintenant que le HAVING COUNT n'a pas son utilité ici après le GROUP BY.

    Je suis toujours ennuyée avec l'erreur 3121 :
    Impossible d'effectuer un regroupement sur les champs sélectionnés avec *

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2012
    Messages : 191
    Points : 324
    Points
    324
    Par défaut
    Tu cherches à récupérer le champ AdrMail dans ta table T2.
    Essaye de remplacer * après ton SELECT par T2.AdrMail.

  5. #5
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2012
    Messages : 49
    Points : 30
    Points
    30
    Par défaut
    Quitte à passer pour une nulle autant y aller jusqu'ou bout...

    A présent que je n'ai plus d'erreur grâce à mon dernier changement (j'ai fais le remplacement du * par ce que tu m'avais suggéré), mais j'obtiens une table finale complètement vide.

    Donc, j'ai exécuté les requêtes une à une.
    Le problème c'est posé dès la première requête lorsque je copie ma table à dédoublonner sur la T_DOUBLON_TMP. Ca me dépasse, logiquement elle devrait se copier sans problème avec ma requête.

    Merci pour le temps consacrer à m'aider. Je reconnais que le problème est loin d'être passionnant.

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2012
    Messages : 191
    Points : 324
    Points
    324
    Par défaut
    Tu as essayé avec un INSERT? Du style:

    "INSERT INTO T_DOUBLON_TMP.AdrEmail SELECT [" & StrTableNameCourrier & "].AdrEmail GROUP BY AdrEmail ;"

  7. #7
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2012
    Messages : 49
    Points : 30
    Points
    30
    Par défaut
    Oui, j'ai essayé également.

    Ma table T_DOUBLON_TMP est copiée en structure mais pas le contenu.

  8. #8
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2012
    Messages : 191
    Points : 324
    Points
    324
    Par défaut
    Je ne vois pas pourquoi ça plante. Sinon tu dois pouvoir passer par une autre méthode ou bien utiliser des requêtes et une table tampon que tu utilise dans ton vb , quitte à y aller pas à pas.

  9. #9
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2012
    Messages : 49
    Points : 30
    Points
    30
    Par défaut
    Finalement, ça fonctionne.

    J'avais une requête avant celle du dédoublonnage et je l'exécutais à la suite de mes deux requêtes c'est pour cela que ça ne fonctionnait.

    En tous les cas, un grand merci pour ton aide !

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

Discussions similaires

  1. Problème d'utilisation du IF avec une table temporaire
    Par yonnel dans le forum Développement
    Réponses: 6
    Dernier message: 08/01/2013, 15h01
  2. [MySQL] Erreur avec une Table Temporaire
    Par Stageuse44 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 30/05/2011, 14h42
  3. Réponses: 2
    Dernier message: 19/06/2008, 16h46
  4. Erreur lors d'insertion dans une table avec Indentity
    Par rad_hass dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 20/03/2008, 15h22
  5. Réponses: 2
    Dernier message: 17/10/2006, 10h54

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