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 -
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
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
A voir également:
- Bouton suppression
- Forcer suppression fichier - Guide
- Bouton reinitialisation pc - Guide
- Diagnostic bouton photo - Accueil - Outils
- Bouton on/off comment savoir ✓ - Forum Matériel & Système
- Suppression compte gmail - Guide
6 réponses
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.
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.
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 !!!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
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));
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
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
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 !!!
!!! MembresClique.IdMembres.[Actif] !!!
est à remplacer par le NomDeLaTable.NomDuChamp
** rien d'autre **
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 **
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
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
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 ..
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 ..
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).
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).
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
Comme c'est uhne gestion de membre associatif, il se peut qu'il est plusieurs fonctions a des dates differentes. Voila mon raisonnement.
Cordialement
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
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
Je viens de trouver ce lien sur le sujet.
http://www.info-3000.com/access/requetesuppression/requetesuppression.php
http://www.info-3000.com/access/requetesuppression/requetesuppression.php
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
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
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
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
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
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 ?
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.
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 ?
J'ai un champs oui nom qui me permet de faire la selection des enregistrements a effecer