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

VBA Access Discussion :

erreur 2342 : une action ExécuteSQL necessite un argument consistant en une instruction SQL


Sujet :

VBA Access

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 12
    Points : 5
    Points
    5
    Par défaut erreur 2342 : une action ExécuteSQL necessite un argument consistant en une instruction SQL
    Bonjour a tous
    Je voudrais supprimer les enregistrement de ma table indicateur dont le numero de l'indicateur va etre entré par l'utilisateur.
    j'ai ajouter une condition : si le numéro de l'indicateur entré correspond à l'indicateur qu'il voulais supprimer au départ, l'action de suppression va s'exécuter , sinon rien ne se passe.
    Mais à l'exécution sa me met l'erreur : une action ExécuteSQL necessite un argument consistant en une instruction SQL
    Merci pour vos commentaires

    PS: je suis nul en vba, je ne sais pas si le code est bon... A l'aide svp !!!

    Private Sub Commande15_Click()

    Dim Rep As Integer
    Rep = MsgBox("Voulez-vous vraiment supprimer l'indicateur ?", vbYesNo + vbQuestion, "Suppression Indicateur")
    If Rep = vbYes Then

    DoCmd.RunSQL "Select id_indicateur As id_supp FROM Indicateur WHERE id_indicateur = [entrez à nouveau le numéro de l'indicateur] ;"
    If id_indicateur = Me.id_indicateur Then
    DoCmd.RunSQL "Delete* FROM Indicateur WHERE id_indicateur = id_supp ;"
    Else
    End If

    Else ' '
    End If
    Me.Refresh

    End Sub

  2. #2
    Membre confirmé
    Inscrit en
    Février 2011
    Messages
    466
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 466
    Points : 550
    Points
    550
    Par défaut
    As-tu un espace entre ton "DELETE" et ton étoile ?

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 12
    Points : 5
    Points
    5
    Par défaut oui c'est delete *
    oui j'ai de l'espace entre mon delete et mon etoile . la ligne de l'erreur que me renvoi access est la ligne du : DoCmd.RunSQL "Select id_indicateur As id_supp FROM Indicateur WHERE id_indicateur = [entrez à nouveau le numéro de l'indicateur] ;"

  4. #4
    Membre confirmé
    Inscrit en
    Février 2011
    Messages
    466
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 466
    Points : 550
    Points
    550
    Par défaut
    Pour verifier ta commande SQL, voici ce que tu peux faire :
    Tu sélectionnes (Ctrl- C ) ton statement SQL Select id_indicateur As .....
    Dans Access, tu crées une nouvelle requète. Tu ne choisis pas de table mais tu va directement dans la vue SQL
    Access te montrera une fenêtre vide avec seulement Select; en haut à gauche.
    à la place de ce Select, tu fais un paste (Ctrl - V ) de ton Statement SQL
    Passe en mode Design (l'icône avec l'équère) pour voir comment Access compose ta requête.
    à ce stade, Access pourrait te donner un message d'erreur parce que la syntaxe SQL de Access n'est pas tout à fait la même que la syntaxe SQL officielle.
    Les 3 principales differences sont :
    Access doit terminer avec un point virgule en fin de statement. SQL (VBA) ne l'exige pas.
    Access impose les critères entre double guillemets ("). SQL impose l'apostophe simple.
    Access utilise les formats de dates de tes Windows locales. SQL impose le format américain mois/jour/année

    Quand tu es dans la vue Design de Access, c'est beaucoup facile de composer la requète.
    Une fois que tu as ce que tu veux, passe de nouveau en mode SQL pour voir le statement SQL de ta requète. Copie tout et fais un copier-coller dans ton code VBA.
    N'oublie pas que ton code VBA devra avoir des ' à la place des ".

  5. #5
    Membre confirmé
    Inscrit en
    Février 2011
    Messages
    466
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 466
    Points : 550
    Points
    550
    Par défaut
    Correection :

    Ton statement SQL est un simple SELECT.
    Dans VBA, tu effectueras des requètes d'ACTION : ajout, suppression, creation de tables....

    Ton 1er statement SQL sert à simplement voir ou selectionner les lignes de ta table mais en VBA cela n'a pas de sens.


    Donc pour faire simple,
    Tu fais directement ceci :
    [CODE]dim strSQL as String

    strSQL = "DELETE indicateur.id_indicateur " & _
    "FROM indicateur " & _
    "WHERE (((indicateur.id_indicateur)=[quel indicateur voulez-vous supprimer]))"
    currentdb.execute strSQL[CODE]

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    merci pour tes reponses !
    [code] remplace quoi déja ??
    ou je le met exactement comme tu l'as mis ??
    [CODE]dim strSQL as String....

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    [CODE]dim strSQL as String et currentdb.execute strSQL[CODE] sont en rouge . et lorsque je compile, sa me met erreur de syntaxe

  8. #8
    Membre confirmé
    Inscrit en
    Février 2011
    Messages
    466
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 466
    Points : 550
    Points
    550
    Par défaut
    Les [CODE] sont les balises du site Developpez.com. Cela ne devrait pas apparaitre mais sans doute fait une mauvaise manoeuvre.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    dim strSQL as String
     
     strSQL = "DELETE indicateur.id_indicateur " & _
     "FROM indicateur " & _
     "WHERE (((indicateur.id_indicateur)=[quel indicateur voulez-vous supprimer]))"
     currentdb.execute strSQL

  9. #9
    Membre confirmé
    Inscrit en
    Février 2011
    Messages
    466
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 466
    Points : 550
    Points
    550
    Par défaut
    Au fait, je suppose que tu connais la signification de & _

    En VBA, si tu veux écrire une longue instruction, tu peux l'écrire sur plusieurs lignes avec le caractère _

    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dblTotal = Prix * Quantite * (1 + pctTVA)
    peut aussi s'écrire comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dblTotal = Prix * Quantite * _ 
    (1 + pctTVA)
    Comme mon instruction sert à composer une longue chaîne de caractères, je la coupe en deux ou trois chaînes de caractères que je concatène avec le &
    Au lieu de ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strSQL = "Blah blah " & "blahblah" & " BLAH"
    j'écris sur 3 lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    strSQL = "Blah blah " & _
    "blahblah" & _
    " BLAH"

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 12
    Points : 5
    Points
    5
    Par défaut erreur d'exécution 424 objet requis
    tout d'abord je te remercie pour ton aide...
    j'ai mis le nouveau code et j'ai ajouter la condition en gras.
    on a oublier la condition que l'indicateur qu'il voulais supprimer au départ doit correspondre à celui qu'il va entrer lorsqu'il va repondre à <<quel indicateur voulez vous supprimer>>
    donc jai ajouter la ligne en gras : mais sa bloque
    "FROM Indicateur " & _
    "WHERE (((Indicateur.id_indicateur)=[quel indicateur voulez-vous supprimer]))"
    If indicateur.id_indicateur = Me.id_indicateur Then

    CurrentDb.Execute strSQL
    Else
    End If

Discussions similaires

  1. Ajout d'une action dans un groupe d'items d'une ToolBar
    Par barth3000 dans le forum Eclipse Platform
    Réponses: 1
    Dernier message: 22/07/2011, 11h59
  2. Réponses: 6
    Dernier message: 03/12/2010, 10h12
  3. Réponses: 2
    Dernier message: 28/04/2009, 19h02
  4. Réponses: 12
    Dernier message: 30/07/2008, 10h59
  5. Réponses: 11
    Dernier message: 17/03/2007, 20h17

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