[Résolu][Base] Supprimer des enregistrements

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
Gus.gusgus
Membre lOOyal
Membre lOOyal
Messages : 25
Inscription : 25 sept. 2014 20:01

[Résolu][Base] Supprimer des enregistrements

Message par Gus.gusgus »


La modération vous a écrit: Suite de ce fil

Bonjour à tous,

j'ai créé à l'aide des membres du forum une base de données afin de gérer la présentation des ateliers dans ma classe.
Il y a des petites manipulations que j'effectue encore directement via les tables et je souhaiterai les intégrer via des boutons d'actions.

Je souhaite, en cliquant sur un bouton, supprimer des enregistrements déterminés.
Le but est de pouvoir supprimer l'historique d'un élève, l'historique étant les ateliers que je lui ai présentés, qui correspondent dans ma base à des enregistrements.

J'aimerai ajouter un message d'alerte : "Êtes-vous sûr de vouloir supprimer tel élève de votre table ?" Histoire de ne pas faire de mauvaise manipulation enfin les collègues puisque ma demande fait suite à une demande de partage de cette base et les collègues galèrent encore plus que moi en informatique.

Si quelqu'un peut nous aider ?
Cordialement,
Bob
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par Gus.gusgus le 24 mars 2021 18:11, modifié 1 fois.
LibreOffice 7.0
Microsoft 10 64 bits
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25169
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Base] Supprimer des enregistrements

Message par Dude »

Salut,

Pour supprimer un enregistrement, on utilise en SQL l'instruction DELETE.
L'exécution de ce type de requête fait l'objet d'un suprême de code :
https://forum.openoffice.org/fr/forum/v ... =15&t=1454
Gus.gusgus a écrit :J'aimerai ajouter un message d'alerte
Il faut insérer un MsgBox :
https://wiki.openoffice.org/wiki/FR/Doc ... e_Library)
HRk2o
Membre cOOnverti
Membre cOOnverti
Messages : 344
Inscription : 29 mai 2009 08:51
Localisation : Guyane

Re: [Base] Supprimer des enregistrements

Message par HRk2o »

Bonjour,

on peut faire sans macro pour supprimer les enregistrements 'élèves' et 'ref_ateliers' ;
il faut :
- établir les liens en cascades dans l'outil "Relations" ;
- ajouter un champ booléen ds la table "élèves";
- créer une requête, ici 'Requete1' ;
- créer un formulaire "RADIATION_eleve" et
- un formulaire "REFATELIER_ASUPPR", avec leurs sous-formulaires.

On peut passer par l'un ou l'autre formulaire pour la suppression des enregistrements liés .
La suppression de l'élève ne pourra se faire que si les réf_atelier sont supprimés.
test_sansmacro.odb
@+
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
AOO 4.1.14 et LO 7.3.7.2 sous OsX 10.13.6 High Sierra ; Windows 10 sous AOO 4.1.14 et LibO 7.3.7.2
Gus.gusgus
Membre lOOyal
Membre lOOyal
Messages : 25
Inscription : 25 sept. 2014 20:01

Re: [Base] Supprimer des enregistrements

Message par Gus.gusgus »

HRk2o, bonjour,

tout d'abord merci pour tes 2 solutions. Elles répondent exactement à ce que je cherchais sans faire de macro. C'est d'ailleurs amusant car, j'avais créé un post à ce sujet dans la section base et finalement je trouve la réponse ici. (Voir plus haut suite de ce fil)
J'ajoute juste que ta réponse a un petit côté blasant et je m'en explique. J'ai posté ma demande à 15h11 et tu me réponds en moins de 2 heures quelque chose que je cherche à faire depuis plus d'un mois :fou: . Ce qui peut paraître simple pour certain est ultra torturant pour d'autre.

Je ne vais quand même pas clôturer le sujet car j'aimerais bien essayer d'effectuer l' action "Suppression" via une macro et après avoir lu le lien de Dude, j'ai envie de me lancer dans cette recherche, histoire de faire une action en mode "Juste en cliquant".

Je vous tiens au jus...
LibreOffice 7.0
Microsoft 10 64 bits
Avatar de l’utilisateur
jeanmi2403
SuppOOrter
SuppOOrter
Messages : 1398
Inscription : 18 janv. 2008 09:02
Localisation : Val de Marne

Re: [Base] Supprimer des enregistrements

Message par jeanmi2403 »

