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 :

Requête DELETE * avec clause WHERE [AC-2007]


Sujet :

Requêtes et SQL.

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2008
    Messages : 191
    Points : 200
    Points
    200
    Par défaut Requête DELETE * avec clause WHERE
    Bonjour à tous,

    j'en suis à ma première conception de base de données sur Access et j'éprouve quelques difficultés avec une requête SQL. J'ai eu beau fouillé le forum, la FAQ et google, mais il doit y avoir un détail qui m'échappe puisque je n'obtiens pas les résultats voulus; je soupçonne une erreur de syntaxe...

    Je désire donc supprimer un enregistrement en fonction du numéro de référence (champ "N°"). J'ai essayé différentes syntaxes dont les suivantes (je déclare ma requête directement dans mon code VB) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    DoCmd.RunSQL "DELETE * FROM MATERIEL WHERE N° = '" & numero & "';"
     
    DoCmd.RunSQL "DELETE * FROM MATERIEL WHERE N° = " & numero & ";"
     
    DoCmd.RunSQL "DELETE * FROM MATERIEL WHERE MATERIEL.N° = '" & numero & "';"
    où MATERIEL est la table à laquelle mon formulaire est lié et numero est une variable de type string. À chaque fois que la requête s'exécute (lors d'un clic de bouton) une fenêtre m'apparaît me demandant de spécifié la valeur "N°" à rechercher. Or, la variable numero contient bel et bien un numéro d'enregistrement valide (j'ai vérifié), mais ne semble pas être pris en considération par ma requête. Puis, lorsque j'entre un numéro dans la fenêtre qui apparaît, la requête m'indique qu'elle s'apprête à supprimer 125 lignes (soit la totalité de ma table) plutôt que l'enregistrement que je viens de spécifier...

    Il s'agit probablement d'une erreur de syntaxe, mais je dois avouer que je n'arrive pas à la détecter.

    Merci d'avance!

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut,

    la syntaxe est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DELETE FROM table WHERE condition
    et non

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DELETE * FROM table WHERE condtion

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2008
    Messages : 191
    Points : 200
    Points
    200
    Par défaut
    Bonjour,

    merci pour ta réponse Mygale1978! Malheureusement, je viens d'essayer la syntaxe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunSQL "DELETE FROM MATERIEL WHERE N° = '" & numero & "';"
    mais le comportement de ma requête reste exactement le même, il n'y a eu aucun changement. Ce pourrait-il qu'il y est un autre détail qui m'échappe?

    Merci

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Mets N° entre crochets pour voir, comme cela [N°].

    Philippe

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par al_bert Voir le message
    Bonjour,

    merci pour ta réponse Mygale1978! Malheureusement, je viens d'essayer la syntaxe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunSQL "DELETE FROM MATERIEL WHERE N° = '" & numero & "';"
    mais le comportement de ma requête reste exactement le même, il n'y a eu aucun changement. Ce pourrait-il qu'il y est un autre détail qui m'échappe?

    Merci
    Si ton champ N° est de type numérique, tu ne dois pas mettre ' '

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2008
    Messages : 191
    Points : 200
    Points
    200
    Par défaut
    Bonjour,

    je viens de tenter le coup, mais malheureusement le problème reste entier. On dirait que le contenu de la variable "numero" n'est jamais passé à la requête, mais pourtant cette variable contient une valeur valide...

    Merci encore!

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2008
    Messages : 191
    Points : 200
    Points
    200
    Par défaut
    Citation Envoyé par Mygale1978 Voir le message
    Si ton champ N° est de type numérique, tu ne dois pas mettre ' '
    Salut,

    J'ai aussi tenté le coup avec une variable de type integer et sans les ' ', mais sans succès(exactement le même résultat). Je suis donc revenu avec un string et des ' '.

    Merci

  8. #8
    Invité
    Invité(e)
    Par défaut
    Mettre des ' ' alors que ton champ n° est numérique est une erreur:

    la requête correcte dans ton code devrait être:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DoCmd.RunSQL "DELETE FROM MATERIEL WHERE N° = " & numero & ";"
    Peux-tu afficher ta variable numero dans un messagebox?
    As-tu testé le delete directement au niveau d'access.

    Autre conseil tu devrais évitier les caractères accentués et spéciaux (éèî°...) dans tes noms de champs.

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2008
    Messages : 191
    Points : 200
    Points
    200
    Par défaut
    Bonjour!

    Il semblerait que l'utilisation de caractères spéciaux soit une très mauvaise idée! J'ai donc renommé ma colonne avec des caractères plus conventionnels. Merci bien, ça semble avoir réglé mon problème, j'arrive maintenant à supprimer une seule ligne (et la bonne).

    Parce que oui, j'arrivais à afficher "numero" dans un msgbox et tout semblait conforme à ce niveau, d'où ma confusion.

    Merci à vous deux pour vos conseils, je vais pouvoir continuer d'avancer!
    al_bert

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/09/2011, 18h20
  2. Réponses: 4
    Dernier message: 26/07/2011, 11h29
  3. [MySQL] Requête SQL avec clause where max
    Par younes371 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 01/12/2009, 09h21
  4. requête sql avec clause INNER JOIN
    Par new_wave dans le forum Langage SQL
    Réponses: 1
    Dernier message: 12/08/2005, 15h47
  5. Petit souci avec clause where
    Par ybruant dans le forum SQL
    Réponses: 1
    Dernier message: 21/07/2005, 22h10

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