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 :

Suppression de données après archivage en VBA [AC-2000]


Sujet :

VBA Access

  1. #1
    Membre habitué
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2010
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2010
    Messages : 149
    Points : 171
    Points
    171
    Par défaut Suppression de données après archivage en VBA
    Bonjour à tous,

    Dans un module VBA, je copie des informations de ma base de données vers Excel.

    C'est informations sont contenues dans un recordset :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set SelectionGene = CurrentDb.OpenRecordset("SelectionGen")
    Voila la requete contenue dans le recordSet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Equipment.Program, Equipment.IDEQUIPMENT, Equipment.EquipmentDescription, Equipment.SubFamily, Equipment.IRP, Equipment.T0, Equipment.FtCv, Equipment.Article, Equipment.TotalQty, Equipment.Frequency, Equipment.Network, Equipment.Supplier, Equipment.[Country], EquipmentBatch.IDEQUIPMENTBATCH, EquipmentBatch.DescriptionBatch, EquipmentBatch.IDMODEL, EquipmentBatch.Qty, ML.IDML, ML.MLType, ML.ContractDate, ML.AdditionalNotes, ML.IncomingDate, ML.OffsetTwUser, ML.PP1W, ML.PP1Day, SBHistory.IDSB, SBHistory.IDNUMBER, SBHistory.SBModificationDate, SBHistory.DateSB, SBHistory.ExplanationSB, NeedHistory.IDNEED, NeedHistory.IDNUMBERNEED, NeedHistory.NeedModificationDate, NeedHistory.DateNeed, NeedHistory.ExplanationNeed, PPHistory.IDPPHISTORY, PPHistory.IDNUMBERPP, PPHistory.PPDate, PPHistory.PPComment, Program.Statut, PDP.FileName
    FROM PP INNER JOIN ((NeedHistory INNER JOIN (SBHistory INNER JOIN (PPHistory INNER JOIN ML ON PPHistory.IDPPHISTORY = ML.PDP) ON SBHistory.IDSB = ML.SB) ON NeedHistory.IDNEED = ML.Need) INNER JOIN (((Program INNER JOIN Equipment ON Program.ProgramName = Equipment.Program) INNER JOIN (EquipmentBatch INNER JOIN LinkEqptBatchPPML ON EquipmentBatch.IDEQUIPMENTBATCH = LinkEqptBatchPPML.IDEQUIPMENTBATCH) ON Equipment.IDEQUIPMENT = EquipmentBatch.IDEQUIPMENT) INNER JOIN LinkEquipmentPP ON Equipment.IDEQUIPMENT = LinkEquipmentPP.IDEQUIPMENT) ON ML.IDML = LinkEqptBatchPPML.IDML) ON (PP.IDPP = LinkEqptBatchPPMLS.IDPP) AND (PP.IDPP = LinkEquipmentPP.IDPP)
    WHERE (((Program.Statut)="X"));
    Ce que je voudrais c'est supprimé les informations de cette requete après la copie vers Excel.
    Comment puis-je le faire sans passer par plusieurs requete DELETE ?

    Merci d'avance

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 206
    Points : 243
    Points
    243
    Par défaut
    Si tu souhaites supprimer des données de plusieurs tables il va te falloir plusieurs requêtes DELETE.

    Du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    DELETE FROM Equipement
    WHERE IDEQUIPEMENT IN (
    SELECT  Equipment.IDEQUIPMENT
    FROM PP INNER JOIN ((NeedHistory INNER JOIN (SBHistory INNER JOIN (PPHistory INNER JOIN ML ON PPHistory.IDPPHISTORY = ML.PDP) ON SBHistory.IDSB = ML.SB) ON NeedHistory.IDNEED = ML.Need) INNER JOIN (((Program INNER JOIN Equipment ON Program.ProgramName = Equipment.Program) INNER JOIN (EquipmentBatch INNER JOIN LinkEqptBatchPPML ON EquipmentBatch.IDEQUIPMENTBATCH = LinkEqptBatchPPML.IDEQUIPMENTBATCH) ON Equipment.IDEQUIPMENT = EquipmentBatch.IDEQUIPMENT) INNER JOIN LinkEquipmentPP ON Equipment.IDEQUIPMENT = LinkEquipmentPP.IDEQUIPMENT) ON ML.IDML = LinkEqptBatchPPML.IDML) ON (PP.IDPP = LinkEqptBatchPPMLS.IDPP) AND (PP.IDPP = LinkEquipmentPP.IDPP)
    WHERE (((Program.Statut)="X")))

  3. #3
    Membre habitué
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2010
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2010
    Messages : 149
    Points : 171
    Points
    171
    Par défaut
    Merci de ta réponse.

    J'esperais qu'une autre méthode existait mais apparement non.
    Il ne me reste plus qu'a faire des requetes pour chaque table et à les appelé dans mon module

    J'ai déjà :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DELETE *
    FROM Program
    WHERE [Program].[Statut]="X";
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    DELETE *
    FROM Equipment
    WHERE Program In 
     (Select ProgramName from Program where Statut = "X");
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    DELETE *
    FROM EquipmentBatch
    WHERE IDEQUIPMENT IN 
     (Select IDEQUIPMENT FROM Equipment where Program IN 
      (Select ProgramName FROM Program where Statut = "X"));
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    DELETE *
    FROM LinkEqptBatchPPML
    WHERE IDEQUIPMENTBATCH IN 
     (Select IDEQUIPMENTBATCH FROM EquipmentBatch WHERE IDEQUIPMENT IN
      (Select IDEQUIPMENT from Equipment WHERE Program IN 
       (Select ProgramName FROM Program WHERE statut = "X")));
    Merci beaucoup pour ta réponse rapide

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 09/12/2011, 09h34
  2. Réponses: 1
    Dernier message: 09/03/2007, 07h52
  3. [VBA-E]suppression ligne d'après lisbox multicritère
    Par clairefranclieu dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 11/09/2006, 22h38
  4. [VBA-E] afficher des données apres saisie dans cellule
    Par user0505 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 14/04/2006, 14h04
  5. Problème d'espace disponible après suppression de données
    Par carjo dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 24/03/2006, 15h48

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