Bonjour,
Pour l'exécution de requêtes SQL avec une macro reliée à un bouton, voir le fichier Exemple_InsertUpdateDelete_SQL.odb dans la Base d'exemples du Guide Base
Cordialement,
Jean-Michel
LibO 7.5.9 et AoO 4.1.15 sur Windows 11 & Ubuntu 22.04
LibO 7.6 sur OpenSuse & Linux MX
Gus.gusgus
Membre lOOyal
Membre lOOyal
Messages : 25
Inscription : 25 sept. 2014 20:01

Re: [Base] Supprimer des enregistrements

Message par Gus.gusgus »

Jean-Michel, bonjour, (2403 ton anniversaire bientôt ?? )

Et mille mercis pour ce lien. C'est le problème d'internet avec sa multitude d'informations où tu sais que la solution à ton problème existe mais des fois c'est comme chercher une aiguille dans une botte de foin.
En plus, j'aime bien le principe de ce lien avec des exemples concrets qui des fois te permettent de comprendre plus rapidement qu'en créant seul.

Donc avec l'aide des exemples que j'ai téléchargé via le lien de jeanmi2403, j'ai essayé de modifier mes macros notamment pour supprimer des enregistrements. Rien à faire je tombe toujours sur ce message : il manque des parenthèses ou une virgule.
Du coup, j'ai essayé de simplifier la commande en la mettant dans un sub seul et même problème, j'ai même essayé en suivant le tuto de Dude (je pensais que le problème venait des cotes) mais ça ne marche pas.
Capture d’écran 2021-03-23 133637.png
Si quelqu'un peut jeter un coup d'oeil avisé ?
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 7.0
Microsoft 10 64 bits
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25169
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Base] Supprimer des enregistrements

Message par Dude »

Tu oublies et/ou mélanges les guillemets.
Ce qui rend ta chaîne incompréhensible pour MsgBox.
Relis le suprême de code que je t'ai donné, c'est expliqué.

NB : je ne vois pas l'intérêt de citer la requête SQL dans le message.
Avatar de l’utilisateur
jeanmi2403
SuppOOrter
SuppOOrter
Messages : 1398
Inscription : 18 janv. 2008 09:02
Localisation : Val de Marne

Re: [Base] Supprimer des enregistrements

Message par jeanmi2403 »

Bonjour,
Je n'avais pas consulté la base. L'exemple que j'ai donné, qui ne sert qu'à tester les commandes SQL en mode visuel , doit, bien entendu, être adapté.
Le lien que t'a donné Dude propose le même genre de solution.
Pour ton problème, il faut un bouton sur lequel sera branchée une Macro.
Cette macro devra aller chercher dans un contrôle table le numéro d'enregistrement souhaité, puis construire la commande SQL à exécuter.
 Ajout : Du coup, je vais ajouter dans l'exemple un petit module qui le réalise. Le voilà ci-dessous 
Test_SQL_Delete_Table.odb
Cordialement,
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Jean-Michel
LibO 7.5.9 et AoO 4.1.15 sur Windows 11 & Ubuntu 22.04
LibO 7.6 sur OpenSuse & Linux MX
Gus.gusgus
Membre lOOyal
Membre lOOyal
Messages : 25
Inscription : 25 sept. 2014 20:01

Re: [Base] Supprimer des enregistrements

Message par Gus.gusgus »

Dude, Jeanmi,

Merci pour vos réponses et pour votre patience.
J'ai un niveau bidon en programmation donc il me faut beaucoup de temps pour comprendre pas mal de choses qui certainement vous paraissent évidentes.
Merci pour les annotations dans la macro jeanmi ça m'aide beaucoup.

Je vais essayer de trafiquer tout ça à ma sauce et vous tiens au jus.
LibreOffice 7.0
Microsoft 10 64 bits
Gus.gusgus
Membre lOOyal
Membre lOOyal
Messages : 25
Inscription : 25 sept. 2014 20:01

Re: [Base] Supprimer des enregistrements

Message par Gus.gusgus »

Bonjour, à tous,

j'ai modifié ma macro en suivant l'exemple de Jeanmi mais je tombe sur cet avertissement.
J'avoue que je ne comprends pas trop la différence avec l'exemple donné mis à part que ma colonne sont des integer et que dans celle de Jeanmi ce sont des Bigint
Capture.PNG
Bref si qqn a une idée ?
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 7.0
Microsoft 10 64 bits
Avatar de l’utilisateur
DLE
SuppOOrter
SuppOOrter
Messages : 1477
Inscription : 30 déc. 2007 18:56
Localisation : Lille

