[Résolu] [Base] Ouvrir un rapport filtré sur le résultat souhaité d'un formulaire

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 !
Seb1258
Membre hOOnoraire
Membre hOOnoraire
Messages : 106
Inscription : 11 sept. 2024 15:31
Localisation : Pas loin du Canada

[Résolu] [Base] Ouvrir un rapport filtré sur le résultat souhaité d'un formulaire

Message par Seb1258 »

Bonjour à toutes et tous,

Ce sujet fait suite à un sujet posté dans la section base > viewtopic.php?t=69357.

Après avoir fait tester le système qui m'avait été proposé à la personne qui utilisera principalement la base, elle me demande des évolutions. Je post ici car je ne pense pas qu'il soit possible de faire ce que je souhaite sans macro.

Actuellement, quand je clic sur le bouton "Liste des évènements" sur le formulaire "Accueil", un "controle" (ou fenêtre, je ne sais pas comment cela s'appelle) s'ouvre pour nous demander les noms et prénoms de l'agent dont nous recherchons les évènements.

Malheureusement, quand je clic sur annuler, un message d'erreur s'affiche et la fenêtre "basic" s'ouvre en sélectionnant la ligne concernée (variable d'objet non définie). De même, quand je clic sur "OK" sans avoir mis d'information dans les valeurs, une page blanche s'ouvre sans information. Je suppose que c'est tout à fait normal, mais j'aurais besoin de faire évoluer cela.

J'aurais souhaité modifier un peu le fonctionnement pour obtenir un "useform" (il me semble que c'est le nom) qui me permette de sélectionner l'agent dans une liste déroulante, ou alors de sélectionner tous les agents sans avoir de filtre et qui ne m'ouvre pas "basic" quand on annule car j'ai cliquer au mauvais endroit (par exemple).

En résumé, quand je clic sur "Liste des évènements", une fenêtre s'ouvre pour me demander de choisir l'agent dans une liste (mise à jour avec la table agents) ou de cocher une case (par exemple) qui griserai la liste déroulante pour sélectionner tous les agents. Et un bouton ok pour visualiser le rapport.

Le rapport concerné est "Ra_evenements" lui-même basé sur la requête R_evenements.

Je vous joint la base et une image du message d'erreur.

Merci d'avance pour vos retours.

message_d_erreur.PNG
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par Seb1258 le 27 nov. 2024 11:49, modifié 1 fois.
Libre office 7.3.7.2 < Obligation de version :fou:

Windows 10 Pro
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25979
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Base] Ouvrir un rapport en filtrant le résultat souhaité sur un useform.

Message par Dude »

Salut,

Un "useform", je ne sais pas ce que c'est. Dans Base, on parle de formulaire.
Je n'ai pas pris la peine d'étudier ton document qui au vu de sa taille est trop complexe.
Il t'appartient de fournir un ODB limité à la seule problématique.
Il faut ouvrir un rapport en utilisant en paramètre une clause WHERE.
On utilisera alors la propriété .Command pour lui passer le SQL qui va bien :

Code : Tout sélectionner

Sub Main(oEvt as Object)
	oDoc = ThisDatabasedocument()
	oForm = oEvt.Source.Model.Parent
	nId = oForm.getByName("IdAd").CurrentValue
	sSQL = "SELECT ""tadherents"".*, CONCAT( CONCAT( ""Nom"", ' ' ), " & _
			" ""Prenom"" ) ""Adh"" FROM ""tadherents"" WHERE ""IdAd"" =" & nId
	oCnx = oDoc.CurrentController.ActiveConnection
	oCnx.queries.getByName("rRapport").Command = sSQL
	oRapport = oDoc.ReportDocuments.getByName("rapAdherents").open()
End Sub
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Seb1258
Membre hOOnoraire
Membre hOOnoraire
Messages : 106
Inscription : 11 sept. 2024 15:31
Localisation : Pas loin du Canada

Re: [Base] Ouvrir un rapport en filtrant le résultat souhaité sur un useform.

Message par Seb1258 »

