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 :

lecture d'une requête SQL pour conserver une partie des données


Sujet :

VBA Access

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    683
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 683
    Points : 237
    Points
    237
    Par défaut lecture d'une requête SQL pour conserver une partie des données
    Bonjour,

    J'ai un post en requête SQL mais n'arrivant pas à trouver une solution (pour l'instant), j'essaye une autre idée en utilisant, cette fois-ci, le vba.

    J'ai une requête SQL qui me ressort des doublons (voir triplons...) sur certains enregistrements.
    En résumé, j'obtiens un résultat comme celui-ci :


    Les lignes en rouge sont mes doublons. (COD_CLT et REFERENCE)

    Mon idée serait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    lecture de la requête, 
    je stocke en variables COD_CLT et REFERENCE,
    Lecture enregistrement suivant
    Si COD_CLT et REFERENCE identique au précédent : donc un doublon et j'ignore cet enregistrement
    Sinon j'ajoute cet enregistrement dans une table TEMPO
    Lecture enregistrement suivant ...
    et boucle tant que Non EOF
    Mais mon pb est que parfois le doublon n'est pas sur l'enregistrement suivant.
    Exemple :triplons présent sur l'enregistrement 1, 723, et 24560

    Donc mon raisonnement ne pourra pas marcher dans de tels cas.

    Auriez-vous une meilleure réflexion/conception à me proposer ?


    EDIT DE MON POST : étant à l'ouest !! je me rends compte que ce pb n'en est pas un !! il suffit que je trie ma requête de façon différente !!

    Par contre, j'ai une question annexe :
    Est-il possible de stocker mes enregistrements à conserver puis de faire ma requête d'ajout dans ma table TEMPO qu'à la fin du traitement ?
    Si oui, comment ?
    Car je suppose que si je fais un AJOUT à chaque boucle, cela va me prendre un temps fou de traitement SQL...



    Merci à tous
    Thibault

  2. #2
    Membre chevronné
    Inscrit en
    Août 2006
    Messages
    1 588
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 1 588
    Points : 2 178
    Points
    2 178
    Par défaut
    Bonjour,
    Je conseillerais un champ NumeroAuto dans la table source (n dans l'exemple).
    alors se serait simple
    une requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT Min(Table1.n) AS Min, Table1.cod_clt, Table1.reference FROM Table1 GROUP BY Table1.cod_clt, Table1.reference;
    puis une seconde : ajout dans la table TEMPO
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERT INTO tempo SELECT Table1.* FROM Table1 INNER JOIN Requête1 ON Table1.n = Requête1.Min;
    sinon c'est plus compliqué

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 175
    Points : 129
    Points
    129
    Par défaut
    L'image du premier post n'est plus visible mais effectivement comme helas je ne vois pas l'intérêt de se compliquer la vie avec un recordset VBA... La clause SQL Group By est faîte pour ce genre de doublons.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO tempo SELECT Table1.cod_clt, Table1.reference FROM Table1 GROUP BY Table1.cod_clt, Table1.reference;

Discussions similaires

  1. Réponses: 4
    Dernier message: 10/12/2015, 14h51
  2. Réponses: 5
    Dernier message: 18/02/2009, 09h52
  3. Réponses: 1
    Dernier message: 13/02/2009, 10h13
  4. [SQL] Choix dans une liste déroulante issue d'une requête SQL
    Par Moustic74 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 01/06/2007, 14h06
  5. [MySQL] Afficher le temps mis pour executer une requête SQL
    Par micatmidog dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 28/09/2005, 11h23

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