Re: [Base] Supprimer des enregistrements

Message par DLE »

Bonjour,

Remplacer .Text par .Value
Bonne journée.
MacOS Sonoma 14.4.1 (iMac-Intel) : AOO 4.1.15 , LibreOffice 7.6.5.2, Adoptium-temurinJDK_1.8.0_402 -
Windows 10 64 bits :
AOO 4.1.15, Libreoffice 7.1.8.1 - FireFox, Thunderbird, ORB 1.2.1
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25169
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Base] Supprimer des enregistrements

Message par Dude »

Gus.gusgus a écrit :avec l'exemple donné mis à part que ma colonne sont des integer
Et donc pourquoi vouloir récupérer une propriété Text ?
Le message d'erreur t'indique même qu'elle est introuvable.
Comme l'indique DLE, il faut utiliser logiquement une propriété récupérant une valeur.

Pour explorer les méthodes et propriétés des objets, on ne peut que te recommander l'usage de l'outil XRay :
https://forum.openoffice.org/fr/forum/v ... f=8&t=3234
Gus.gusgus
Membre lOOyal
Membre lOOyal
Messages : 25
Inscription : 25 sept. 2014 20:01

Re: [Base] Supprimer des enregistrements

Message par Gus.gusgus »

DLE bonjour,
DLE a écrit :Remplacer .Text par .Value
Bonne journée.
ET OUI ET ça marche donc un grand merci :super: .
Dude a écrit :Et donc pourquoi vouloir récupérer une propriété Text ?
Le message d'erreur t'indique même qu'elle est introuvable.
Parceque comme je l'ai dit, j'ai suivi le module donné par jeanmi où je ne sais pas pourquoi ça marche. Bref encore une fois, on est pas tous des superprogrammeurs et les solutions ne nous viennent pas de manière fluide même en lisant les tutos...
Pour l'outil Xray, apparemment ça ne marche pas avec les dernières versions de LibreOffice mais merci du conseil.

Je fais un récapitulatif des problèmes que j'ai rencontrés et des solutions qui m'on été données, si jamais des personnes se trouvent dans la même situation que moi :
- D'abord la mise en forme de la macro : (Lien Wiki de jeanmi avec des tas d'exemple, vraiment super)
- Énormément de problèmes avec la rédaction de la fonction (problème d'espace, de cote, etc... ) : Lien Wiki de Dude sur la MsgBox (vraiment bien)
- Et enfin la récupération d'un enregistrement afin de le modifier, supprimer, etc... : Table de Jeanmi "Test_SQL_Delete_Table" ou la mienne (peut-être moins clair) que je mets en pièce jointe qui contient aussi :
* l'ouverture d'une base sur un formulaire
* la fermeture d'un formulaire à l'aide d'un bouton
* quelques mise en forme pour la message box

Merci à tous
LibreOffice 7.0
Microsoft 10 64 bits
Avatar de l’utilisateur
jeanmi2403
SuppOOrter
SuppOOrter
Messages : 1398
Inscription : 18 janv. 2008 09:02
Localisation : Val de Marne

Re: [Base] Supprimer des enregistrements

Message par jeanmi2403 »

Bonsoir,
Dude a écrit :Comme l'indique DLE, il faut utiliser logiquement une propriété récupérant une valeur.
Pour explorer les méthodes et propriétés des objets, on ne peut que te recommander l'usage de l'outil XRay
Désolé, camarades
Mais un contrôle de table posé bêtement sur un formulaire, a toutes ses colonnes sous forme Text (par défaut). Comme le montre la copie Xray sur la colonne ID.
Triée en ordre alpha, donc pas de trace de "Value".
xrayColonneTable.PNG
Je ne vois arriver la propriété Value que si je "remplace par" un champ numérique.
Je l'ai d'ailleurs précisé dans le commentaire au-dessus de la ligne qui provoque l'erreur :

Code : Tout sélectionner

' Par défaut, la propriété contenant l'élément sélectionné est "Text", sauf si on a changé son type
'  par exemple pour un champ formaté
Gus.gusgu a écrit :Pour l'outil Xray, apparemment ça ne marche pas avec les dernières versions de LibreOffice mais merci du conseil
@Gus.gusgus : Xray fonctionne très bien avec LibO 7.0.5 et 7.1
Bonne soirée
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Jean-Michel
LibO 7.5.9 et AoO 4.1.15 sur Windows 11 & Ubuntu 22.04
LibO 7.6 sur OpenSuse & Linux MX