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

Access Discussion :

[SQL] insertion des données modifiées d'une table T1 dans une table Archive


Sujet :

Access

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 91
    Points : 59
    Points
    59
    Par défaut [SQL] insertion des données modifiées d'une table T1 dans une table Archive
    Bonjour,
    J’ai une table T1 et une table Archive ayant les mêmes champs. Je saisis les données par un formulaire.

    La table Archive est censée de contenir toutes les données que j’ai mises dans la table T1. Par exemple, si je change une ligne de la table T1, la table Archive doit contenir à la fois l’ancienne valeur et la nouvelle valeur de la table T1.

    Pour ce genre d’opération, j’ai fait une requête SQL , avec Not Exists, mais elle ne marche pas correctement. En plus, j’ai 14 champs dans une table, si je fais la requête ci-dessous, ça devient super obsolète, le code tient sur une demie page..

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    Insert into Archive (champ1, champ2)
    Select T1.champs1, T1.champs2 from T1
    Where not exists (select T1.champ1 from T1 where T1.champ1=Archive.champ1)
    Or not exists (select T1.champ2 from T1 where T1.champ2=Archive.cham2);
    Auriez vous 1 astuce pour ce genre d’opération : pour copier dans la table Archive toutes les données modifiées de la table T1, sans écraser les anciennes données de la table Archive?

    Merci d’avance pour vos suggestions =)

  2. #2
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Si tu fais une petite recherche, Cafeine a fait un excellent tuto pour tracer les modifications faites sur les données.
    Tu le trouveras Ici.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 91
    Points : 59
    Points
    59
    Par défaut
    salut heureux-oli,
    merci beaucoup pour le lien.
    je remercie aussi à cafeine pour le tuto.
    A plus =)

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 91
    Points : 59
    Points
    59
    Par défaut résolu : insérer les modifications d'une table dans une autre table
    bonsoir à tous,
    Enfin, j'ai pu soulager mes souffrances éphémères mais aussi folkloriques avec une requête SQL de ce type :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    INSERT INTO Archive (champ1, champ2)
    SELECT T1.champs1, T1.champs2 FROM T1
    WHERE NOT EXISTS (SELECT A.champ1 from Archive as A where A.champ1=T1.champ1 or T1.champ1 is null) or
    NOT EXISTS (SELECT A.champ2 from Archive as A where A.champ2=T1.champ2 or T1.champ2 is null);

    Sans la partie en rouge,
    à chaque fois qu'on a un champ null dans la table T1, cette requête insére plusieurs fois la même ligne dans la table Archive.

    Bref, le code ci-dessus permet de copier les lignes de la table T1 dans la Table Archive si et seulement si on a modifié au moins un champ de la table T1.

    bonne soirée.

Discussions similaires

  1. Réponses: 4
    Dernier message: 08/04/2011, 09h44
  2. Réponses: 82
    Dernier message: 05/02/2011, 14h34
  3. Réponses: 2
    Dernier message: 19/03/2008, 14h51
  4. Réponses: 3
    Dernier message: 15/05/2007, 09h28
  5. Réponses: 4
    Dernier message: 10/04/2007, 11h10

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