[Résolu] [Base] Ouvrir un rapport en fonction des données d'une liste déroulante.

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 en fonction des données d'une liste déroulante.

Message par Seb1258 »

Bonjour,

Pour faire suite à ce post viewtopic.php?t=69370, je reviens vers vous pour trouver une macro me permettant d'ouvrir un rapport en fonction du résultat d'une liste déroulante.

Sur la base jointe, dans le formulaire "Form_Selection_Agent" j'ai une liste déroulante et un bouton "Afficher l'agent sélectionné".

Je souhaiterai trouver une macro qui affiche le rapport "Ra_evenements" qui lui-même s'appui sur la requête "R_evenements" (avec critères "like").

Actuellement, j'ai une macro qui m'ouvre une boite de dialogue pour inscrire les noms et prénoms de l'agent pour lequel je souhaite afficher le rapport (la macro s'appelle "OuvertureEtatEvenements" et se situe dans le module "Ouverture_etat_even"). Mais je souhaiterai uniquement sélectionner dans la liste déroulante et qu'il ne me demande plus les informations dans la boite de dialogue.

De plus, la liste actuelle cible la table "T_Selection", je ne sais pas si c'est un problème.

En résumé, je souhaite sélectionner l'agent dans la liste déroulante et cliquer sur le bouton pour afficher le rapport lui correspondant sans avoir à saisir dans la boite de dialogue.

Je ne sais pas si c'est possible, mais si c'est faisable ce serait parfait.

Merci d'avance aux contributeurs.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par Seb1258 le 03 déc. 2024 16:02, 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 : 25964
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Base] Ouvrir un rapport en fonction des données d'une liste déroulante.

Message par Dude »

Salut,

Encore une fois, merci de publier la macro.
Comme ça, on n'a pas besoin de télécharger le fichier.

Code : Tout sélectionner

Sub OuvertureEtatEvenements 

ThisDatabaseDocument.CurrentController.connect("","") 
LibOForm = ThisDatabaseDocument.ReportDocuments.getbyname("Ra_evenements").open
'LibOForm.currentController.frame.ContainerWindow.IsMaximized = true

End Sub
Ton code ne fait rien d'autre qu'ouvrir le rapport.
Seb1258 a écrit : 29 nov. 2024 13:01 sélectionner l'agent dans la liste déroulante et cliquer sur le bouton pour afficher le rapport lui correspondant
Il faut donc :
  1. récupérer le contenu de la sélection issue de la zone de liste
  2. passer le résultat dans la clause WHERE du rapport
Pour le 1, fouille le forum à la recherche d'exemples
Pour le 2, je t'ai montré comment faire ici : viewtopic.php?p=387596#p387596
Seb1258
Membre hOOnoraire
Membre hOOnoraire
Messages : 106
Inscription : 11 sept. 2024 15:31
Localisation : Pas loin du Canada

Re: [Base] Ouvrir un rapport en fonction des données d'une liste déroulante.

Message par Seb1258 »

Bonjour Dude,

Merci pour ton retour.

Désolé pour le code, je le mettrai à l'avenir, pas de problème.
Dude a écrit : 29 nov. 2024 15:06 Ton code ne fait rien d'autre qu'ouvrir le rapport.
Concernant mon code, effectivement, il ouvre le rapport. Mais sur la requête il y a le critère "like" qui me permet de sélectionner l'agent avec son nom et son prénom (chose que j'aimerais modifier).

Concernant les indices que tu m'as transmis :
Dude a écrit : 29 nov. 2024 15:06 Pour le 1, fouille le forum à la recherche d'exemples
Pour le 2, je t'ai montré comment faire ici : viewtopic.php?p=387596#p387596
Pour le 1, j'ai regardé dans le forum mais je n'ai pas trouvé ce que je cherchais ou alors je ne sais pas vraiment comment l'adapter à ma situation.

J'ai trouvé par exemple ce post : viewtopic.php?t=14662 de Pierre-Yves Samyn
ou encore celui que jeanmimi m'a fourni il y a peu : viewtopic.php?p=387615#p387615.

