[Base] Ouvrir formulaire après recherche depuis Zone de liste ou Contrôle de table
Modérateur : Vilains modOOs
Règles du forum
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 !
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 !
-
- Membre hOOnoraire
- Messages : 128
- Inscription : 30 oct. 2010 16:54
[Base] Ouvrir formulaire après recherche depuis Zone de liste ou Contrôle de table
Bonsoir,
Comme réponse à ma question posée dans le forum Base, Dude m'a conseillé de travailler ce post de "Suprême de code"
J'ai commencé à creuser : mais dans le formulaire "fForm1", il y a un message d'erreur pour la Zone de liste La Zone de liste ne fonctionne pas, message ="Impossible déterminer contenu ; column not found: 2", et comme elle est centrale dans la logique du tuto, je suis bloqué !
Merci de vos lumières.
Comme réponse à ma question posée dans le forum Base, Dude m'a conseillé de travailler ce post de "Suprême de code"
J'ai commencé à creuser : mais dans le formulaire "fForm1", il y a un message d'erreur pour la Zone de liste La Zone de liste ne fonctionne pas, message ="Impossible déterminer contenu ; column not found: 2", et comme elle est centrale dans la logique du tuto, je suis bloqué !
Merci de vos lumières.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par anatole le 17 nov. 2023 15:58, modifié 2 fois.
Papy-geek... Windows 10 Famille 22H2 build 19045.3570 - pack 1000.19052.1000.0 {64bits} LibreOffice 7.5.7.1.- Huawei MateStation S Ryzen 5 4600G Radeon Graphics 3.70GHz RAM 8G0 - 2 ... l'Aventure continue !
-
- SuppOOrter
- Messages : 1047
- Inscription : 19 août 2018 05:20
Re: [Base] Ouvrir un formulaire
Bonsoir,
Le message me semble pourtant clair : votre requête devrait renvoyer deux colonnes.
Open Office 4.1.15 sous Windows 11
-
- Membre hOOnoraire
- Messages : 128
- Inscription : 30 oct. 2010 16:54
Re: [Base] Ouvrir un formulaire
Bonsoir Dolev,
En fait, il s'agit d'un exemple associé à un tuto et je n'ai pas réalisé cette Bdd ! (j'ai corrigé la première version de ma question où je croyais, à tort, avoir repéré une erreur de formulation dans la Zone de Liste").
Donc je ne vois pas comment corriger ce message d'erreur associé à la Zone de liste et qui m'empêche d'étudier ce tuto
Bonne soirée
En fait, il s'agit d'un exemple associé à un tuto et je n'ai pas réalisé cette Bdd ! (j'ai corrigé la première version de ma question où je croyais, à tort, avoir repéré une erreur de formulation dans la Zone de Liste").
Donc je ne vois pas comment corriger ce message d'erreur associé à la Zone de liste et qui m'empêche d'étudier ce tuto
Bonne soirée
Papy-geek... Windows 10 Famille 22H2 build 19045.3570 - pack 1000.19052.1000.0 {64bits} LibreOffice 7.5.7.1.- Huawei MateStation S Ryzen 5 4600G Radeon Graphics 3.70GHz RAM 8G0 - 2 ... l'Aventure continue !
-
- Grand Maître de l'OOffice
- Messages : 17084
- Inscription : 03 mars 2006 16:02
- Localisation : Venise verte
Re: [Base] Ouvrir un formulaire
Comme le suggère dolev, la requête du contrôle Zone de liste devrait être :
Code : Tout sélectionner
SELECT "Enregistrement", "IdEnr" FROM "tEnregistrement"
LibreOffice : Version : 24.8.2 (x64)(10 novembre 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
-
- Membre hOOnoraire
- Messages : 128
- Inscription : 30 oct. 2010 16:54
Re: [Base] Ouvrir un formulaire
Merci Jeanmimi : j'ai corrigé la commande de la Zone de liste dans "OuvertureFormSurEnr.odb" et j'ai commencé à travailler :
- le bouton ouvrir "par filtre" fonctionne parfaitement ;
par contre :
- le bouton ouvrir "par requête" semble ouvrir le formulaire "fEnregistrement" sur la création d'un nouvel enregistrement ?
- le bouton ouvrir "par signet" génère un message "enregistrement non trouvé" ?
Hélas, je n'ai pas les compétences pour repérer ce qui doit, peut-être, être corrigé
J'ai commencé aussi à travailler l'autre exemple : "OvertureFermeture.odb" donné dans ce post : très très intéressant avec par exemple "Le bouton Ouvrir par Tag ... qui nécessite que le nom du Formulaire à ouvrir soit nommé dans la propriété "Complément d'information"(Tag) du Bouton mais peut être utilisé sans avoir à retaper du code ". En tout cas, j'ai du pain sur la planche.
Bonne journée
- le bouton ouvrir "par filtre" fonctionne parfaitement ;
par contre :
- le bouton ouvrir "par requête" semble ouvrir le formulaire "fEnregistrement" sur la création d'un nouvel enregistrement ?
- le bouton ouvrir "par signet" génère un message "enregistrement non trouvé" ?
Hélas, je n'ai pas les compétences pour repérer ce qui doit, peut-être, être corrigé
J'ai commencé aussi à travailler l'autre exemple : "OvertureFermeture.odb" donné dans ce post : très très intéressant avec par exemple "Le bouton Ouvrir par Tag ... qui nécessite que le nom du Formulaire à ouvrir soit nommé dans la propriété "Complément d'information"(Tag) du Bouton mais peut être utilisé sans avoir à retaper du code ". En tout cas, j'ai du pain sur la planche.
Bonne journée
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Papy-geek... Windows 10 Famille 22H2 build 19045.3570 - pack 1000.19052.1000.0 {64bits} LibreOffice 7.5.7.1.- Huawei MateStation S Ryzen 5 4600G Radeon Graphics 3.70GHz RAM 8G0 - 2 ... l'Aventure continue !
-
- Grand Maître de l'OOffice
- Messages : 17084
- Inscription : 03 mars 2006 16:02
- Localisation : Venise verte
Re: [Base] Ouvrir un formulaire
Comme tu l'as constaté, les Macros de cette Base ouvrent le formulaire fEnregistrement vide en utilisant.
Si tu veux regarder un exemple de Base ouvrant un formulaire sur un enregistrement sélectionné dans un contrôle Zone de liste du formulaire FmMenu , il y a cet exemple avec lequel l'affichage dans un des 3 contrôles Zones de liste ouvre le formulaire avec les détails de la fiche client :
Si tu veux regarder un exemple de Base ouvrant un formulaire sur un enregistrement sélectionné dans un contrôle Zone de liste du formulaire FmMenu , il y a cet exemple avec lequel l'affichage dans un des 3 contrôles Zones de liste ouvre le formulaire avec les détails de la fiche client :
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice : Version : 24.8.2 (x64)(10 novembre 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
-
- RespOOnsable forum
- Messages : 12457
- Inscription : 08 nov. 2005 16:23
- Localisation : Caen, France
Re: [Base] Ouvrir un formulaire
On va (encore une fois) vous le signaler : votre titre n'est pas pertinent.
A ce jour la recherche a retourné 829 résultats sur : base ouvrir formulaire
Veuillez corriger pour que cela soit explicite pour ceux qui feront des recherches dans ce forum.
Merci de faire un effort pour nous aider à garder optimum la qualité.
A ce jour la recherche a retourné 829 résultats sur : base ouvrir formulaire
Veuillez corriger pour que cela soit explicite pour ceux qui feront des recherches dans ce forum.
Merci de faire un effort pour nous aider à garder optimum la qualité.
-
- Membre hOOnoraire
- Messages : 128
- Inscription : 30 oct. 2010 16:54
Re: [Base] Ouvrir formulaire après recherche depuis Zone de liste ou Contrôle de table
Bonsoir Jeanmimi,
J'ai travaillé sur ces macros pour ouvrir un formulaire ...
et particulièrement sur le dernier exemple que tu as posté "Macro pour ouvrir formulaires depuis formulaire Menu déroulant.odb" : merci ; en essayant "sélectionner un n° contrat", j'ai eu un message d'erreur :
Bon, moi j'ai essayé d'adapter "BtParNoClient" sur mon "FORM_Fonds gestion" avec un bouton vers "FORMStructures" depuis une zone de liste "Structures"...
Mais je ne maîtrise pas encore bien la syntaxe : ça ne marche pas.
Bonne soirée et bon vikend.
J'ai travaillé sur ces macros pour ouvrir un formulaire ...
et particulièrement sur le dernier exemple que tu as posté "Macro pour ouvrir formulaires depuis formulaire Menu déroulant.odb" : merci ; en essayant "sélectionner un n° contrat", j'ai eu un message d'erreur :
Code : Tout sélectionner
Type: com.sun.star.sdbc.SQLException Message: No data is available.
Mais je ne maîtrise pas encore bien la syntaxe : ça ne marche pas.
Code : Tout sélectionner
Sous-procédure ou procédure fonction non définie
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par anatole le 18 nov. 2023 15:41, modifié 1 fois.
Papy-geek... Windows 10 Famille 22H2 build 19045.3570 - pack 1000.19052.1000.0 {64bits} LibreOffice 7.5.7.1.- Huawei MateStation S Ryzen 5 4600G Radeon Graphics 3.70GHz RAM 8G0 - 2 ... l'Aventure continue !
-
- SuppOOrter
- Messages : 1047
- Inscription : 19 août 2018 05:20
Re: [Base] Ouvrir formulaire après recherche depuis Zone de liste ou Contrôle de table
Bonjour,
Votre requête ne renvoie rien.
Le message n'est-il pas clair ? Pas de donnée disponible.
Votre requête ne renvoie rien.
Le seul moyen de maîtriser l'API et les propriétés et méthodes est d'installer Xray : viewtopic.php?t=3234
-
- Membre hOOnoraire
- Messages : 128
- Inscription : 30 oct. 2010 16:54
Re: [Base] Ouvrir formulaire après recherche depuis Zone de liste ou Contrôle de table
Bonsoir Dolev.
Merci pour les infos concernant Xray je vais télécharger et regarder mais, il est vrai que je redoute un peu la complexité et le temps que va demander cet investissement dans un début de programmation pour peaufiner les macros dont j'ai besoin
- Le premier message concerne l'exemple de Bdd avec macros que Jeanmimi a posté pour m'aider.
- Le deuxième concerne l'adaptation que j'ai essayé de faire dans ma Bdd "XXX forum 23 11 17" avec ma macro "BtVisuStruct" pour aller du formulaire "FORM_Fonds gestion" à "FORMStructures"...
En fait, je commence à comprendre les macros d'ouverture de formulaire depuis Zone de liste, mais je bloque pour l'affichage d'enregistrements obtenus par une recherche qui passe par une Table jointe : dans mon exemple "XXX Forum"(j'ai mis un visuel) : lorsque dans le formulaire "Fonds_gestion", via un contrôle de la Table jointe "Individus_Statuts_Pièces_Fonds" : je fais une recherche sur le champ "Auteur" et que je voudrais afficher dans ce même formulaire, les enregistrements correspondant aux auteurs trouvés.
Bon vikend.
Merci pour les infos concernant Xray je vais télécharger et regarder mais, il est vrai que je redoute un peu la complexité et le temps que va demander cet investissement dans un début de programmation pour peaufiner les macros dont j'ai besoin
- Le premier message
Code : Tout sélectionner
Type: com.sun.star.sdbc.SQLException Message: No data is available.
- Le deuxième concerne l'adaptation que j'ai essayé de faire dans ma Bdd "XXX forum 23 11 17" avec ma macro "BtVisuStruct" pour aller du formulaire "FORM_Fonds gestion" à "FORMStructures"...
En fait, je commence à comprendre les macros d'ouverture de formulaire depuis Zone de liste, mais je bloque pour l'affichage d'enregistrements obtenus par une recherche qui passe par une Table jointe : dans mon exemple "XXX Forum"(j'ai mis un visuel) : lorsque dans le formulaire "Fonds_gestion", via un contrôle de la Table jointe "Individus_Statuts_Pièces_Fonds" : je fais une recherche sur le champ "Auteur" et que je voudrais afficher dans ce même formulaire, les enregistrements correspondant aux auteurs trouvés.
Bon vikend.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Papy-geek... Windows 10 Famille 22H2 build 19045.3570 - pack 1000.19052.1000.0 {64bits} LibreOffice 7.5.7.1.- Huawei MateStation S Ryzen 5 4600G Radeon Graphics 3.70GHz RAM 8G0 - 2 ... l'Aventure continue !
-
- Membre OOrganisé
- Messages : 82
- Inscription : 30 mars 2012 16:13
- Localisation : Savoie, France
Re: [Base] Ouvrir formulaire après recherche depuis Zone de liste ou Contrôle de table
Bonjour,
1 - Dans l'exemple de base donné par Jeanmimi, j'ai aussi une erreur pour la recherche sur la 2e liste. Cette erreur est simple.
Comprendre que dans une zone de liste, il peut y avoir plusieurs colonnes dans la requête sous-jacente (mais LO n'affiche que la première dans la liste). Et surtout quand on fait référence à cette liste dans une macro, la valeur que l'on va récupérer concerne la colonne dont le numéro est définie par la propriété « Champ lié » dans l'onglet "Données" des propriétés de cette liste ; avec une subtilité : la première colonne a le numéro 0, la 2e le numéro 1. Or, ici, elle était réglée à 1 et c'était donc le champs 'ID' qui était récupéré alors que la requête écrite dans le code attend le champ 'N_contrat'. Si l'on met 0, le formulaire marche.
A vérifier : jeanmimi semble utiliser Openoffice et, toi et moi, LibreOffice : le simple fait d'être sur des versions différentes peut expliquer le problème pour nous.
2- Ta base de données est complexe dans le sens où je ne comprends pas bien les informations qu'elle manipule. Le formulaire principale est aussi tarabiscoté (pour moi) avec une imbrication de sous-formulaire dans d''autres sous-formulaire…
Je comprends que tu veux choisir un auteur dans la partie jaune et que ce choix actualise automatiquement la table de droite en fonction de cet auteur.
Plusieurs méthode pour cela :
1 - Dans l'exemple de base donné par Jeanmimi, j'ai aussi une erreur pour la recherche sur la 2e liste. Cette erreur est simple.
Comprendre que dans une zone de liste, il peut y avoir plusieurs colonnes dans la requête sous-jacente (mais LO n'affiche que la première dans la liste). Et surtout quand on fait référence à cette liste dans une macro, la valeur que l'on va récupérer concerne la colonne dont le numéro est définie par la propriété « Champ lié » dans l'onglet "Données" des propriétés de cette liste ; avec une subtilité : la première colonne a le numéro 0, la 2e le numéro 1. Or, ici, elle était réglée à 1 et c'était donc le champs 'ID' qui était récupéré alors que la requête écrite dans le code attend le champ 'N_contrat'. Si l'on met 0, le formulaire marche.
A vérifier : jeanmimi semble utiliser Openoffice et, toi et moi, LibreOffice : le simple fait d'être sur des versions différentes peut expliquer le problème pour nous.
2- Ta base de données est complexe dans le sens où je ne comprends pas bien les informations qu'elle manipule. Le formulaire principale est aussi tarabiscoté (pour moi) avec une imbrication de sous-formulaire dans d''autres sous-formulaire…
Je comprends que tu veux choisir un auteur dans la partie jaune et que ce choix actualise automatiquement la table de droite en fonction de cet auteur.
Plusieurs méthode pour cela :
- Une que je propose ici. On utilise les propriétés 'maître et esclave' des propriétés d'un sous-formulaire. On choisit une valeur (nommée maître) dans le formulaire principal (ce sera l'auteur) et le sous-formulaire n'affiche que les enregistrements correspondant à la valeur esclave (identique au maître mais qui peut avoir un nom différent) du sous-fomulaire. La liste déroulante des auteurs ne suffit pas. Il faudrait qu'elle mette à jour le formulaire principal. J'ai donc ajouté un autre contrôle table. Je ne pense pas que ce soit le plus pratique. Pour montrer que ça marche. C'est le fichier que je te joins ;
- La méthode qui me paraît la plus simple est de réutiliser les procédures proposées dans l'exemple de jeanmimi : on garde la liste déroulante des auteurs. Sur l'évènement 'Modifié' de cette liste, on établit en macro une requête qui filtre les publications selon cette liste, mais là, on n'ouvre pas un nouveau formulaire, mais on l'attribue au sous-formulaire puis on le recharge par la commande .reload
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 24.2.5.2 sur Ubuntu 24.04 GNOME (version officielle). Base en frontale d'une base MySQL ; échec liaison directe => liaison JDBC.
-
- RespOOnsable forum
- Messages : 12457
- Inscription : 08 nov. 2005 16:23
- Localisation : Caen, France
-
- Membre OOrganisé
- Messages : 82
- Inscription : 30 mars 2012 16:13
- Localisation : Savoie, France
Re: [Base] Ouvrir formulaire après recherche depuis Zone de liste ou Contrôle de table
Gloups ! J'ai bien regardé mais mélangé avec la signature d'un autre intervenant !
LibreOffice 24.2.5.2 sur Ubuntu 24.04 GNOME (version officielle). Base en frontale d'une base MySQL ; échec liaison directe => liaison JDBC.
-
- Membre hOOnoraire
- Messages : 128
- Inscription : 30 oct. 2010 16:54
Re: [Base] Ouvrir formulaire après recherche depuis Zone de liste ou Contrôle de table
Merci Beaucoup Averne73 pour ces éléments.
Effectivement, j'ai pu corriger l'exemple de JeanMimi
Je te confirme que ma Bdd de "Recherches historiques" est très tarabiscotée... et je n'en ai mis ici qu'une partie ! : je suis un papy-geek totalement amateur et j'avais ouvert un sujet au début sur mon projet. Peut-être devrais-je le ré-ouvrir pour ré-organiser sa structuration générale
Je préfère rester concentré sur le sujet de ce post. Cette table "Fonds" répertorie des "dossiers d'archives" ou des "livres", chacun associé à une Structure, un Editeur (=Champs de la Table "Fonds") etc... et également à un Auteur/Individu (= "Table Individus" via une Table Jointe)
Quand je fais des recherches sur des champs appartenant directement à la table "Fonds" pour extraire les enregistrements trouvés dans le formulaire "FORM_Fonds gestion" : comme on me l'a confirmé ici, je peux utiliser les "Filtres formulaire" dont les résultats sont affichés dans le même formulaire.
Mon problème : les recherches sur des champs associés à la table "Fonds" par une Table Jointe, par exemple, la recherche sur le champ "Auteur/Individu" : après avoir trouvé les 3/4...Fonds associés à tel Auteur/Individu, comment pouvoir afficher ces 3/4... Fonds trouvés toujours dans le formulaire "FORM_Fonds gestion
J'ai commencé à travailler :
"Pour montrer que ça marche. C'est le fichier que je te joins" : mais apparemment dans ton exemple la liste déroulante "Auteur" (à gauche) ne permet plus d'affecter un auteur à un Fonds, ce qui était sa fonction première.
"réutiliser les procédures de Jeanmimi" : je replonge dedans
Encore Merci
Effectivement, j'ai pu corriger l'exemple de JeanMimi
Je te confirme que ma Bdd de "Recherches historiques" est très tarabiscotée... et je n'en ai mis ici qu'une partie ! : je suis un papy-geek totalement amateur et j'avais ouvert un sujet au début sur mon projet. Peut-être devrais-je le ré-ouvrir pour ré-organiser sa structuration générale
Je préfère rester concentré sur le sujet de ce post. Cette table "Fonds" répertorie des "dossiers d'archives" ou des "livres", chacun associé à une Structure, un Editeur (=Champs de la Table "Fonds") etc... et également à un Auteur/Individu (= "Table Individus" via une Table Jointe)
Quand je fais des recherches sur des champs appartenant directement à la table "Fonds" pour extraire les enregistrements trouvés dans le formulaire "FORM_Fonds gestion" : comme on me l'a confirmé ici, je peux utiliser les "Filtres formulaire" dont les résultats sont affichés dans le même formulaire.
Mon problème : les recherches sur des champs associés à la table "Fonds" par une Table Jointe, par exemple, la recherche sur le champ "Auteur/Individu" : après avoir trouvé les 3/4...Fonds associés à tel Auteur/Individu, comment pouvoir afficher ces 3/4... Fonds trouvés toujours dans le formulaire "FORM_Fonds gestion
J'ai commencé à travailler :
"Pour montrer que ça marche. C'est le fichier que je te joins" : mais apparemment dans ton exemple la liste déroulante "Auteur" (à gauche) ne permet plus d'affecter un auteur à un Fonds, ce qui était sa fonction première.
"réutiliser les procédures de Jeanmimi" : je replonge dedans
Encore Merci
Dernière modification par anatole le 03 déc. 2023 16:22, modifié 1 fois.
Papy-geek... Windows 10 Famille 22H2 build 19045.3570 - pack 1000.19052.1000.0 {64bits} LibreOffice 7.5.7.1.- Huawei MateStation S Ryzen 5 4600G Radeon Graphics 3.70GHz RAM 8G0 - 2 ... l'Aventure continue !
-
- SuppOOrter
- Messages : 1047
- Inscription : 19 août 2018 05:20
Re: [Base] Ouvrir formulaire après recherche depuis Zone de liste ou Contrôle de table
Re,
Comme ces contrôles sont différents dans leur approche de l'API, fournissez un exemple plus simple de ce que qui est attendu comme résultat.depuis Zone de liste ou Contrôle de table
Open Office 4.1.15 sous Windows 11
-
- Membre hOOnoraire
- Messages : 128
- Inscription : 30 oct. 2010 16:54
Re: [Base] Ouvrir formulaire après recherche depuis Zone de liste ou Contrôle de table
Bonsoir Dolev et merci de ton intérêt pour mon souci.
"depuis Zone de liste ou Contrôle de table" : je n'ose dire les deux mon Capitaine. Je m'explique !
Quand je fais des recherches sur des champs directement présents dans ma table : pas de souci : dans mon Formulaire, j'utilise les "filtres formulaire".
1. Depuis Contrôle de Table :
Mais quand il s'agit de champs associés à ma table par des Tables Jointes, la recherche est plus compliquée ! Dude m'a donné la solution : pour rechercher "des Individus" associés à un "Fonds", sur un Formulaire "formVisuFonds"/"TJ_INDIVIDUS_STATUTS_PIECES_FONDS" (à droite sur fond marron), j'ai créé un Contrôle de la Table jointe et fais mes recherches grâce au filtre standard de la barre de navigation : je voudrais afficher les enregistrements trouvés dans le sous-Formulaire (à gauche sur fond jaune) "formFondsGestion"/"T_FONDS"
2. Depuis Zone de liste : j'ai voulu essayer la macro donnée, plus haut dans le fil, par Jeanmimi :
Donc dans un autre Formulaire "formTjFonds"/"TJ_INDIVIDUS_STATUTS_PIECES_FONDS", depuis une Liste déroulante "FON_ID", j'ai mis un bouton associé à la macro pour ouvrir l'enregistrement dans le sous-Formulaire "formVisuFonds"/"formVisuFonds" : mais j'ai un message d'erreur (? mauvais indication du chemin ?)
Voilà
Bon vikend.
"depuis Zone de liste ou Contrôle de table" : je n'ose dire les deux mon Capitaine. Je m'explique !
Quand je fais des recherches sur des champs directement présents dans ma table : pas de souci : dans mon Formulaire, j'utilise les "filtres formulaire".
1. Depuis Contrôle de Table :
Mais quand il s'agit de champs associés à ma table par des Tables Jointes, la recherche est plus compliquée ! Dude m'a donné la solution : pour rechercher "des Individus" associés à un "Fonds", sur un Formulaire "formVisuFonds"/"TJ_INDIVIDUS_STATUTS_PIECES_FONDS" (à droite sur fond marron), j'ai créé un Contrôle de la Table jointe et fais mes recherches grâce au filtre standard de la barre de navigation : je voudrais afficher les enregistrements trouvés dans le sous-Formulaire (à gauche sur fond jaune) "formFondsGestion"/"T_FONDS"
2. Depuis Zone de liste : j'ai voulu essayer la macro donnée, plus haut dans le fil, par Jeanmimi :
Donc dans un autre Formulaire "formTjFonds"/"TJ_INDIVIDUS_STATUTS_PIECES_FONDS", depuis une Liste déroulante "FON_ID", j'ai mis un bouton associé à la macro pour ouvrir l'enregistrement dans le sous-Formulaire "formVisuFonds"/"formVisuFonds" : mais j'ai un message d'erreur (? mauvais indication du chemin ?)
Voilà
Bon vikend.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par anatole le 03 déc. 2023 16:28, modifié 1 fois.
Papy-geek... Windows 10 Famille 22H2 build 19045.3570 - pack 1000.19052.1000.0 {64bits} LibreOffice 7.5.7.1.- Huawei MateStation S Ryzen 5 4600G Radeon Graphics 3.70GHz RAM 8G0 - 2 ... l'Aventure continue !
-
- SuppOOrter
- Messages : 1047
- Inscription : 19 août 2018 05:20
Re: [Base] Ouvrir formulaire après recherche depuis Zone de liste ou Contrôle de table
Re,
Si vous ne déboguez pas un peu mieux vos macros, vous allez perdre beaucoup de temps.
Non, que dit le message d'erreur : En clair la routine openform n'existe pas.
Si vous ne déboguez pas un peu mieux vos macros, vous allez perdre beaucoup de temps.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Open Office 4.1.15 sous Windows 11
-
- Membre hOOnoraire
- Messages : 128
- Inscription : 30 oct. 2010 16:54
Re: [Base] Ouvrir formulaire après recherche depuis Zone de liste ou Contrôle de table
Merci Dolev pour votre réponse.
Je suis bloqué et ne vois pas comment définir cette "procédure" non définic'est-à-dire repérer les différences entre ma base-exemple et celle de Jeanmimi, au-delà du simple changement de nom des objets en rouge !
"Si vous ne déboguez pas un peu mieux vos macros" : je suppose que je devrais plonger dans un outil comme Xray ? mais déjà je ne vois pas où concrètement effectuer cette première instruction donné dans son guide d'emploi : "Dans votre macro en cours de mise au point, vous devez insérer (temporairement) un appel de la macro Xray"Merci et bon dimanche
Je suis bloqué et ne vois pas comment définir cette "procédure" non défini
Code : Tout sélectionner
oNewformDoc = openform("FORMfondsGestion")
"Si vous ne déboguez pas un peu mieux vos macros" : je suppose que je devrais plonger dans un outil comme Xray ? mais déjà je ne vois pas où concrètement effectuer cette première instruction donné dans son guide d'emploi : "Dans votre macro en cours de mise au point, vous devez insérer (temporairement) un appel de la macro Xray"
Code : Tout sélectionner
Sub Main Xray ThisComponent End Sub
Papy-geek... Windows 10 Famille 22H2 build 19045.3570 - pack 1000.19052.1000.0 {64bits} LibreOffice 7.5.7.1.- Huawei MateStation S Ryzen 5 4600G Radeon Graphics 3.70GHz RAM 8G0 - 2 ... l'Aventure continue !
-
- SuppOOrter
- Messages : 1047
- Inscription : 19 août 2018 05:20
Re: [Base] Ouvrir formulaire après recherche depuis Zone de liste ou Contrôle de table
Si vous inventez des noms de procédure, comment voulez-vous que cela fonctionne ?
On voit dans le catalogue d'objets qu'il n'y a aucun "openform" déclaré :
Faites effectivement d'abord ce travail. Cela devrait ensuite être fonctionnel.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Open Office 4.1.15 sous Windows 11
-
- Membre hOOnoraire
- Messages : 128
- Inscription : 30 oct. 2010 16:54
Re: [Base] Ouvrir formulaire après recherche depuis Zone de liste ou Contrôle de table
Re et merci mille fois pour votre patience Dolev
Ca marche ! Mais j'ai une question : dans cette macro est-il possible d'indiquer un chemin pour faire ouvrir un "Sous-Formulaire" placé en-dessous du premier (sous-)Formulaire, dans mon exemple qui serait en dessous de "formVisuFonds"
Et puis, il reste mon autre problème dont je parle plus haut dans le fil :" 1. Depuis Contrôle de Table : Mais quand il s'agit de champs associés à ma table par des Tables Jointes, .../... sur un Formulaire "formVisuFonds"/"TJ_INDIVIDUS_STATUTS_PIECES_FONDS" (à droite sur fond marron)"
J'imagine qu'ici pour obtenir l'affichage, il faudrait d'abord demander à la macro de sélectionner dans la "TJ_INDIVIDUS_STATUTS_PIECES_FONDS" tous les FON_ID (Fonds) associés aux IND_ID (Individus) figurant dans les résultats trouvés
En tout cas, je ne suis plus bloqué, je crois même que j'avance
Ca marche ! Mais j'ai une question : dans cette macro est-il possible d'indiquer un chemin pour faire ouvrir un "Sous-Formulaire" placé en-dessous du premier (sous-)Formulaire, dans mon exemple qui serait en dessous de "formVisuFonds"
Et puis, il reste mon autre problème dont je parle plus haut dans le fil :" 1. Depuis Contrôle de Table : Mais quand il s'agit de champs associés à ma table par des Tables Jointes, .../... sur un Formulaire "formVisuFonds"/"TJ_INDIVIDUS_STATUTS_PIECES_FONDS" (à droite sur fond marron)"
J'imagine qu'ici pour obtenir l'affichage, il faudrait d'abord demander à la macro de sélectionner dans la "TJ_INDIVIDUS_STATUTS_PIECES_FONDS" tous les FON_ID (Fonds) associés aux IND_ID (Individus) figurant dans les résultats trouvés
En tout cas, je ne suis plus bloqué, je crois même que j'avance
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par anatole le 04 déc. 2023 15:05, modifié 1 fois.
Papy-geek... Windows 10 Famille 22H2 build 19045.3570 - pack 1000.19052.1000.0 {64bits} LibreOffice 7.5.7.1.- Huawei MateStation S Ryzen 5 4600G Radeon Graphics 3.70GHz RAM 8G0 - 2 ... l'Aventure continue !
-
- Grand Maître de l'OOffice
- Messages : 17084
- Inscription : 03 mars 2006 16:02
- Localisation : Venise verte
Re: [Base] Ouvrir formulaire après recherche depuis Zone de liste ou Contrôle de table
La Base que j'ai jointe a été développée dans ce fil de messages :
viewtopic.php?p=177232#p177232
En les testant aujourd'hui, je constate qu'elles dysfonctionnaient déjà lorsque Drake a posté la sienne.
LibreOffice : Version : 24.8.2 (x64)(10 novembre 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
-
- Membre OOrganisé
- Messages : 82
- Inscription : 30 mars 2012 16:13
- Localisation : Savoie, France
Re: [Base] Ouvrir formulaire après recherche depuis Zone de liste ou Contrôle de table
Bonsoir.
@ anatole
C'est le formulaire sur lequel tu posais une question dont la structure paraît inutilement compliquée avec trop de sous-formulaires imbriqués, me semble-t-il. Ne compliquer les choses que si nécessaire ! Je ne parlais pas de la structure de ta base de données (les tables et leurs relations) dont je comprends à peu près la structure globale. Il a des noms de tables peu explicites comme "TJ_INDIVIDUS_STATUTS_PIECES_FONDS", qui relie les Fonds (les ouvrages) aux auteurs ; elle aurait pu s'appeler "Auteurs" simplement (un ouvrage peut avoir plusieurs auteurs -de la table Individus- et un auteur peut avoir écrit plusieurs ouvrages ; donc, relation plusieurs à plusieurs qui nécessitent une table intermédiaire et c'est ce que tu as fait avec cette table "TJ_INDIVIDUS_STATUTS_PIECES_FONDS").
Ensuite, j'essaie de reformuler ce que tu a écrit. Je comprends que tu veux 2 choses différentes :
Alors pour le 1., l'utilisation des filtres du formulaire sont une solution simple sans programmation. Je ne connais pas bien mais une solution simple me semble-t-il est de faire un formulaire dont la source est une requête comprenant les différentes tables sur lesquelles on veut filtrer. Dans ce formulaire, les champs des 2 tables seront disponibles pour le filtre. Je te le propose dans le fichier joint dans le simple formulaire "Fonds et auteurs" et la requête associée.
L'autre méthode est d'utiliser une macro qui va récupérer la valeur choisie dans la liste déroulante des auteurs et écrire la requête SQL dans le code avant de l'attribuer au formulaire contenant la table : ce sont les exemples du fichier de jeanmimi et ce que j'ai fait dans le point suivant.
Pour le 2 : dans le même formulaire, à la partie inférieure, tu as une procédure qui ajoute un auteur et montre dans une table les auteurs attribués.
J'ai aussi créé une requête du même nom qui est la source du formulaire principal. Et j'ai créé 2 procédures dans le code qui sont attachés à un événement d'une liste et du bouton.
Désolé : j'ai mis beaucoup de temps et j'arrive peut-être un peu tard.
@ anatole
C'est le formulaire sur lequel tu posais une question dont la structure paraît inutilement compliquée avec trop de sous-formulaires imbriqués, me semble-t-il. Ne compliquer les choses que si nécessaire ! Je ne parlais pas de la structure de ta base de données (les tables et leurs relations) dont je comprends à peu près la structure globale. Il a des noms de tables peu explicites comme "TJ_INDIVIDUS_STATUTS_PIECES_FONDS", qui relie les Fonds (les ouvrages) aux auteurs ; elle aurait pu s'appeler "Auteurs" simplement (un ouvrage peut avoir plusieurs auteurs -de la table Individus- et un auteur peut avoir écrit plusieurs ouvrages ; donc, relation plusieurs à plusieurs qui nécessitent une table intermédiaire et c'est ce que tu as fait avec cette table "TJ_INDIVIDUS_STATUTS_PIECES_FONDS").
Ensuite, j'essaie de reformuler ce que tu a écrit. Je comprends que tu veux 2 choses différentes :
- A partir du choix d'un auteur dans une liste déroulante, voir immédiatement affichés les "Fonds" qui le concernent. En sachant que ces informations sont dans 2 tables différentes (mais reliées) ;
- Pouvoir affecter un auteur à un fond.
Alors pour le 1., l'utilisation des filtres du formulaire sont une solution simple sans programmation. Je ne connais pas bien mais une solution simple me semble-t-il est de faire un formulaire dont la source est une requête comprenant les différentes tables sur lesquelles on veut filtrer. Dans ce formulaire, les champs des 2 tables seront disponibles pour le filtre. Je te le propose dans le fichier joint dans le simple formulaire "Fonds et auteurs" et la requête associée.
L'autre méthode est d'utiliser une macro qui va récupérer la valeur choisie dans la liste déroulante des auteurs et écrire la requête SQL dans le code avant de l'attribuer au formulaire contenant la table : ce sont les exemples du fichier de jeanmimi et ce que j'ai fait dans le point suivant.
Pour le 2 : dans le même formulaire, à la partie inférieure, tu as une procédure qui ajoute un auteur et montre dans une table les auteurs attribués.
J'ai aussi créé une requête du même nom qui est la source du formulaire principal. Et j'ai créé 2 procédures dans le code qui sont attachés à un événement d'une liste et du bouton.
Désolé : j'ai mis beaucoup de temps et j'arrive peut-être un peu tard.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 24.2.5.2 sur Ubuntu 24.04 GNOME (version officielle). Base en frontale d'une base MySQL ; échec liaison directe => liaison JDBC.
-
- Membre hOOnoraire
- Messages : 128
- Inscription : 30 oct. 2010 16:54
Re: [Base] Ouvrir formulaire après recherche depuis Zone de liste ou Contrôle de table
Bonjour Jeanmimi.
En tout cas : les macros votre exemple "Macro pour ouvrir formulaires depuis formulaire Menu déroulant.odb" marchent puisque j'ai pu en adapter une avec l'aide de Dolev
Quant à votre autre exemple de base après correction sur la zone de liste, elle me paraît fonctionner : je dois re-plonger dedans.
Je viens de voir le nouveau message d'Averne 73 : mille fois merci : je regarde ça dans la semaine. (La structure de ma base est très très bricolambiquée..., je sais et encore, je n'en ai mis qu'une partie... )
Et je vais regarder ce fil de Jeanmimi : viewtopic.php?p=177232#p177232
Du pain sur la planche...
Bonne semaine
En tout cas : les macros votre exemple "Macro pour ouvrir formulaires depuis formulaire Menu déroulant.odb" marchent puisque j'ai pu en adapter une avec l'aide de Dolev
Quant à votre autre exemple de base après correction sur la zone de liste, elle me paraît fonctionner : je dois re-plonger dedans.
Je viens de voir le nouveau message d'Averne 73 : mille fois merci : je regarde ça dans la semaine. (La structure de ma base est très très bricolambiquée..., je sais et encore, je n'en ai mis qu'une partie... )
Et je vais regarder ce fil de Jeanmimi : viewtopic.php?p=177232#p177232
Du pain sur la planche...
Bonne semaine
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Papy-geek... Windows 10 Famille 22H2 build 19045.3570 - pack 1000.19052.1000.0 {64bits} LibreOffice 7.5.7.1.- Huawei MateStation S Ryzen 5 4600G Radeon Graphics 3.70GHz RAM 8G0 - 2 ... l'Aventure continue !
-
- Membre hOOnoraire
- Messages : 128
- Inscription : 30 oct. 2010 16:54
Re: [Base] Ouvrir formulaire après recherche depuis Zone de liste ou Contrôle de table
Bonsoir et Très Bonne année 2024.
J'ai eu un mois de décembre bien difficile qui m'a empêché d'avancer sur ma base
Arverne73 encore merci pour ton exemple de base dont j'ai un peu de mal à comprendre le fonctionnement...
- L'attribution d'un Auteur à un Fonds mais un Fonds n'était pas prioritaire car j'avais trouvé la solution de la Zone de liste "Auteurs" à partir de la TJ (et liaison sur le champ FON_ID)
- Dans ton exemple, maintenant dans le formulaire "FORM_Fonds gestion"(gauche fond jaune), quand je fais défiler les enregistrements, la rubrique "auteur" n'est plus renseignée ??
- Je n'ai pas trouvé comment à partir de la partie droite (fond marron), il est possible d'afficher les enregistrements associés à des auteurs dans le formulaire de la partie gauche fond jaune : c'est bien là où je bloque
- Dans la table "Fonds et Auteurs" : la partie supérieure semble donner les infos correctes sur les Auteurs & Fonds (qu'on ne retrouve plus dans le formulaire "FORM_Fonds gestion"(gauche fond jaune) ; dans la partie basse, la zone de liste "Fonds" semble bloquée (petit message d'erreur d'ailleurs) .
J'ai essayé, dans la version initiale de ma base "d'adapter" les macros indiquées par Jeanmmi, depuis un formulaire "formVisuAuteurs", mais je bloque car au final le contrôle "IND_ID" qui indique à la macro quels enregistrements ouvrir, figure dans un sous-formulaire du formulaire-cible...
Voilà où j'en suis. Merci de votre patience
J'ai eu un mois de décembre bien difficile qui m'a empêché d'avancer sur ma base
Arverne73 encore merci pour ton exemple de base dont j'ai un peu de mal à comprendre le fonctionnement...
- L'attribution d'un Auteur à un Fonds mais un Fonds n'était pas prioritaire car j'avais trouvé la solution de la Zone de liste "Auteurs" à partir de la TJ (et liaison sur le champ FON_ID)
- Dans ton exemple, maintenant dans le formulaire "FORM_Fonds gestion"(gauche fond jaune), quand je fais défiler les enregistrements, la rubrique "auteur" n'est plus renseignée ??
- Je n'ai pas trouvé comment à partir de la partie droite (fond marron), il est possible d'afficher les enregistrements associés à des auteurs dans le formulaire de la partie gauche fond jaune : c'est bien là où je bloque
- Dans la table "Fonds et Auteurs" : la partie supérieure semble donner les infos correctes sur les Auteurs & Fonds (qu'on ne retrouve plus dans le formulaire "FORM_Fonds gestion"(gauche fond jaune) ; dans la partie basse, la zone de liste "Fonds" semble bloquée (petit message d'erreur d'ailleurs) .
J'ai essayé, dans la version initiale de ma base "d'adapter" les macros indiquées par Jeanmmi, depuis un formulaire "formVisuAuteurs", mais je bloque car au final le contrôle "IND_ID" qui indique à la macro quels enregistrements ouvrir, figure dans un sous-formulaire du formulaire-cible...
Voilà où j'en suis. Merci de votre patience
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par anatole le 09 janv. 2024 14:00, modifié 2 fois.
Papy-geek... Windows 10 Famille 22H2 build 19045.3570 - pack 1000.19052.1000.0 {64bits} LibreOffice 7.5.7.1.- Huawei MateStation S Ryzen 5 4600G Radeon Graphics 3.70GHz RAM 8G0 - 2 ... l'Aventure continue !
-
- IdOOle de la suite
- Messages : 25602
- Inscription : 03 mars 2006 07:45
- Localisation : 127.0.0.1
Re: [Base] Ouvrir formulaire après recherche depuis Zone de liste ou Contrôle de table
Salut,
Là encore, le message donné est limpide : Le bouton "Plus" te donnera une erreur plus précise.
Tu devrais (re)lire le tutoriel sur comment se construit une requête SQL et comment on la teste avant de passer par une macro :
https://beaussier.com/sections/viewtopic.php?f=8&t=1577
Là encore, le message donné est limpide : Le bouton "Plus" te donnera une erreur plus précise.
Tu devrais (re)lire le tutoriel sur comment se construit une requête SQL et comment on la teste avant de passer par une macro :
https://beaussier.com/sections/viewtopic.php?f=8&t=1577
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
-
- Membre OOrganisé
- Messages : 82
- Inscription : 30 mars 2012 16:13
- Localisation : Savoie, France
Re: [Base] Ouvrir formulaire après recherche depuis Zone de liste ou Contrôle de table
Réponse tardive…
Et l'erreur était de ma faute : je n'avais pas géré le cas où rien n'était sélectionné dans la liste si bien que l'instruction SQL était incomplète ("champ" = 'vide').
J'ai corrigé et ça doit marcher : dès que l'on sélectionne un fond (liste déroulante jaune), le tableau en dessous se restreint aux auteurs liés à ce fond grâce à une macro MAJauteurs qui se déclenche sur l'évènement modification de la liste. Et et on peut ajouter un auteur pour ce fond en le sélectionnant dans la liste déroulante mauve et en cliquant sur le bouton Ajouter.
Cordialement.
Et l'erreur était de ma faute : je n'avais pas géré le cas où rien n'était sélectionné dans la liste si bien que l'instruction SQL était incomplète ("champ" = 'vide').
J'ai corrigé et ça doit marcher : dès que l'on sélectionne un fond (liste déroulante jaune), le tableau en dessous se restreint aux auteurs liés à ce fond grâce à une macro MAJauteurs qui se déclenche sur l'évènement modification de la liste. Et et on peut ajouter un auteur pour ce fond en le sélectionnant dans la liste déroulante mauve et en cliquant sur le bouton Ajouter.
Cordialement.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 24.2.5.2 sur Ubuntu 24.04 GNOME (version officielle). Base en frontale d'une base MySQL ; échec liaison directe => liaison JDBC.