Bonjour Dude,
Dude a écrit : 26 nov. 2024 14:08 Un "useform", je ne sais pas ce que c'est. Dans Base, on parle de formulaire.
Dans mon esprit (et ce n'est apparemment pas le bonne façon de voir) un useform pourrait ressembler à ça (modèle sur tableur et désolé si je n'ai pas le bon vocabulaire technique, je m'y emploi):

useform.PNG
Dude a écrit : 26 nov. 2024 14:08 Je n'ai pas pris la peine d'étudier ton document qui au vu de sa taille est trop complexe.
Il t'appartient de fournir un ODB limité à la seule problématique.
Concernant cette partie, ne connaissant vraiment pas bien libreoffice j'ai préféré mettre la base complète sur le forum (comme je fais depuis le début) car je ne sais pas du tous s'il peut y avoir des interactions avec des éléments que je n'aurai pas mis dans une base simplifiée. Je te joint une base simplifiée qui ne contient que les éléments que j'estime être liés au problème.

Dude a écrit : 26 nov. 2024 14:08 Il faut ouvrir un rapport en utilisant en paramètre une clause WHERE.
On utilisera alors la propriété .Command pour lui passer le SQL qui va bien :
Concernant cette partie, je te remercie pour le code fourni (même si je n'y comprend pas grand chose voir rien du tous) et pour la base modèle que tu as fournie.

Malheureusement le résultats ne correspond pas à ce que j'attendais. Sur la base que tu fournie, il faut se situer sur l'enregistrement désiré et cliquer sur rapport (si je ne me trompe pas) afin d'obtenir le rapport correspondant à l'adhérent. Pour ma part, le bouton se situe sur le formulaire accueil où il n'y as pas d'enregistrement. De plus, je souhaite (si c'est possible) pouvoir sélectionner un agent ou tous les agents, je n'ai pas trouvé comment faire dans ton exemple.

Je te joins la base que j'utilise en supprimant un maximum d'informations afin que ce soit plus claire.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Libre office 7.3.7.2 < Obligation de version :fou:

Windows 10 Pro
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25979
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Base] Ouvrir un rapport en filtrant le résultat souhaité sur un useform.

Message par Dude »

Seb1258 a écrit : 26 nov. 2024 14:39un useform pourrait ressembler à ça
Ca c'est une boîte de dialogue.
Seb1258 a écrit : 26 nov. 2024 14:39 le bouton se situe sur le formulaire accueil où il n'y as pas d'enregistrement
S'il n'y a pas d'enregistrement comment comptes-tu récupérer quelque chose ?
Seb1258 a écrit : 26 nov. 2024 14:39 De plus, je souhaite (si c'est possible) pouvoir sélectionner un agent ou tous les agents
Tu fais un second rapport qui inclue tous les agents.
Seb1258
Membre hOOnoraire
Membre hOOnoraire
Messages : 106
Inscription : 11 sept. 2024 15:31
Localisation : Pas loin du Canada

Re: [Base] Ouvrir un rapport en filtrant le résultat souhaité sur un useform.

Message par Seb1258 »

Dude a écrit : 26 nov. 2024 14:45 Ca c'est une boîte de dialogue.
Étant donné que le mec appelait ça un useform et que le titre c'est "interactive useform", j'ai cru que c'était le nom. Au moins tu vois de quoi je parle maintenant.
Dude a écrit : 26 nov. 2024 14:45 S'il n'y a pas d'enregistrement comment comptes-tu récupérer quelque chose ?
Actuellement, quand je clic sur le bouton ça marche déjà. Je ne vois pas pourquoi ça pose problème du coup ? Les enregistrement sont récupérés sur une requête déjà existante dans ma base.
Dude a écrit : 26 nov. 2024 14:45 Tu fais un second rapport qui inclue tous les agents.
L'intérêt d'avoir tous sur un même bouton est de simplifié l'utilisation (la personne qui utilisera la base n'est pas à l'aise avec la bureautique). Donc j'ai vraiment besoin de cette possibilité.

Si je comprends ce que tu me dis c'est impossible de faire ce que je demande ? :( :( :(

Merci d'avance.
Libre office 7.3.7.2 < Obligation de version :fou:

Windows 10 Pro
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 17187
Inscription : 03 mars 2006 16:02
Localisation : Venise verte

Re: [Base] Ouvrir un rapport en filtrant le résultat souhaité sur un useform.

Message par jeanmimi »

Bonjour,
Seb1258 a écrit : 26 nov. 2024 13:47 une fenêtre s'ouvre pour me demander de choisir l'agent dans une liste
Dans l'exemple joint, en appliquant une méthode décrite par Piaf, le clic sur le bouton Liste des évènements ouvre un formulaire qui permet de sélectionner un Agent dans une liste déroulante et par clic sur le bouton Afficher l'Agent sélectionné de visualiser les évènements qui le concernent.
Si ça convient, il te restera plus qu'à faire afficher le Rapport ou l'État par une Macro.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice : Version : 25.2.0.3 (x64)(20 février 2025)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25979
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Base] Ouvrir un rapport en filtrant le résultat souhaité sur un useform.

Message par Dude »

Seb1258 a écrit : 26 nov. 2024 16:06 Étant donné que le mec appelait ça un useform et que le titre c'est "interactive useform"
Orthographie déjà correctement le terme et fais une recherche : viewtopic.php?t=68104&hilit=userform

Seb1258 a écrit : 26 nov. 2024 16:06L'intérêt d'avoir tous sur un même bouton est de simplifié l'utilisation (la personne qui utilisera la base n'est pas à l'aise avec la bureautique).
En quoi avoir deux boutons avec un libellé explicite et lançant deux rapports complétement différents vont-ils être anti-ergonomiques ?
Seb1258
Membre hOOnoraire
Membre hOOnoraire
Messages : 106
Inscription : 11 sept. 2024 15:31
Localisation : Pas loin du Canada

Re: [Base] Ouvrir un rapport en filtrant le résultat souhaité sur un useform.

Message par Seb1258 »

Bonjour à tous les deux et merci pour vos retours,

Jeanmimi, j'ai testé l'exemple que tu m'as transmis.

Comme dans la base que tu m'as retournée, et comme l'avait proposé Dude, j'ai l'impression que je suis obligé de passer par un formulaire plutôt qu'une boite de dialogue. J'ai donc modifié légèrement le formulaire "Form_Selection_Agent_copie" afin qu'il réponde à ce que je souhaite (ou au moins m'en rapprocher). Ce n'est pas beau pour l'instant, mais je ferais la mise en page après :D .

rapport.PNG

Il ne me reste plus qu'a trouver une macro pour ouvrir le rapport en fonction du nom sélectionné dans la liste (si c'est possible). Mais je pense que je vais devoir créer un nouveau post.