Est-il possible d'afficher une liste et simplement cliquer sur le bouton pour éditer le rapport ? Ou doit-on toujours passer par un bouton intermédiaire pour sélectionner l'enregistrement ?

Pour le 2, je me rappel bien du post dont tu parles, mais comme je te l'avais dis à ce moment, je ne comprend pas du tous la macro (même les macros simples sont compliquées pour moi).

Je lis la partie SQL comme cela :

Code : Tout sélectionner

"SELECT ""tadherents"".*,
là je suppose qu'on sélectionne la table qui contient les données à afficher ? Est-il possible de sélectionner une requête ?

Code : Tout sélectionner

CONCAT( CONCAT( ""Nom"", ' ' ), " & _" ""Prenom"" )
là je suppose que l'ont concatene les données nom et prénom

Code : Tout sélectionner

""Adh"" FROM ""tadherents"" WHERE ""IdAd"" =" & nId
la je n'y comprend rien du tous. Je ne sais pas ce que ça fait et ce que dois modifier.

Comme tu le sais je n'y connais rien en macro, j'essaie, mais franchement ce n'est pas évident.
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 : 25964
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Base] Ouvrir un rapport en fonction des données d'une liste déroulante.

Message par Dude »

Seb1258 a écrit : 29 nov. 2024 16:41 Comme tu le sais je n'y connais rien en macro, j'essaie, mais franchement ce n'est pas évident.
Ce fil donne l'essentiel des ressources à étudier.
Notamment le bouquin indispensable qu'est la "bible sur la programmation" et l'usage de XRay.

Qu'ais-je dit au début ?
Dude a écrit : 29 nov. 2024 15:06 1. récupérer le contenu de la sélection issue de la zone de liste
Tu lances une macro au niveau d'un bouton, il faut donc en récupérer l’événement.
Remonter sur le formulaire puis atteindre la zone de liste.
Pour enfin, récupérer l'item sélectionné.
Avec XRay, on explore chaque objet. Ce qui donne :

Code : Tout sélectionner

Sub OuvertureEtatEvenements(oEvt) 
	oForm = oEvt.Source.Model.Parent
	oListe = oForm.getByName("txtSelection")
	sSelect = oListe.CurrentValue
	msgbox sSelect
End Sub
Maintenant, il te reste à réaliser la 2nde partie qui consiste à passer sSelect dans la requête de ton rapport.

Dernier point, il est inutile de répéter :

Code : Tout sélectionner

option explicit
global LibOForm as object
Cette déclaration n'est à faire qu'une fois en début de module.
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 fonction des données d'une liste déroulante.

Message par jeanmimi »

Ce fil avec une Base exemple pourrait répondre à ta demande : le choix d'un nom dans un contrôle Zone de liste et l'affichage du Rapport par clic sur le bouton :
viewtopic.php?t=41439
LibreOffice : Version : 25.2.0.3 (x64)(20 février 2025)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Seb1258
Membre hOOnoraire
Membre hOOnoraire
Messages : 106
Inscription : 11 sept. 2024 15:31
Localisation : Pas loin du Canada

Re: [Base] Ouvrir un rapport en fonction des données d'une liste déroulante.

Message par Seb1258 »

Bonjour Dude et jeanmimi,

Merci beaucoup pour vos réponses.

Ça fait beaucoup de choses à assimiler, du coups je vais essayer de répondre dans l'ordre.

Dude :
Dude a écrit : 30 nov. 2024 10:51 Ce fil donne l'essentiel des ressources à étudier.
Notamment le bouquin indispensable qu'est la "bible sur la programmation" et l'usage de XRay.
Concernant la partie ci-dessus, j'ai été regarder le fil ainsi que la bible Xray. Je l'avais déjà installé sur mon poste et testé, mais je n'arrive pas à m'en servir... Je ne comprend pas quoi analyser ni comment m'en servir... Je pense que je ne suis pas équipé pour un tel niveau de difficulté... Même si pour toi c'est surement basique comme tâche.

