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 :

Effacement d'enregistrements d'une table


Sujet :

Access

  1. #1
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    250
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 250
    Points : 96
    Points
    96
    Par défaut Effacement d'enregistrements d'une table
    bonjour,

    Je souhaite supprimer des enregistrements d'une table. Je sélectionne les éléments à effacer par une requête du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    "SELECT RB_1.Nom_LatteLigne,RB_1.Id_LatteLigne " & _
    "FROM RB_1 INNER JOIN RB_2  " & _
    "ON RB_1.Id_LatteLigne = RB_2.Id_LatteLigne " & _
    "WHERE RB_2.Id_Arret = '" & Me.Id_Arret.Value & "'"
    Je pensais en faisant cette requête effacer les éléments de la table RB_1 (car le FROM est appliqué à la table RB_1), mais apparemment ce sont les éléments de la table RB_2 qui sont effacés ... Est ce normale ? Si oui comment faut-il faire pour éléminer les éléments de la première table ?

    Merci !

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    191
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 191
    Points : 209
    Points
    209
    Par défaut
    bonjour,

    fais une requête du type "Delete"...

  3. #3
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    250
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 250
    Points : 96
    Points
    96
    Par défaut
    Merci pour cette réponse, mais apparemment Access n'a pas aimé... il me demande de spécifier la table où il faut effacer les enregistrements.. je tourne autour du pot. Je pense que c'est le INNER JOIN qu'il n'aime pas , mais j'ai vraiment de faire cette jointure pour effacer ces enregistrements ? Peut etre faire un LEFT JOIN ...?

  4. #4
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Hello,

    il y a un moyen simple de ne pas se tromper :
    - faire une requête sélection
    - s'assurer que la requête affiche toutes les données qui doivent être supprimées
    - transformer la requête sélection en requête suppression (avec le bouton dans la barre d'outils : la croix et point d'exclamation ou menu Requete > Requete suppression)

  5. #5
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    250
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 250
    Points : 96
    Points
    96
    Par défaut
    .. non ca ne marche pas, la requete selection me donne bien les enregristrements voulus mais quand je transforme la requête en requête suppression il me demande de spécifier la table où les enregistrements doivent être supprimés. Bref, il ne faut peut etre pas passer par un INNER JOIN, mais la je ne vois pas comment faire !

    Merci

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    191
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 191
    Points : 209
    Points
    209
    Par défaut
    bonjour,

    tu utilises bien cette syntaxe ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DELETE FROM [table] WHERE ...

  7. #7
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    250
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 250
    Points : 96
    Points
    96
    Par défaut
    Je fais la requête suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    DELETE FROM RB_1 INNER JOIN RB_2 ON RB_1.Id_LatteLigne=RB_2.Id_LatteLigne
    WHERE (((RB_2.Id_Arret)='ACH1'));
    Access me demande de spécifier la table. Peut être est ce logique car les enregistrements résultant de cette requête proviennent de deux tables différentes.

    J'ai finalement suivi la méthode suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    query = "SELECT RB_1.Nom_LatteLigne,RB_1.Id_LatteLigne FROM RB_1 LEFT JOIN RB_2  ON RB_1.Id_LatteLigne = RB_2.Id_LatteLigne WHERE RB_2.Id_Arret = '" & Me.Id_Arret.Value & "'"
     
    Set rst = DB.OpenRecordset(query)
     
    ....
     
    For i = 0 To rst.RecordCount - 1
    query = "DELETE FROM RB_1 WHERE Id_LatteLigne = " & rst.Fields("Id_LatteLigne").Value
    DB.Execute (query)
    rst.MoveNext
    Next
    En gros je recupère dans la première requête les identifiants de la table RB_1 que je veux effacer et j'effectue une requête suppression pour chaque enregistrement.

    Voila, mon problème est résolu mais je pense qu'il y avait peut pêtre une façon plus simple d'effacer ces enregistrements, je suis tout ouï quant à vos suggestions !

    Merci encore !

  8. #8
    Membre actif
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    191
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 191
    Points : 209
    Points
    209
    Par défaut
    bonjour,
    je ne sais pas comment est ton mcd, mais si tu as des doublons dans les tables il faut les supprimer en premier et ensuite tu supprimes l'enregistrement principal...

    ps : pense au aussi

  9. #9
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Et ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DELETE RB_1.* FROM RB_1 INNER JOIN RB_2 ON RB_1.Id_LatteLigne=RB_2.Id_LatteLigne
    WHERE (((RB_2.Id_Arret)='ACH1'));
    ?

    C'est ce que t'avais conseillé cafeine

  10. #10
    Responsable SAS


    Inscrit en
    Septembre 2006
    Messages
    3 176
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 176
    Points : 16 157
    Points
    16 157
    Par défaut
    J'ai eu le même problème ... pour le résoudre il faut créer des clefs sur chacune des tables. La requete delete marche alors très bien.

Discussions similaires

  1. Effacer tous les enregistrements d'une table
    Par yendre dans le forum Langage
    Réponses: 10
    Dernier message: 22/03/2013, 14h14
  2. effacer certains enregistrements d'une table sql
    Par laurentSc dans le forum Langage
    Réponses: 2
    Dernier message: 11/10/2011, 22h15
  3. Effacer tous les enregistrements d'une table
    Par plutonium719 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 08/08/2006, 15h05
  4. Réponses: 7
    Dernier message: 30/05/2006, 11h00
  5. Trouver le dernier enregistrement d'une table
    Par remi59 dans le forum Requêtes
    Réponses: 4
    Dernier message: 11/03/2003, 14h54

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