J'ai également vu la macro pour ouvrir les formulaires par tag, je la trouve pas mal du tous. Merci.

Dude, du coups je reprends ta proposition ci-dessous et je fais 2 rapports, un pour afficher tous le monde et un pour n'afficher qu'un agent sélectionné.
Dude a écrit : 26 nov. 2024 14:45 Tu fais un second rapport qui inclue tous les agents.
Pour ce qui est de tes autres messages :
Dude a écrit : 27 nov. 2024 07:56 Orthographie déjà correctement le terme et fais une recherche : viewtopic.php?t=68104&hilit=userform
Effectivement, j'ai oublié un "r", vraiment désolé... Mais je te remercie pour le lien fourni.
Dude a écrit : 27 nov. 2024 07:56 En quoi avoir deux boutons avec un libellé explicite et lançant deux rapports complétement différents vont-ils être anti-ergonomiques ?
Je ne dis pas que c'est anti-ergonomique, simplement moins pratique à mes yeux et pour la personne qui sera amenée à utiliser la base également. Mais bon, si ma demande est irréalisable sans faire une "usine à gaz", je ne vais pas insister.

Comme vous vous en doutez, le plus compliqué c'est de me faire comprendre. Je ne connais pas bien le vocabulaire technique (comme pour le "Userform" par exemple (et encore quand je l'orthographie mal ça n'aide pas)) et ce n'est pas évident d'expliquer ce qu'on veux quand on a pas les bons mots.

Merci beaucoup à vous deux pour votre aide et votre patience. :lol:
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Libre office 7.3.7.2 < Obligation de version :fou:

Windows 10 Pro