J'ai essayé le code que tu m'as fournie et, comme tu t'en doute, je n'y arrive pas. J'ai testé dans tous les sens (sauf celui qui fonctionne apparemment) et j'ai un message d'erreur sur la ligne suivante :

Code : Tout sélectionner

oForm = oEvt.Source.Model.Parent
Pour le dernier point, merci pour l'information, je ne savais pas pour l'option explicit.

Jeanmimi,

Le fil que tu m'as envoyé avec le post de Piaf fait exactement ce que je souhaite.

Malheureusement je n'arrive pas à le mettre en application sur ma base...

Voici le code après modifications et le code d'erreur qui m'est retournée :

Code : Tout sélectionner

Option Explicit

sub OuvrirRapport(oEv as Object)
Dim oForm as Object, maConnexion as Object,oRapport as Object
Dim NomEnCours as String, nomRapport as String, strSQL as String
	oForm = oEv.Source.Model.Parent
	NomEnCours = oForm.getByName("ListeD").CurrentValue
	maConnexion = ThisDatabasedocument.CurrentController.ActiveConnection
	strSQL = "SELECT ""Agents"".""Nom"", ""Agents"".""Prénom"",""Agents"".""Ref_agent"", ""Evenements"".""Type d'évènement"", ""Evenements"".""Commentaires"" FROM ""Evenements"", ""Agents"" WHERE ""Evenements"".""Ref_agent"" = ""Agents"".""Ref_agent"" AND ""Agents"".""Nom""  =" & Apos(NomEnCours)
	maConnexion.Queries.getByName("R_evenements_select_agent").Command = strSQL
	nomRapport = oEv.Source.Model.Tag
	oRapport = ThisDataBaseDocument.ReportDocuments.getByName(nomRapport).open()
End Sub

Function Apos(ByVal chaine As String) As String
Apos = "'" & join(split(chaine, "'"), "''") & "'"
End Function
erreur_basic.PNG

Dans le code fourni, il y a une fonction qui s'appelle "Apos" et je ne sais pas quoi en faire. Dois-je la mettre quelque part ? Ou s’exécute t'elle toute seule avec le code au dessus ?

De même, quand je tente d’exécuter la macro avec le bouton, j'ai un critère '1' qui s'ajoute dans ma requête mais ça ne fonctionne pas.

Je me suis dis que c'était peut-être à cause de la position des boutons et liste dans le navigateur de formulaire, j'ai essayé de déplacer les éléments mais je n'ai pas réussi (voir ci-dessous).

navform.PNG

Merci encore pour votre temps.
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
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 fonction des données d'une liste déroulante.

Message par jeanmimi »

Il y a une erreur sur cette ligne :

Code : Tout sélectionner

NomEnCours = oForm.getByName("ListeD").CurrentValue
car le nom du contrôle où s'affiche la sélection s'appelle txtSelection
et il est possible qu'il y en ait une aussi ici avec le nom de la Requête qui sert à élaborer le Rapport :

Code : Tout sélectionner

	maConnexion.Queries.getByName("R_evenements_select_agent").Command = strSQL
Est-ce que tu peux publier la nouvelle version de ta Base ?

Il devrait y avoir, comme dans le précédent message, cette Macro Main :

Code : Tout sélectionner

REM  *****  BASIC  *****
Option Explicit

Sub Main

ThisDatabaseDocument.CurrentController.connect("","")
ThisDatabaseDocument.FormDocuments.getByName("fNoms").open
End Sub

sub OuvrirRapport(oEv as Object)
J'ai vu aussi une anomalie dans la valeur du champ lié dans la source des données du Contrôle Zone de liste : tu as indiqué 1 alors qu'il faudrait indiquer 0.

J'ai fait les modifications dans la Base jointe :
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
Seb1258
Membre hOOnoraire
Membre hOOnoraire
Messages : 106
Inscription : 11 sept. 2024 15:31
Localisation : Pas loin du Canada

Re: [Base] Ouvrir un rapport en fonction des données d'une liste déroulante.

