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 :

supprimer plusieurs enregistrements de plusieurs tables en 1 coup


Sujet :

Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 88
    Par défaut supprimer plusieurs enregistrements de plusieurs tables en 1 coup
    Salut,

    Je cherche à supprimer plusieurs enregistrement de plusieurs tables (jointes entre elles) en 1 coup via une requête sql dans VBA

    DELETE T_Consultant.ID_CONSULTANT, T_Consultant.NOM_CONSULTANT, T_ConsultantActivite.ID_CONSULTANT, T_ConsultantActivite.ID_ACTIVITE, T_ConsultantProjet.ID_PROJET, T_ConsultantProjet.ID_CONSULTANT
    FROM (T_Consultant INNER JOIN T_ConsultantActivite ON T_Consultant.ID_CONSULTANT = T_ConsultantActivite.ID_CONSULTANT) INNER JOIN T_ConsultantProjet ON T_Consultant.ID_CONSULTANT = T_ConsultantProjet.ID_CONSULTANT
    WHERE (((T_Consultant.ID_CONSULTANT)=36) AND ((T_ConsultantActivite.ID_CONSULTANT)=36) AND ((T_ConsultantProjet.ID_CONSULTANT)=36));

    Mais je tombe sur une fenêtre qui me demande de « spécifier la table contenant les enregistrement que je souhaite supprimer »

    Où est l ‘erreur, car je trouve ca bizarre que l’on ne puisse pas supprimer plusieurs enregegistrement dans plusieurs tables simultanément !

    Merci

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 88
    Par défaut
    même avec des OR ca ne marche pas, j'ai la meme erreur

    DELETE T_Consultant.ID_CONSULTANT, T_Consultant.NOM_CONSULTANT, T_ConsultantActivite.ID_CONSULTANT, T_ConsultantActivite.ID_ACTIVITE, T_ConsultantProjet.ID_PROJET, T_ConsultantProjet.ID_CONSULTANT
    FROM (T_Consultant INNER JOIN T_ConsultantActivite ON T_Consultant.ID_CONSULTANT = T_ConsultantActivite.ID_CONSULTANT) INNER JOIN T_ConsultantProjet ON T_Consultant.ID_CONSULTANT = T_ConsultantProjet.ID_CONSULTANT
    WHERE (((T_Consultant.ID_CONSULTANT)=36)) OR (((T_ConsultantActivite.ID_CONSULTANT)=36)) OR (((T_ConsultantProjet.ID_CONSULTANT)=36));

  3. #3
    Membre émérite Avatar de milia
    Femme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Juillet 2006
    Messages : 481
    Par défaut
    Bonjour,

    tu as essayé comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    DELETE T_Consultant.ID_CONSULTANT, T_Consultant.NOM_CONSULTANT, T_ConsultantActivite.ID_CONSULTANT, T_ConsultantActivite.ID_ACTIVITE, T_ConsultantProjet.ID_PROJET, T_ConsultantProjet.ID_CONSULTANT
    FROM T_Consultant, T_ConsultantActivite, T_ConsultantProjet
    WHERE T_Consultant.ID_CONSULTANT=36;
    enfin j'ai gros doute là quand même, et la suppression en cascade ça ne marche pas?

    Bon courage

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 88
    Par défaut
    j'ai essayé comme ca aussi, mais ca ne marche pas, meme en faisant des jointure comme ceci :

    (on n'est pas obligé de renseigné après le DELETE)

    DELETE
    FROM T_Consultant, T_ConsultantActivite, T_ConsultantProjet
    WHERE (T_Consultant.ID_CONSULTANT = T_ConsultantActivite.ID_CONSULTANT) AND (T_Consultant.ID_CONSULTANT = T_ConsultantProjet.ID_CONSULTANT) AND T_Consultant.ID_CONSULTANT=36;
    je ne comprends pas trop là !

  5. #5
    Membre émérite Avatar de milia
    Femme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Juillet 2006
    Messages : 481
    Par défaut
    C'est que ça ne doit pas être possible de supprimer plusieurs tables en même temps, mais là j'ai un trou de mémoire énorme!!

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Par défaut
    Bonjour,
    Citation Envoyé par jeje22
    Je cherche à supprimer plusieurs enregistrement de plusieurs tables (jointes entre elles) en 1 coup via une requête sql dans VBA [...]
    Mais je tombe sur une fenêtre qui me demande de « spécifier la table contenant les enregistrement que je souhaite supprimer »

    Où est l ‘erreur, car je trouve ca bizarre que l’on ne puisse pas supprimer plusieurs enregegistrement dans plusieurs tables simultanément !
    Tu peux consulter l'aide en ligne d'Access à la rubrique "Référence SQL Microsoft Jet". On y lit ceci:
    Syntaxe
    DELETE [table.*]
    FROM table
    WHERE critère
    Donc déjà dans la clause DELETE tu ne dois pas spécifier le nom des champs.
    Citation Envoyé par jeje22
    (on n'est pas obligé de renseigné après le DELETE)
    Oui, mais seulement si la clause FROM ne comporte qu'une seule table.

    La commande DELETE n'opère directement que sur une seule table.
    En cas d'ambiguïté, parce que tu désignes plusieurs tables dans la clause FROM, alors tu dois spécifier la table dans laquelle les suppressions ont lieu.

    Comme te le dit milia, si tu veux automatiquement supprimer des enregistrements "connexes" dans d'autres tables, alors tu dois mettre en oeuvre l'intégrité référentielle (relations 1-N entre tables) en précisant une suppression en cascade.
    Dans ce cas de suppression en cascade, la table qui sera visée par le DELETE est la table du côté 1 de la relation.

    Sinon, si tu ne peux pas mettre en oeuvre l'intégrité référentielle + suppression en cascade, il te reste à découper ta requête pour chacune des tables (éventuellement au sein d'une transaction).

    =JBO=

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 88
    Par défaut
    merci beaucoup, en faisant des requetes en cascade (mais attention à l'ordre).ca marche

    A+

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

Discussions similaires

  1. supprimer un enregistrement de plusieurs tables
    Par kldamr dans le forum Requêtes
    Réponses: 12
    Dernier message: 12/11/2010, 22h24
  2. Réponses: 9
    Dernier message: 08/10/2010, 08h39
  3. [WD15] Ajout de plusieurs enregistrements dans une table de liaison
    Par heiti dans le forum WinDev
    Réponses: 5
    Dernier message: 04/06/2010, 21h35
  4. Réponses: 8
    Dernier message: 12/10/2009, 13h31
  5. Mettre à jour plusieurs enregistrements d'une table
    Par eric41 dans le forum Langage
    Réponses: 2
    Dernier message: 26/11/2008, 16h33

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