[Base] Ouvrir formulaire après recherche depuis Zone de liste ou Contrôle de table

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 !
Avatar de l’utilisateur
anatole
Membre hOOnoraire
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

Message par anatole »

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.
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 !
Avatar de l’utilisateur
Dolev
InconditiOOnnel
InconditiOOnnel
Messages : 951
Inscription : 19 août 2018 05:20

Re: [Base] Ouvrir un formulaire

Message par Dolev »

Bonsoir,
anatole a écrit : 15 nov. 2023 16:17 "Impossible déterminer contenu ; column not found: 2"
Le message me semble pourtant clair : votre requête devrait renvoyer deux colonnes.
Open Office 4.1.15 sous Windows 11
Avatar de l’utilisateur
anatole
Membre hOOnoraire
Membre hOOnoraire
Messages : 128
Inscription : 30 oct. 2010 16:54

Re: [Base] Ouvrir un formulaire

Message par anatole »

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 :oops:
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 !
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 16960
Inscription : 03 mars 2006 16:02
Localisation : Venise verte

Re: [Base] Ouvrir un formulaire

Message par jeanmimi »

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.2 (x64)(12 avril 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Avatar de l’utilisateur
anatole
Membre hOOnoraire
Membre hOOnoraire
Messages : 128
Inscription : 30 oct. 2010 16:54

Re: [Base] Ouvrir un formulaire

Message par anatole »

:super: 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 :D ;
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é :x

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 !
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 16960
Inscription : 03 mars 2006 16:02
Localisation : Venise verte

Re: [Base] Ouvrir un formulaire

Message par jeanmimi »

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 :
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice : Version : 24.2 (x64)(12 avril 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Avatar de l’utilisateur
Bidouille
RespOOnsable forum
RespOOnsable forum
Messages : 12231
Inscription : 08 nov. 2005 16:23
Localisation : Caen, France

Re: [Base] Ouvrir un formulaire

Message par Bidouille »

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é.
Avatar de l’utilisateur
anatole
Membre hOOnoraire
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

Message par anatole »

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 :super: ; 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.
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.

Code : Tout sélectionner

Sous-procédure ou procédure fonction non définie
Bonne soirée et bon vikend.
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 !
Avatar de l’utilisateur
Dolev
InconditiOOnnel
InconditiOOnnel
Messages : 951
Inscription : 19 août 2018 05:20

Re: [Base] Ouvrir formulaire après recherche depuis Zone de liste ou Contrôle de table

Message par Dolev »

Bonjour,
anatole a écrit : 17 nov. 2023 20:47 Type: com.sun.star.sdbc.SQLException Message: No data is available.
Le message n'est-il pas clair ? Pas de donnée disponible.
Votre requête ne renvoie rien.
anatole a écrit : 17 nov. 2023 20:47 Mais je ne maîtrise pas encore bien la syntaxe
Le seul moyen de maîtriser l'API et les propriétés et méthodes est d'installer Xray : viewtopic.php?t=3234
Avatar de l’utilisateur
anatole
Membre hOOnoraire
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

Message par anatole »

Bonsoir Dolev.
Merci pour les infos concernant Xray :super: 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 :shock:
- Le premier message

Code : Tout sélectionner

Type: com.sun.star.sdbc.SQLException Message: No data is available.
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. :oops:

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 !
Avatar de l’utilisateur
arverne73
Membre OOrganisé
Membre OOrganisé
Messages : 71
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

Message par arverne73 »

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 :
  • 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
Cordialement.
forum 23 11 17-modif.odb
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 7.6.4.2 sur Ubuntu 23.10 GNOME (version officielle). Base en frontale d'une base MySQL ; échec liaison directe => liaison JDBC.
Avatar de l’utilisateur
Bidouille
RespOOnsable forum
RespOOnsable forum
Messages : 12231
Inscription : 08 nov. 2005 16:23
Localisation : Caen, France

Re: [Base] Ouvrir formulaire après recherche depuis Zone de liste ou Contrôle de table

Message par Bidouille »

Bonjour,
arverne73 a écrit : 21 nov. 2023 18:14A vérifier : jeanmimi semble utiliser Openoffice
Vous devriez lire les signatures des uns et des autres. :roll:
Avatar de l’utilisateur
arverne73
Membre OOrganisé
Membre OOrganisé
Messages : 71
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

Message par arverne73 »

Gloups ! J'ai bien regardé mais mélangé avec la signature d'un autre intervenant !
LibreOffice 7.6.4.2 sur Ubuntu 23.10 GNOME (version officielle). Base en frontale d'une base MySQL ; échec liaison directe => liaison JDBC.
Avatar de l’utilisateur
anatole
Membre hOOnoraire
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

Message par anatole »

Merci Beaucoup Averne73 pour ces éléments.
Effectivement, j'ai pu corriger l'exemple de JeanMimi :super:
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 :D

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 !
Avatar de l’utilisateur
Dolev
InconditiOOnnel
InconditiOOnnel
Messages : 951
Inscription : 19 août 2018 05:20

Re: [Base] Ouvrir formulaire après recherche depuis Zone de liste ou Contrôle de table

Message par Dolev »

Re,
depuis Zone de liste ou Contrôle de table
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.
Open Office 4.1.15 sous Windows 11
Avatar de l’utilisateur
anatole
Membre hOOnoraire
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

Message par anatole »

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.
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 !
Avatar de l’utilisateur
Dolev
InconditiOOnnel
InconditiOOnnel
Messages : 951
Inscription : 19 août 2018 05:20

Re: [Base] Ouvrir formulaire après recherche depuis Zone de liste ou Contrôle de table

Message par Dolev »

Re,
anatole a écrit : 02 déc. 2023 16:52 mais j'ai un message d'erreur (? mauvais indication du chemin ?)
Non, que dit le message d'erreur :
screenshot_erreur.png
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
Avatar de l’utilisateur
anatole
Membre hOOnoraire
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

Message par anatole »

Merci Dolev pour votre réponse.

Je suis bloqué et ne vois pas comment définir cette "procédure" non défini

Code : Tout sélectionner

oNewformDoc = openform("FORMfondsGestion")
c'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"

Code : Tout sélectionner

Sub Main Xray ThisComponent End Sub
Merci et bon dimanche
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 !
Avatar de l’utilisateur
Dolev
InconditiOOnnel
InconditiOOnnel
Messages : 951
Inscription : 19 août 2018 05:20

Re: [Base] Ouvrir formulaire après recherche depuis Zone de liste ou Contrôle de table

Message par Dolev »

anatole a écrit : 03 déc. 2023 11:49 Je suis bloqué et ne vois pas comment définir cette "procédure" non défini
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é :
Capture d'écran 2023-12-03 131330.png
anatole a écrit : 03 déc. 2023 11:49 repérer les différences entre ma base-exemple et celle de Jeanmimi
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
Avatar de l’utilisateur
anatole
Membre hOOnoraire
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

Message par anatole »

Re et merci mille fois pour votre patience Dolev :super:

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 :bravo:
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 !
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 16960
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

Message par jeanmimi »

arverne73 a écrit : 21 nov. 2023 18:14 Dans l'exemple de base donné par jeanmimi, j'ai aussi une erreur pour la recherche sur la 2ᵉ liste. Cette erreur est simple.
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.2 (x64)(12 avril 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Avatar de l’utilisateur
arverne73
Membre OOrganisé
Membre OOrganisé
Messages : 71
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

Message par arverne73 »

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 :
  1. 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) ;
  2. Pouvoir affecter un auteur à un fond.
Ai-je bien compris ?

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.
forum 23 11 17-modif2.odb
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 7.6.4.2 sur Ubuntu 23.10 GNOME (version officielle). Base en frontale d'une base MySQL ; échec liaison directe => liaison JDBC.
Avatar de l’utilisateur
anatole
Membre hOOnoraire
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

Message par anatole »

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 :bravo:
Quant à votre autre exemple de base
OuvertureFormSurEnr.odb
après correction sur la zone de liste, elle me paraît fonctionner : je dois re-plonger dedans.
:super: 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... :fou:)
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 !
Avatar de l’utilisateur
anatole
Membre hOOnoraire
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

Message par anatole »

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
xxx forum 23 12 04 modifié.odb
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 :shock:
- 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)
Nouvelle image.jpeg
.

J'ai essayé, dans la version initiale de ma base
xxx forum 24 01 05.odb
"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 !
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25184
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

Message par Dude »

Salut,

Là encore, le message donné est limpide :
capture.png
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.
Avatar de l’utilisateur
arverne73
Membre OOrganisé
Membre OOrganisé
Messages : 71
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

Message par arverne73 »

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.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 7.6.4.2 sur Ubuntu 23.10 GNOME (version officielle). Base en frontale d'une base MySQL ; échec liaison directe => liaison JDBC.