Message par Seb1258 »

Jeanmimi,

Concernant l'erreur dont tu parles, j'avais renomé le contrôle en "ListeD" du coups je pensais que c'était bon.
nom.PNG
Pour le nom de la requête, je ne sais pas trop, elle s'appelle bien comme cela dans ma base. Mais il y a peut être un paramétrage que j'ai mal fait.

Concernant la partie du code que tu m'a indiqué, effectivement, je ne l'avais pas copié pensant que ça ne me servirai pas. Je l'ai rajouté en modifiant le nom du formulaire.

Je te joins ma base complète.

Le formulaire concerné s'appelle : Form_Seleciton_Agent
La requête concernée s'appelle : R_evenements_select_agent
Le rapport concerné s'appelle : Ra_evenements_select_agent

Au besoin je pourrais faire une copie et supprimer ce qu'il y a en trop.

Merci encore.

EDIT :

Je viens de voir la fin de ton message (je ne sais pas pourquoi il ne s'est pas affiché tous de suite) je regarde et reviens modifier ici.

Après avoir regardé d'un peu plus près la base que tu as joint :

Dans la liste déroulante il n'y as plus que le nom de l'agent (ou le prénom) qui s'affiche et je ne comprend pas trop pourquoi il y a des doublons (voir image ci-dessous) :
doublons.PNG

J'ai également récupéré le fichier "Etat évènements.odt" je pense qu'il va soulever une autre question (rien à voir avec ce post donc j'en ferais un nouveau après).

J'ai également remarqué que le code était inscrit dans plusieurs module ("Ouverture_etat_even" et "Ouverture_evenements") mais je ne sais pas pourquoi, est-ce obligatoire ?

Merci encore.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par Seb1258 le 02 déc. 2024 16:34, 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 : 25964
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Base] Ouvrir un rapport en fonction des données d'une liste déroulante.

Message par Dude »

La syntaxe SQL dans une requête est expliquée dans ce suprême.
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 fonction des données d'une liste déroulante.

Message par Seb1258 »

Dude,

Merci pour le lien, je viens de le regarder, et même si j'ai encore beaucoup de mal à tous comprendre, le ciel s'éclaircit (c'est lent mais j'ai espoir).

Concernant la base que tu as mise, la méthode que tu utilises est celle que tu m'as décrite plus haute (je suppose). A mes yeux de débutant, il s'agit d'un tout autre code, complètement différent de l'autre.

Après avoir essayé de visionner le rapport, j'ai un soucis quand je clic sur le bouton pour afficher le rapport (voir image ci-dessous).

erreur_basic.PNG

En revanche, le résultat de la liste déroulante fait bien apparaitre le nom et le prénom de l'agent.

Dans ton code, les symbole "&_" permettent-ils les sauts de ligne afin d'avoir un affichage plus lisible ?

Merci d'avance.
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 : 25964
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Base] Ouvrir un rapport en fonction des données d'une liste déroulante.

Message par Dude »

Quand je me donne la peine de mettre en ligne un document, il fonctionne parfaitement sous OpenOffice.
Sers toi de XRay et affiche ce que renvoie aElem

Mais bon, quand je vois ta signature :
Libre office 7.3.7.2 < Obligation de version
Windows 10 Pro
Cette version est obsolète depuis 2022(*).


(*) https://wiki.documentfoundation.org/ReleasePlan/7.3
Seb1258
Membre hOOnoraire
Membre hOOnoraire
Messages : 106
Inscription : 11 sept. 2024 15:31
Localisation : Pas loin du Canada

Re: [Base] Ouvrir un rapport en fonction des données d'une liste déroulante.

Message par Seb1258 »

Dude,
Dude a écrit : 02 déc. 2024 16:50 Mais bon, quand je vois ta signature :
Cette version est obsolète depuis 2022(*).
Comme tu l'auras remarqué, il y as inscrit "obligation de version" car je n'ai pas le choix. Elle pourrait être obsolète depuis 2000 ça ne changerai pas le fait que je ne peux pas faire autrement.

