[Résolu] [Base] Ouvrir un rapport en fonction des données d'une liste déroulante.
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 !

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 : 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.
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.
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 
Windows 10 Pro

Windows 10 Pro
-
- 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.
Salut,
Encore une fois, merci de publier la macro.
Comme ça, on n'a pas besoin de télécharger le fichier.
Ton code ne fait rien d'autre qu'ouvrir le rapport.
Pour le 2, je t'ai montré comment faire ici : viewtopic.php?p=387596#p387596
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
Il faut donc :
- récupérer le contenu de la sélection issue de la zone de liste
- passer le résultat dans la clause WHERE du rapport
Pour le 2, je t'ai montré comment faire ici : viewtopic.php?p=387596#p387596
-
- 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.
Bonjour Dude,
Merci pour ton retour.
Désolé pour le code, je le mettrai à l'avenir, pas de problème.
Concernant les indices que tu m'as transmis :
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 :
là je suppose qu'on sélectionne la table qui contient les données à afficher ? Est-il possible de sélectionner une requête ?
là je suppose que l'ont concatene les données nom et prénom
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.
Merci pour ton retour.
Désolé pour le code, je le mettrai à l'avenir, pas de problème.
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 :
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"".*,
Code : Tout sélectionner
CONCAT( CONCAT( ""Nom"", ' ' ), " & _" ""Prenom"" )
Code : Tout sélectionner
""Adh"" FROM ""tadherents"" WHERE ""IdAd"" =" & nId
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 
Windows 10 Pro

Windows 10 Pro
-
- 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.
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 ?
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
Dernier point, il est inutile de répéter :
Code : Tout sélectionner
option explicit
global LibOForm as object
-
- 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.
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
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
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
-
- 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.
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 :
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 :
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 :
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).
Merci encore pour votre temps.
Merci beaucoup pour vos réponses.
Ça fait beaucoup de choses à assimiler, du coups je vais essayer de répondre dans l'ordre.
Dude :
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
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
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).
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 
Windows 10 Pro

Windows 10 Pro
-
- 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.
Il y a une erreur sur cette ligne :
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 :
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 :
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 :
Code : Tout sélectionner
NomEnCours = oForm.getByName("ListeD").CurrentValue
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
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 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
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
-
- 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.
Jeanmimi,
Concernant l'erreur dont tu parles, j'avais renomé le contrôle en "ListeD" du coups je pensais que c'était bon.
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) :
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.
Concernant l'erreur dont tu parles, j'avais renomé le contrôle en "ListeD" du coups je pensais que c'était bon.
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) :
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 
Windows 10 Pro

Windows 10 Pro
-
- 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.
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.
-
- 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.
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).
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.
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).
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 
Windows 10 Pro

Windows 10 Pro
-
- 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.
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 :
(*) https://wiki.documentfoundation.org/ReleasePlan/7.3
Sers toi de XRay et affiche ce que renvoie aElem
Mais bon, quand je vois ta signature :
Cette version est obsolète depuis 2022(*).Libre office 7.3.7.2 < Obligation de version
Windows 10 Pro
(*) https://wiki.documentfoundation.org/ReleasePlan/7.3
-
- 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.
Dude,
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.
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 
Windows 10 Pro

Windows 10 Pro
-
- 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.
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 :
Beaucoup d'anomalies encore avec :
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
- deux formulaires portant le même nom
- le formulaire contenant la liste basé sur la mauvaise table
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
-
- 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.
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.
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).
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.
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
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Libre office 7.3.7.2 < Obligation de version 
Windows 10 Pro

Windows 10 Pro
-
- 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.
Teste le document que j'ai joint avant d'essayer ailleurs.
-
- 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.
C'est ce que j'ai fais et où j'ai eu le "msgbox"
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Libre office 7.3.7.2 < Obligation de version 
Windows 10 Pro

Windows 10 Pro
-
- 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.
Aucun problème sous OpenOffice 4.1.15 :
.
.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
-
- 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.
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.

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 
Windows 10 Pro

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

Il faudrait voir si un rapport est ouvert là dessus et à en ouvrir un si inexistant.
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.
-
- 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.
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).
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
).
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.
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
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

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 
Windows 10 Pro

Windows 10 Pro