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 :

Quel code pour suppression enregistrement ?


Sujet :

VBA Access

  1. #1
    Débutant  
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 887
    Points : 206
    Points
    206
    Par défaut Quel code pour suppression enregistrement ?
    Bonjour,

    J'ai créé un bouton de commande avec le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Commande126_Click()
    Me.AllowDeletions = True
     
    If MsgBox("Vous êtes sur le point de supprimer définitivement un enregistrement. Cliquez sur OUI pour confirmer sinon NON.", vbQuestion + vbYesNo, "INFORMATION") = vbNo Then
    Me.Undo
    Cancel = True
    Me.AllowDeletions = False
    End If
     
    End Sub
    Mon form étant modif non autorisée, le but est de supprimer l'enregistrement après le message. Mais ... ça marche pas ! J'ai bien mon message d'erreur mais pas de suppression....

    Help.

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 642
    Points : 34 350
    Points
    34 350
    Par défaut
    salut,
    pourquoi ne passes-tu pas par une requête sql de suppression ?

  3. #3
    Débutant  
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 887
    Points : 206
    Points
    206
    Par défaut
    Parce que mes connaissances en requêtes sont scolaires et se limitent à en faire en mode création.
    De plus, j'avais oublié que les requêtes suppression existaient et tu me diras, je n'ai jamais su à quoi ça servait.

    Est-ce que ça irait dans le sens de ce que je veux faire ?

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 642
    Points : 34 350
    Points
    34 350
    Par défaut
    je suppose que oui,
    si tu as la clé primaire de ton enregistrement tu peux faire une requête du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DELETE * FROM MaTable WHERE ClePrimaire = " & num_d'enregistrement

  5. #5
    Débutant  
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 887
    Points : 206
    Points
    206
    Par défaut
    Oui mais la suppression, je la veux uniquement que sur le click du bouton de commande... je ne vois pas comment y arraiver avec cette requête

  6. #6
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 642
    Points : 34 350
    Points
    34 350
    Par défaut
    ben dans ton evenement clic de bouton, apres la demande a l'utilisateur, tu stocke la valeur de l'enregistrement, et tu fais un docmd.runsql la_requete_de_suppression

  7. #7
    Débutant  
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 887
    Points : 206
    Points
    206
    Par défaut
    euh...là ça devient un peu compliqué pour moi :
    tu me demandes donc dans mon form, sur mon super bouton avec mon Private Sub de "stocker la valeur" ? Kézako ?

    Merci de me montrer comment tu fais stp

  8. #8
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 642
    Points : 34 350
    Points
    34 350
    Par défaut
    mais tu as bien à ta disposition le numéro d'enregistrement affiché non ?
    donc après ton code rajoute ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Commande126_Click()
    Me.AllowDeletions = True
     
    If MsgBox("Vous êtes sur le point de supprimer définitivement un enregistrement. Cliquez sur OUI pour confirmer sinon NON.", vbQuestion + vbYesNo, "INFORMATION") = vbNo Then
    Docmd.RunSQL "DELETE * FROM Talbe WHERE ClePrimaire = & " valeur_enregistement 'à adapter bien entendu
    End If
     
    End Sub

  9. #9
    Débutant  
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 887
    Points : 206
    Points
    206
    Par défaut
    C'est bien ce qu'il me semblait, j'avais compris ce que tu me demandes mais je ne suis pas assez familiarisée avec les termes appropriés donc sois indulgent stp

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Docmd.RunSQL "DELETE * FROM Talbe WHERE ClePrimaire = & " valeur_enregistement
    si j'ai bien compris :
    FROM : c'est de la table dont est issu mon form
    WHERE : que dois noter ? "cleprimaire" ?
    valeur_enregistrement : je dois spécifier un n° d'enregistrement ?

  10. #10
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 642
    Points : 34 350
    Points
    34 350
    Par défaut
    oui,
    table est la table dans laquelle ton enregistrement existe,
    cléprimaire est le champs qui te sert de clé primaire dans la table, et num_enregistrement est le numéro de la clé primaire de l'enreigstrement

  11. #11
    Débutant  
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 887
    Points : 206
    Points
    206
    Par défaut
    le souci c'est que je ne peux pas spécifier quel enregistrement je veux car je veux que cela supprime l'enregsitrement en cours sur mon form...

    j'ai vraiment du mal là...

    et je veux supprimer l'enregistrement entier....

  12. #12
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 642
    Points : 34 350
    Points
    34 350
    Par défaut
    oui, mais l'enregistrement dans ta form, tu dois bien savoir d'ou il sort non ?

  13. #13
    Débutant  
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 887
    Points : 206
    Points
    206
    Par défaut
    Regarde ce que j'ai fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Commande126_Click()
    Me.AllowDeletions = True
     
    If MsgBox("Vous êtes sur le point de supprimer définitivement un enregistrement. Cliquez sur OUI pour confirmer sinon NON.", vbQuestion + vbYesNo, "INFORMATION") = vbNo Then
    Me.Undo
    Cancel = True
    Else
    DoCmd.RunSQL "DELETE DETAIL.*FROM DETAIL;"
     
    End If
     
    End Sub
    Il semble vouloir executer la suppression mais il veut tous les enregistrements alors que je veux juste l'enregistrement en cours (la page que je consulte)...

    une idée

  14. #14
    Membre éclairé Avatar de ft035580
    Profil pro
    Inscrit en
    Août 2004
    Messages
    689
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 689
    Points : 812
    Points
    812
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Private Sub Commande126_Click()
    Me.AllowDeletions = True
     
    If MsgBox("Vous êtes sur le point de supprimer définitivement un enregistrement. Cliquez sur OUI pour confirmer sinon NON.", vbQuestion + vbYesNo, "INFORMATION") = vbNo Then
    Me.Undo
    Cancel = True
    Else
    DoCmd.SetWarnings False
    DoCmd.RunSQL "DELETE Détail.Champ1" _
    & " FROM Détail " _
    & " WHERE (((Détail.Champ1)=[Forms]![TonForm]![TonContrôle]))"
    DoCmd.SetWarnings True
    MsgBox "Enregistrement supprimé"
    Me.Requery
    End If
     
    End Sub

  15. #15
    Débutant  
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 887
    Points : 206
    Points
    206
    Par défaut
    Salut,

    Merci pour ton aide.
    je suis en train de me pencher sur ton code et j'avoue qu'il y a des choses que je ne saisis pas, notamment :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DoCmd.RunSQL "DELETE Détail.Champ1" _
    & " FROM Détail " _
    & " WHERE (((Détail.Champ1)=[Forms]![TonForm]![TonContrôle]))"
    le "champ 1" serait quoi ? Car je veux que toutes les données saisies de l'enregistrement en cours soient supprimées. En gros supprimer une ligne entière (celle qui sera consultée via le form) dans le table sur laquelle est basée mon form...
    Je ne vois pas ce que je dois mettre... ni pour les autres d'ailleurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [Forms]![TonForm]![TonContrôle]))
    HELP !!!!

    Sinon, il n'y avait pas plus simple que de passer par une requête suppression ?

  16. #16
    Débutant  
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 887
    Points : 206
    Points
    206
    Par défaut
    Je me suis débrouillée comme je pouvais (pas tout compris) et voilà ce que j'ai fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Private Sub Commande126_Click()
    Me.AllowDeletions = True
     
    If MsgBox("Vous êtes sur le point de supprimer définitivement un enregistrement. Cliquez sur OUI pour confirmer sinon NON.", vbQuestion + vbYesNo, "INFORMATION") = vbNo Then
    Me.Undo
    Cancel = True
    Else
    DoCmd.SetWarnings False
    DoCmd.RunSQL "DELETE DETAIL.numdetail" _
    & " FROM DETAIL " _
    & " WHERE (((DETAIL.numdetail)=[Forms]![DETAIL]![Commande126]))"
    DoCmd.SetWarnings True
    MsgBox "Enregistrement supprimé"
    Me.Requery
    End If
     
    End Sub

    ça me demande d'entrer qqch ...

    marche pas...

  17. #17
    Membre éclairé Avatar de ft035580
    Profil pro
    Inscrit en
    Août 2004
    Messages
    689
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 689
    Points : 812
    Points
    812
    Par défaut
    Salut,

    J'imagine que tu as une zone de texte nommée "numdetail" dans ton Form "DETAIL".

    Auquel cas,essaie plutôt:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ...& " WHERE (((DETAIL.numdetail)=[Forms]![DETAIL]![numdetail]))"

  18. #18
    Débutant  
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 887
    Points : 206
    Points
    206
    Par défaut
    Dans mon form, elle n'est pas nommée numdetail mais numéro
    mais j'ai mis numdetail car c'est comme ça que ce champ apparait dans ma table (qui est la base du form).

    Je ne comprends pas les codes et les formules, j'apprends au fur et à mesure donc merci de m'expliquer

  19. #19
    Débutant  
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 887
    Points : 206
    Points
    206
    Par défaut
    Citation Envoyé par ft035580 Voir le message
    Salut,

    J'imagine que tu as une zone de texte nommée "numdetail" dans ton Form "DETAIL".

    Auquel cas,essaie plutôt:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ...& " WHERE (((DETAIL.numdetail)=[Forms]![DETAIL]![numdetail]))"
    Je viens d'essayer ce que tu m'as dit et ça marche mais en me demandant d'entrer le numdetail, or je souhaiterais qu'il n'ait pas à me demander quel enregistrement je veux supprimer mais qu'il supprime automatiquement l'enregistrement en cours, celui que je consulte, par simple clic sur le bouton supprimer.

  20. #20
    Invité
    Invité(e)
    Par défaut
    Ce qui est pris en compte c'est comment il est nommé dans le form, en l'occurence si j'ai bien lu ici "numero" donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE (((DETAIL.numdetail)=[Forms]![DETAIL]![numero]))

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [XL-2007] quel code pour faire une annonce a l'ouverture du fichier
    Par grisan29 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 16/07/2010, 20h26
  2. Quel code pour trouver l'OS ?
    Par ddorange dans le forum Débuter
    Réponses: 2
    Dernier message: 12/02/2010, 13h28
  3. quel code pour enregistrer une image dans la base de donnée
    Par bambi98 dans le forum Bases de données
    Réponses: 1
    Dernier message: 15/05/2009, 15h55
  4. Réponses: 2
    Dernier message: 08/02/2009, 18h55
  5. quel code pour dire "x n'est pas un Integer" ?
    Par nat44 dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 31/07/2008, 10h29

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