Date: prev next · Thread: first prev next last
2025 Archives by date, by thread · List index


Bonjour tout le monde et bonne année 2025 !

Je suis en train de m'amuser avec une petite base de données personnelle. J'utilise LO 24.8.4 ainsi que firebird comme base intégrée (pour tester).

Toujours pour le fun, ma base de données permet de gérer une petite bibliothèque (des bouquins, des auteurs). J'ai créé quelques formulaires simples pour remplir ma BD (pour l'instant, je dois avoir dix bouquins au maximum et à peu près le même nombre d'auteurs. C'est donc juste pour voir comment tout fonctionne, comment je peux améliorer les choses, etc.).

Dans un de mes formulaires, je souhaite créer (ou modifier) un livre. Et je veux pouvoir associer un ou plusieurs auteurs au livre. SQL ne me pose aucun problème de ce côté.

Pour le problème qui me tracasse, j'ai une table pour mes bouquins (avec clé primaire, titre, et autres infos pas importantes pour mon problème), une table d'auteurs (clé primaire, nom, prénom, et autres trucs), et enfin une table associant la table des livres avec celles des auteurs (deux champs: une clé étrangère vers la table des livres, une clé étrangère vers la table des auteurs, les deux champs formant la clé primaire de la table d'association). Je peux ainsi avoir un auteur avec plein de romans à son actif, ou bien un bien un roman avec, si nécessaire, plusieurs auteurs, et puis bien sûr le truc trivial: un livre un auteur.

Lors d'une première version de mon formulaire, pour pouvoir associer un auteur au livre, j'utilise une liste déroulante qui affiche le contenu de la table des auteurs (y en a pas beaucoup, ne l'oublions pas). Cela, je sais faire.

Et je me suis posé la question: le jour où j'aurais beaucoup d'auteurs dans ma BD, ça va moins le faire. Je me suis dit: pourquoi ne pas afficher une liste d'auteurs dans une table (avec une requête sql qui va bien), puis sélectionner l'auteur désiré dans cette table et l'associer au bouquin.

J'ai donc écrit une macro basic pour faire ça. Et ça marche. Je clique sur une ligne de la table, et je suis capable de récupérer la clé primaire de cet auteur. Puis j'essaie d'injecter cette valeur dans la partie clé étrangère de la table association (ce que faisait très bien la liste déroulante). Pour visualiser ce que je fais, j'ai un contrôle numérique qui correspond à la partie clé étrangère vers auteurs.

C'est l'injection qui pose problème: le formulaire ne considère pas cette injection comme une modification. Donc impossible d'enregistrer le nouveau tuple de la table association. En revanche, si je saisis à la main dans le champ numérique, le formulaire accepte la donnée.

J'en déduis qu'en cliquant dans un contrôle (ici un contrôle numérique), un évènement est remonté au formulaire. Il faudrait donc que je simule ceci par basic, et là, je bloque. Quelles méthodes doit-on utiliser sur les objets "contrôles" pour que cela se comporte comme si on faisait une saisie souris-clavier?

Si quelqu'un a une solution, je suis preneur.

Merci d'avance

Michel

--
Envoyez un mail à users+unsubscribe@fr.libreoffice.org pour vous désinscrire
Les archives de la liste sont disponibles à https://listarchives.libreoffice.org/fr/users/
Privacy Policy: https://www.documentfoundation.org/privacy

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.