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 :

Supprimer des enregistrements et conserver le plus récent


Sujet :

VBA Access

  1. #1
    Membre du Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Juillet 2014
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 64
    Points : 57
    Points
    57
    Par défaut Supprimer des enregistrements et conserver le plus récent
    Bonjour,
    J’ai une interrogation que je n’arrive pas à résoudre. J’ai une table T_commande dans lequel j’ai plusieurs champs
    Champs : Etablissement, Code_Service, Code_Produit, numero_jour, SQL, Date
    J’aimerais dans un premier temps qu’il me sélectionnne tous les enregistrements commençant par UPDATE dans le champs SQL pour cela j’ai créé une Requête de sélection (ça c’est OK). Puis dans un second temps, j’aimerais qu’à partir de cette requête. Il me supprime tous les enregistrements les plus anciens dont les champs Etablissement et Code_Service et Code_Produit et numero_jour sont identiques. Dans ce cas –ci-dessous ce serait une ligne à supprimer.
    Etablissement Code_Service Code_Produit numero_jour SQL Date
    XXX XXXXX 10 1 UPDATE t_commande_max_produit SET `MAX Produit`=X WHERE `Code Service` ='XXXXX' AND `numero_jour`= 1 AND `code produit` = 10 16/02/2015 17:46:14
    XXX XXXXX 10 2 UPDATE t_commande_max_produit SET `MAX Produit`=X WHERE `Code Service` =' XXXXX ' AND `numero_jour`= 2 AND `code produit` = 10 16/02/2015 17:46:14
    XXX XXXXX 10 3 UPDATE t_commande_max_produit SET `MAX Produit`=X WHERE `Code Service` = XXXXX ' AND `numero_jour`= 3 AND `code produit` = 10 16/02/2015 17:46:14
    XXX XXXXX 10 4 UPDATE t_commande_max_produit SET `MAX Produit`=X WHERE `Code Service` =' XXXXX ' AND `numero_jour`= 4 AND `code produit` = 10 16/02/2015 17:46:14
    XXX XXXXX 10 5 UPDATE t_commande_max_produit SET `MAX Produit`=X WHERE `Code Service` =' XXXXX ' AND `numero_jour`= 5 AND `code produit` = 10 16/02/2015 17:46:14
    XXX XXXXX 10 1 UPDATE t_commande_max_produit SET `MAX Produit`=X WHERE `Code Service` =' XXXXX ' AND `numero_jour`= 1 AND `code produit` = 10 16/02/2015 17:46:18
    Je ne connais pas trop le code (Voici le type de code que j'ai pu créer par l'intermédiaire des visites sur internet).

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    DELETE *
    FROM R2
    WHERE Date NOT IN ( 
                         SELECT MAX(Date)
                         FROM R2
                         GROUP BY  Code_Service AND Code_Produit AND numero_jour
                         );

    Merci d'avance de ce que vous pourrez me dire là-dessus?

  2. #2
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 424
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 424
    Points : 20 002
    Points
    20 002
    Billets dans le blog
    67
    Par défaut
    Bonjour,

    Essayez ceci :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DELETE Req2.*
    FROM R2 As Req2
    WHERE (((Req2.Date) In (Select Max(Req3.[Date]) from R2 as Req3 where (Req3.Etablissement=Req2.[Etablissement]) and (Req3.Code_Service=Req2.[Code_Service]) and (Req3.Code_Produit=Req3.[Code_Produit]) and (Req3.numero_jour=Req2.[numero_jour]) Group By Req3.Etablissement, Req3.Code_Service, Req3.Code_Produit, Req3.Numero_Jour; )));

    "Req3" est l'alias de la requête "R2" dans la sous-requête au niveau du In, et "Req2" est l'alias de la requête "R2" au niveau de la requête principale.

    ça permet de comparer les valeurs des champs de la requête principale et de la sous-requête.

    Cdlt,

  3. #3
    Membre du Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Juillet 2014
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 64
    Points : 57
    Points
    57
    Par défaut
    Bonjour et merci déjà d'avoir répondu si vite
    Si j'ai bien compris car je suis vraiment novice
    Alors j'ai copié le code mis dans une requête en mode SQL. Le résultat ça me supprime les 5 premiers enregistrements comme le code précédent et non juste la première ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    XXX XXXXX 10 1 UPDATE t_commande_max_produit SET `MAX Produit`=X WHERE `Code Service` ='XXXXX' AND `numero_jour`= 1 AND `code produit` = 10 16/02/2015 17:46:14
    XXX XXXXX 10 2 UPDATE t_commande_max_produit SET `MAX Produit`=X WHERE `Code Service` =' XXXXX ' AND `numero_jour`= 2 AND `code produit` = 10 16/02/2015 17:46:14
    XXX XXXXX 10 3 UPDATE t_commande_max_produit SET `MAX Produit`=X WHERE `Code Service` = XXXXX ' AND `numero_jour`= 3 AND `code produit` = 10 16/02/2015 17:46:14
    XXX XXXXX 10 4 UPDATE t_commande_max_produit SET `MAX Produit`=X WHERE `Code Service` =' XXXXX ' AND `numero_jour`= 4 AND `code produit` = 10 16/02/2015 17:46:14
    XXX XXXXX 10 5 UPDATE t_commande_max_produit SET `MAX Produit`=X WHERE `Code Service` =' XXXXX ' AND `numero_jour`= 5 AND `code produit` = 10 16/02/2015 17:46:14
    XXX XXXXX 10 1 UPDATE t_commande_max_produit SET `MAX Produit`=X WHERE `Code Service` =' XXXXX ' AND `numero_jour`= 1 AND `code produit` = 10 16/02/2015 17:46:18

    Merci d'avance

  4. #4
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 424
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 424
    Points : 20 002
    Points
    20 002
    Billets dans le blog
    67
    Par défaut
    Alors essayez not in plutôt que in au niveau du critère...

  5. #5
    Membre du Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Juillet 2014
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 64
    Points : 57
    Points
    57
    Par défaut
    ça marche c'est top merci beaucoup

  6. #6
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 424
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 424
    Points : 20 002
    Points
    20 002
    Billets dans le blog
    67
    Par défaut
    Citation Envoyé par MAO2000 Voir le message
    ça marche c'est top merci beaucoup
    de valoriser notre travail.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 17/05/2011, 11h29
  2. Réponses: 3
    Dernier message: 01/12/2006, 21h31
  3. [MySQL] supprimer des enregistrements de ma base
    Par arti2004 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 26/06/2006, 16h08
  4. Réponses: 4
    Dernier message: 14/10/2005, 10h54
  5. HELP!Comment supprimer des enregistrements de tables jointes
    Par ROOTPARIS dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 10/06/2004, 17h41

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