Ce n'est pas moi qui choisit quels logiciels nous pouvons utiliser. J'ai néanmoins demandé au service informatique si nous pouvions avoir une version plus récente et on m'a indiqué que non.

Pour xray je vais retenter et essayer de te transmettre ce que renvoie aElem.
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 : 25964
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Base] Ouvrir un rapport en fonction des données d'une liste déroulante.

Message par Dude »

En fait, rien ne va. Il faudrait aussi que tu lises le tuto sur la gestion d'une liste déroulante.

Le plus simple est de récupérer la clé primaire pour la requête plutôt qu'une chaîne qui pourrait avoir des homonymes :

Code : Tout sélectionner

Sub OuvertureEtatEvenements(oEvt) 
	oForm = oEvt.Source.Model.Parent
	oListe = oForm.getByName("txtSelection")
	sSelect = oListe.CurrentValue
	if Len(sSelect)=0 then 
		msgbox "L'item est vide" 
		exit sub
	endif
	nRefAgent = oListe.SelectedItems(0) 'récupère le Ref_Agent
	oDoc = ThisDatabaseDocument()
	oCnx = oDoc.CurrentController.ActiveConnection
	sSQL = "SELECT ""Agents"".""Nom"", ""Agents"".""Prénom"", " & _
		" ""Evenements"".""Type d'évènement"", ""Evenements"".""Commentaires"" " & _
		" FROM ""Evenements"", ""Agents"" WHERE ""Evenements"".""Ref_agent"" " & _
		"= ""Agents"".""Ref_agent"" AND ""Agents"".""Ref_agent"" = " & _
		nRefAgent & "ORDER BY ""Agents"".""Nom"" ASC, ""Agents"".""Prénom"" ASC "
	oCnx.queries.getByName("R_evenements").Command = sSQL
	oRapp = oDoc.ReportDocuments.getByName("Ra_evenements")
	oRapp.open()
End Sub
Beaucoup d'anomalies encore avec :
  • deux formulaires portant le même nom
  • le formulaire contenant la liste basé sur la mauvaise table
capture.png
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 fonction des données d'une liste déroulante.

Message par Seb1258 »

Bonjour Dude,

Merci pour ton retour.

Tu vas pester, mais je me suis appuyer sur le tuto pour ma liste... Ainsi que sur des réponses que l'on m'a faites et d'autres post. (Tous étaient certainement correct et j'ai mal adaptée ce que j'ai lu. Ça ne doit pas te surprendre.)

Concernant les soucis relevés (formulaires avec le même nom et liste basé sur la mauvaise table) voici ce que j'ai fais :

J'ai modifié le nom des formulaires et pointé le formulaire "Selection_agent" (contenant la liste) vers la table "T_selection" (j'espère que c'est bien là qu'il faut pointer sachant que la commande SQL sur la liste pointe vers la table "Agents"). Mais je suis étonné de ne pas pointer vers la table "Agents" qui contient les éléments que je souhaite afficher dans la liste.

modifs.PNG

Enfin, concernant le code que tu m'as joint, j'ai regardé ce qu'il faisait. Quand je suis sur le formulaire et que je tente d'afficher un rapport, j'ai le msgbox qui s'affiche systématiquement. J'ai donc tenter de mettre des apostrophes devant les lignes ci-dessous et là j'ai bien un affichage mais pas le bon agent... Si je sélectionne l'agent TEST1, c'est le 2 qui s'affiche et si je prend TEST2, c'est le 3 qui s'affiche. Je ne comprends plus rien. (j'ai encore dû faire une boulette).

Code : Tout sélectionner

'if Len(sSelect)=0 then 
'		msgbox "L'item est vide" 
'		exit sub
'	endif
msgbox.PNG

resultats_rapport.PNG
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 : 25964
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Base] Ouvrir un rapport en fonction des données d'une liste déroulante.

Message par Dude »

Teste le document que j'ai joint avant d'essayer ailleurs.
Seb1258
Membre hOOnoraire
Membre hOOnoraire
Messages : 106
Inscription : 11 sept. 2024 15:31
Localisation : Pas loin du Canada

