Bouton suppression

castours Messages postés 2955 Date d'inscription   Statut Membre Dernière intervention   -  
castours Messages postés 2955 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Avec access 2007, sur une liste a selection mutilpe, je voudrai effacer les enregistremnts selectionnés. Pouvez vous m'aider en me fournissant le code du bouton d'effecement.
Je ne connais trés peu le VBA
Je vous remercie

6 réponses

  1. Heliotte Messages postés 1561 Statut Membre 92
     
    Bonjour castours,

    Il faut être certain que tous les champs de l'enregistrement ne proviennent que d'une seule table .. il te faut l'id .. et par conséquent .. le supprimer.

    Si cet enregistrement provient de plusieurs table .. c'est plus fastidieux. Il faut s'assurer de supprimer chaque enregistrement de chaque table SI et seulement SI l'enregistrement de la table X n'est pas utilisé par un autre enregistrement OU pourrait être utilisé par un autre enregistrement.
    0
    1. castours Messages postés 2955 Date d'inscription   Statut Membre Dernière intervention   217
       
      Bonjour
      Merci de m'avoir repndu
      Oui, j'ai deux tables qui sont liées de un à plusieurs.
      C'est dans la 2 eme qui me sert de selection par un oui non pour supprimmer les enregistrements de la premiere.
      Dans un formulaire, puis dans liste independante à selection multiple, j'ai les enregistrements a supprimer. Je selectionne ceux qui m'interesse que je voudrai supprimer par le bouton.
      Peux tu, si tu le veux me traduire cela en VBA pour le bouton de suppression.
      Je te remercie
      0
    2. Heliotte Messages postés 1561 Statut Membre 92
       
      Bonjour castours,

      Si je comprends bien, ce sont les éléments de la table 2 (multi) qui, quand ils sont sélectionnés, te disent, il faut supprimer / il ne faut pas supprimer.

      En général, c'est dans l'autre sens que l'on fait les actions.

      Admettons :
      Un enregistrement de la table 1 correspond les enregistrements de la table 2 .. exemple:
      1 .. 1, 5, 6, 18, 20.
      2 .. 2, 4, 7, 8, 9, 12, 13, 14, 15, 17.
      3 .. 3, 11, 16.
      4 .. 10, 19.
      5 .. 21, 22.

      Les nombres en gras sont ceux que tu as sélectionnés dans ta liste.
      Table1, enregistrement 1 :: table2, enregistrement 6.
      Le seul enregistrement susceptible d'être supprimé est table1, enregistrement 4 avec les enregistrements 10 et 19 de la table 2.

      Q.: Il faut comprendre qu'il y aura des orphelins .. ou bien, il faut également supprimer tous les enregistrements de la table2 dont la clef correspond à l'Id de la table 1 ?
      0
    3. castours Messages postés 2955 Date d'inscription   Statut Membre Dernière intervention   217
       
      Bonjour Heliotte
      Merci de ta reponse
      C'est bien ce que je veux faire. Effacer l'id de la table 1 qui entraine la table 2 par le relation un a plusieurs. C'est cela que j'essaie de faire.
      0
    4. Heliotte Messages postés 1561 Statut Membre 92
       
      Bonsoir castours,

      Pour supprimer un enregistrement de la table 1, il faut d'abord récupéré son identifiant (Id) et commencer par supprimer tous les enregistrements de la table 2 contenant la clé secondaire égale à l'identifiant de la table 1.
      Une fois ces enregistrements supprimés, il ne reste plus qu'à supprimé l'enregistrement dont l'identifiant est Id de la table 1.

      Connais-tu l'identifiant de l'enregistrement de la première table ou dois-tu le retrouver par le code ?
      0
    5. castours Messages postés 2955 Date d'inscription   Statut Membre Dernière intervention   217
       
      J'ai l'enregistrement complet dans une liste a choix multiple sur les 2 tables.
      J'ai un champs oui nom qui me permet de faire la selection des enregistrements a effecer
      0
  2. Heliotte Messages postés 1561 Statut Membre 92
     
    Bonjour castours,

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    D'abord faire une requête de sélection .. tu la convertira en requête de suppression uniquement si c'est ce résultat que tu attends !!!
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    DELETE table1.Id AS Id1, table1.Nom AS Nom1, table2.Id AS Id2, table2.ref_table1Id AS ref_Id1, table2.Nom AS Nom2, table2.ref_table1Id
    FROM table1 RIGHT JOIN table2 ON table1.Id = table2.ref_table1Id
    WHERE (((table2.ref_table1Id)=1));
    0
    1. castours Messages postés 2955 Date d'inscription   Statut Membre Dernière intervention   217
       
      Bonjour
      J'ai essayé ceci dans un bouton commande
      Mais une erreur de compil
      Sub ou fonction nom defini
      Ca bloque sur la condition Where

      Sub Cde_Supprime_Click()

      'DoCmd.Delete ' UtilisateursClique.Nom, UtilisateursClique.Prénom, MembresClique.[Actif]
      DoCmd.RunSQL "Delete FROM UtilisateursClique AS idUtilisateurs,UtilisateursClique.Nom AS Nom,UtilisateursClique.Prénom AS Prénom RIGHT JOIN MembresClique ON UtilisateursClique.idUtilisateurs=MembresClique.idUtilisateurs"
      WHERE MembresClique.IdMembres.[Actif] = 1


      End Sub
      0
  3. Heliotte Messages postés 1561 Statut Membre 92
     
    Je recommence car j'ai fait une groooosse erreur. Mille excuses.

    Fait une copie de ta base de données avant avant d'utiliser cette requête !!!

    DELETE NomDeLaTableDontLesEnregistrementsVontEtreSupprimé.*
    FROM UtilisateursClique RIGHT JOIN MembresClique ON UtilisateursClique.idUtilisateurs=MembresClique.idUtilisateurs
    WHERE MembresClique.IdMembres.[Actif] = 1


    !!! MembresClique.IdMembres.[Actif] !!!
    est à remplacer par le NomDeLaTable.NomDuChamp
    ** rien d'autre **
    0
    1. castours Messages postés 2955 Date d'inscription   Statut Membre Dernière intervention   217
       
      Heliotte
      Merci pour ton aide
      Comme je ne comprends pas tout, je te mets mes deux tables et le formulaire
      Dans ce lien
      https://www.cjoint.com/c/CAAqb1v0jTl
      Dans le formulaire , je choisis 2 ou 3 lignes puis le bouton effface
      C'est ce que j'essaie de realiser.
      Le Bouton est vide de code
      0
    2. Heliotte Messages postés 1561 Statut Membre 92
       
      Bonsoir castours,

      Je n'ai que Access2003 .. est-il possible de le convertir dans cette version avec Access2007 ?
      Si oui, veux-tu bien le faire et le reposter ?

      Si non, me donner la structure des deux tables, leurs liaison, quelques enregistrements et un print srceen du formulaire .. j'essaierai de me débrouiller avec ça ..
      0
  4. Heliotte Messages postés 1561 Statut Membre 92
     
    Bonjour castours et bon dimanche,

    Je viens de regarder la base de données. Je ne sait pas sur quel critères tu t'es basé pour créer les deux tables .. mais si j'en crois mon rapide coup d'oeil, tu ne devrais n'avoir qu'une seule table :

    - à un T_UtilisateursClique correspond une et une seule Désignation.
    ET
    - à un T_UtilisateursClique correspond un et un seul Actif (vrai ou faux / Oui ou Non).

    Si c'est la cas, tu ne dois pas te compliquer la vie pour rien et tu peux inclure les champs de la table T_MembresClique dans la table T_UtilisateursClique.

    Donne-moi les règles pour les deux champs précités (Désignation et Actif).
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. castours Messages postés 2955 Date d'inscription   Statut Membre Dernière intervention   217
     
    Bonjour
    Comme c'est uhne gestion de membre associatif, il se peut qu'il est plusieurs fonctions a des dates differentes. Voila mon raisonnement.
    Cordialement
    0
  7. Heliotte Messages postés 1561 Statut Membre 92
     
    Bonsoir castours,

    Autrement dit, tu veux garder l'historique.
    Ok

    J'ai oublier de te donner le lien https://docs.microsoft.com/fr-fr/office/troubleshoot/access/retrieve-items-in-multiple-selection-list-box
    Microsoft y parle des éléments sélectionnés .. comment le récupérer
    0
    1. Heliotte Messages postés 1561 Statut Membre 92
       
      Bonjours castours,

      J'ai regardé au lien .. pas mal du tout !
      Merci beaucoup.
      0
    2. castours Messages postés 2955 Date d'inscription   Statut Membre Dernière intervention   217
       
      Bonjour
      J'ai reussi a faire fonctionné le bouton grace au forum de self access
      Voic le code
      Dim i As Variant, SQL As String

      For Each i In Me.Zlist.ItemsSelected
      SQL = "DELETE * FROM [T_MembresClique] WHERE [IdMbre] = " & Me.Zlist.ItemData(i)
      CurrentDb.Execute SQL
      SQL = "DELETE * FROM [T_UtilisateursClique] WHERE [IdUtil] = " & Me.Zlist.ItemData(i)
      CurrentDb.Execute SQL
      Next
      End Sub
      0
    3. castours Messages postés 2955 Date d'inscription   Statut Membre Dernière intervention   217
       
      Bonjour Heliotte
      J'aii le code dans le bouton mais access affiche erreur de syntaxe mais efface quande la ligne selectionnée
      Voici le code
      For Each i In Me.Zlist.ItemsSelected

      'BLOQUE ICI SUR LA CONDITION WHERE.Dans le message [IdMbre]= ETAIT MENTIONNE
      Les Id Sont Numerique Est la bonne syntaxe

      SQL = "DELETE * FROM [T_MembresClique] WHERE [IdMbre] = " & Me.Zlist.ItemData(i)
      CurrentDb.Execute SQL

      'CurrentDb.Execute SQL
      SQL = "DELETE * FROM [T_UtilisateursClique] WHERE [IdUtil] = " & Me.Zlist.ItemData(i)
      CurrentDb.Execute SQL


      Next


      Merci de ton aide
      0