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

Requêtes et SQL. Discussion :

[sql] Requête DELETE inopérante [Débutant(e)]


Sujet :

Requêtes et SQL.

  1. #1
    Membre habitué
    Profil pro
    Développeur
    Inscrit en
    Août 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Août 2006
    Messages : 94
    Points : 127
    Points
    127
    Par défaut [sql] Requête DELETE inopérante
    Bonjour à tous,

    j'ai un souci d'exécution de la requête suivante:

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    DELETE t1.* FROM t1 INNER JOIN t2 ON t1.ID=t2.ID;

    Lorsque je l'exécute, elle m'affiche systématiquement le message suivant:
    "Impossible de supprimer dans les tables spécifiées"

    Que je la lance en "manuel" ou en VBA (par le biais de DoCmd.RunSQL), ce message apparait forcément.

    Si quelqu'un pouvait m'éclairer...

    NB: 1. j'ai essayé d'appliquer ce que je trouvais dans la FAQ, j'ai supprimé l'intégrité référentielle de ces tables. Même message...
    2. je suis le développeur/administrateur de cette base, donc à priori ce n'est pas un problème de droits...
    3. ma base n'est pas ouverte en mode exclusif.
    4. Ayant finalement un doute sur le fonctionnement de DELETE, j'ai essayé de lancer la requete suivante "DELETE FROM T1", ça a fonctionné.

    Grand merci d'avance !

  2. #2
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    316
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 316
    Points : 367
    Points
    367
    Par défaut
    Bonjour,

    de point de vue syntaxe la requête est bonne.

    A+

  3. #3
    Membre habitué
    Profil pro
    Développeur
    Inscrit en
    Août 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Août 2006
    Messages : 94
    Points : 127
    Points
    127
    Par défaut [SQL ACCESS][DEBUTANT] Requête DELETE inopérante
    J'ai remplacé l'utilisation de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunSQL "DELETE t1.* FROM t1 INNER JOIN t2 ON t1.ID=t2.ID;"
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Currentdb.Execute "DELETE t1.* FROM t1 INNER JOIN t2 ON t1.ID=t2.ID;"
    et ça fonctionne.

    Mais en manuel, ça ne fonctionne toujours pas : "Impossible de supprimer les tables spécifiées".

    Quelqu'un a une idée sur la raison de cette erreur ?

  4. #4
    Membre expert
    Avatar de mout1234
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 210
    Points : 3 228
    Points
    3 228
    Par défaut
    Cela marche-t-il vraiment avec le Currentdb.Execute (as-tu vérifié dans la table)?

    Pour info, la méthode Execute ne te retourne pas d'erreurs d'execution SQL sauf si tu le lui demande:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Currentdb.Execute "DELETE t1.* FROM t1 INNER JOIN t2 ON t1.ID=t2.ID;", dbFailOnError

    Quant à la cause du problème... tu n'as pas de problèmes d'intégrité référentielle? Les champs ID sont-ils du bien du même type, sont-ils indexés?

  5. #5
    Membre habitué
    Profil pro
    Développeur
    Inscrit en
    Août 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Août 2006
    Messages : 94
    Points : 127
    Points
    127
    Par défaut
    merci mout pour le complément d'info sur Execute

    mes tables t1 et t2 initiales (càd avant que je tente l'expérience avec d'autres tables, liées, indexées) ne sont pas liées.

    t1 est indexée, t2 ne l'est pas.

    Et ma requête fonctionne très bien avec currentDb.execute ...

    mais je vais effectivement vérifier si les types des champs "ID" sont identiques pour mes deux tables, car la table t2 est une importation automatisée d'un fichier texte (avec doCmd.transferText), et je n'ai pas eu la présence d'esprit de regarder si l'importation présentait une incompatibilité de types avec ma table t1... (mais dans ce cas, pourquoi cela fonctionne-t-il avec .execute... ?)

    Réponse ce lundi !

  6. #6
    Membre habitué
    Profil pro
    Développeur
    Inscrit en
    Août 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Août 2006
    Messages : 94
    Points : 127
    Points
    127
    Par défaut
    juste pour cloturer la discussion, j'utilise donc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CurrentDb.execute maRequete
    pour que ma requête soit bien exécutée sans obtenir le message "Impossible de supprimer dans les tables spécifiées".

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

Discussions similaires

  1. [PL/SQL 9i] détecter un Delete Cascade
    Par Yorglaa dans le forum SQL
    Réponses: 4
    Dernier message: 23/10/2007, 10h20
  2. [SQL] problème sur le delete
    Par luimême dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 20/06/2007, 11h23
  3. [SQL] Erreur sur un Delete en sql via php
    Par speed034 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 18/05/2007, 16h18
  4. [SQL 2K5] Pb : ON DELETE CASCADE : référence circulaire
    Par n00bi dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 29/05/2006, 08h48
  5. [PL/SQL] Comment contrôler un DELETE dans un TRIGGER ?
    Par PaulBilou dans le forum Oracle
    Réponses: 9
    Dernier message: 30/09/2005, 15h52

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