Re: [Base] Ouvrir un rapport en fonction des données d'une liste déroulante.

Message par Seb1258 »

C'est ce que j'ai fais et où j'ai eu le "msgbox"
msgbox.PNG
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 : 25964
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Base] Ouvrir un rapport en fonction des données d'une liste déroulante.

Message par Dude »

Aucun problème sous OpenOffice 4.1.15 :

.
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 fonction des données d'une liste déroulante.

Message par Seb1258 »

Oui je vois ça :(

Par contre je ne sais pas faire de "vidéo" comme toi pour te montrer ce que ça donne chez moi.

Mais j'ai bien testé sur la base que tu as fournie.

Merci quand même pour ton aide, je vais attendre un peu pour voir si quelqu'un d'autre à une idée.
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 : 25964
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Base] Ouvrir un rapport en fonction des données d'une liste déroulante.

Message par Dude »

A priori, il y a une bogue chez LibO car on voit avec XRay que la propriété CurrentValue ne renvoie rien. :shock:
Il faudrait voir si un rapport est ouvert là dessus et à en ouvrir un si inexistant.
ca.png
En attendant, il faut retirer le test. Cela n'empêche pas le reste de s'exécuter.
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 fonction des données d'une liste déroulante.

Message par Seb1258 »

Au moins pour une fois le problème ne vient pas de moi (enfin presque)...

Du coups pour le "test", voici le code que ça me donne (je ne suis pas certain d'avoir désactiver tous ce qu'il fallait).

Code : Tout sélectionner

Sub OuvertureEtatEvenements(oEvt) 
	oForm = oEvt.Source.Model.Parent
	oListe = oForm.getByName("txtSelection")
	sSelect = oListe.CurrentValue
'	if Len(sSelect)=0 then 
'		msgbox "L'item est vide" 
'		exit sub
'	endif
	nRefAgent = oListe.SelectedItems(0) 'récupère le Ref_Agent
	oDoc = ThisDatabaseDocument()
	oCnx = oDoc.CurrentController.ActiveConnection
	sSQL = "SELECT ""Agents"".""Nom"", ""Agents"".""Prénom"", " & _
		" ""Evenements"".""Type d'évènement"", ""Evenements"".""Commentaires"" " & _
		" FROM ""Evenements"", ""Agents"" WHERE ""Evenements"".""Ref_agent"" " & _
		"= ""Agents"".""Ref_agent"" AND ""Agents"".""Ref_agent"" = " & _
		nRefAgent & "ORDER BY ""Agents"".""Nom"" ASC, ""Agents"".""Prénom"" ASC "
	oCnx.queries.getByName("R_evenements").Command = sSQL
	oRapp = oDoc.ReportDocuments.getByName("Ra_evenements")
	oRapp.open()
End Sub
J'ai également testé en mettant un apostrophe devant cette ligne mais ça ne change pas le résultat.

Malheureusement, l'affichage ne correspond pas à la liste déroulante. Quand je sélectionne TEST1 j'ai TEST2 et quand je sélectionne TEST2 j'ai TEST3 qui s'affiche. Je n'y comprends plus rien.

J'ai cherché un peu partout mais je ne trouve pas le problème.


EDIT :
Re, j'ai re-testé en reprenant ton document dans ton post initiale et là ça fonctionne... Je ne comprends pas ce que j'ai fais entre deux... Du coups, je mets à jour sur ma base et je reviens ici pour cloturer ou te dire s'il y a un autre soucis.

Merci beaucoup.

EDIT2 :

Je viens de mettre à jour ma base. Sans la partie "test" ça fonctionne parfaitement. (J'ai un peu galéré, mais j'ai réussi :lol: ).

En revanche, maintenant j'ai un nouveau problème que je vais exposer dans un nouveau post.

Merci encore à vous deux, Dude et jeanmimi et à bientôt sur d'autre post.

Je joint la base avec les modifs, si ça peux aider.
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