Bonjour,
Je souhaite passer le nom de la table en paramètre vers ireport :
parameters.put("table", "nom de ma table");
même sur ireport ça marche pas .
Si quelqu 'un a déjà fais , merci de me donner la solution .
Merci de votre réponse
Bonjour,
Je souhaite passer le nom de la table en paramètre vers ireport :
parameters.put("table", "nom de ma table");
même sur ireport ça marche pas .
Si quelqu 'un a déjà fais , merci de me donner la solution .
Merci de votre réponse
bonsoir,
je ne veux pas dire de bêtises mais pour moi il n'est pas possible de le faire directement par un paramètre. J'ai regardé le bouquin de ireport sur la partie paramètre et apparemment rien n'est prévu à cet effet :
extrait du livre :
Parameters are values usually passed to the report from the program that creates the print of the report. They can be used for guiding particular behaviors during runtime (such as the application of a condition in a SQL query) and for supplying additional data to the print context such as an Image object containing a chart or a string with the report title.
Built-in Parameters
JasperReports provides some built-in parameters (they are internal to the reporting engine) that are readable but not modifiable by the user.
Parameter Description
REPORT_PARAMETERS_MAP This is the java.util.Map passed to the fillReport method, and it contains the parameter values defined by the user.
REPORTCONNECTION This is the JDBC connection passed to the report when the report is created through a SQL query.
REPORT_DATASOURCE This is the datasource used by the report when it is not using a JDBC connection.
REPORT_SCRIPTLET This represents the scriptlet instance used during creation. If no scriptlet is specified, this parameter uses an instance of
net.sf.jasperreports.engine.JRDefaultScriptlet. Starting from
JasperReports 1.0.0, an implicit cast to the provided scriptlet class is
performed. This simplifies many expressions that use the provided
scriptlet class.
IS_IGNORE_PAGINATION You can switch the pagination system on or off by setting a value for this parameter (it must be a Boolean object). By default, pagination is used, except for exporting to HTML or Excel formats.
REPORT_LOCALE This is used to set the locale used to fill the report. If no locale is provided, the system default will be used.
REPORT_TIME_ZONE This is used to set the time zone used to fill the report. If no locale is provided, the system default will be used.
REPORT_MAX_COUNT This is used to limit the number of records filling a report. If no value is provided, no limit will be set.
REPORT_RESOURCE_BUNDLE This is the resource bundle loaded for this report. See Chapter 10 for how to provide a resource bundle for a report.
REPORT_VIRTUALIZER This defines the class for the report filler that implements the JRVirtualizer interface for filling the report.
Voilà donc apparemment rien n'est prévu pour si ce n'est de créer peut être un subreport contenant une requête sur la table que tu souhaitais passer en paramètre.
Bonne soirée
Merci de votre réponse.
par contre , est ce que je peux passer toute la requette en paramtere ?
En faite j ai des table qui finissent par l'excercice 2007_2008 par exemple ,
et ça se traite au niveau de java .
Merci à vous.
Je pense que tu dois nous exprimer ton besoin autrement! Il n'y a pas qu'une seule façon pour résoudre un problème en développement, sauf parfois...![]()
Bonjour,
Voila mon problème :
sur ma classe java je cherche le chiffre d'affaire d'un exercice à partir d'une date saisi par l'utilisateur , exemple l'utilisateur entre '2008_2009' , souhaite consulter le rapport de l'anneé 2008/2009 , alors ma requette sera sur la table exercice_2008_2009 .
c'est pour ça je veux passer la table en parametre sinon toute la requette
Merci à vous
Ton problème est d'ordre conceptuel. Je vois que tu fais pour chaque exercice une table et çà ce n'est pas plus du tout recommandé. Tu dois normalement avoir une seule table qui contient les chiffres d'affaires avec des dates (les années). L'utilisateur sélectionnera l'anné qu'il veut, ta classe Java va récupérer ce paramètre (l'année) que tu passeras à ton rapport qui contient à son tour ta requête SQL avec un paramètre année.
Ta requête SQL ressemblera alors à :
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part Select sum(montant) from maTable Where annee = $P{monParametre}
Est ce bien clair pour toi tout ça?
Oui , merci de m'avoir répondre , mais ça c'est l existant , c'est pas ce que je dois modifier.
Mon périmètre d'intervention est juste sur le graphe
Donc je dois m'adapter avec l'existant , faut que mon programme soit intelligent pour connaitre quelle table va interroger , en fonction de l'année .... c'est compliqué (sauf la solution de créer un graphe pour chaque exercice , c'est pas trop intelligent)
Et tu as beacoup d'exercices ou juste 2 ou 3?
Ces exercices sont figés dans le temps ou que tu auras des exercices suplémentaires après?
car s'ils sont figés alors tu n'as qu'à créer des fichiers Jasper pour chaque exercice et en fonction du choix de l'utilisateur tu attaques un tel ou tel fichier Jasper.
Bonjour,
c'est bien ce que j 'ai préciser dans ma derniere réponse "(sauf la solution de créer un graphe pour chaque exercice , c'est pas trop intelligent )"
ça va pas etre pas dynamique , et le prochaine exercice , on dois modifier créer un nouveau jasper et modifier le code .
Vous pensez pas qu'on peut modifier le jrxml a partir de java ? avant de lancer la compilation
ça serai pas bete![]()
Beh tu peux modifier ton JRXML (même si je ne l'ai jamais fait) via des API XML telle que XSLT ( mais ça sera pas une bonne solution car dans ce cas tu devras à chaque fois compiler ton JRXML, et imagine si tu as beacoup d'utilisateurs qui se connectent à ton application et que chacun fait une compilation et tu dois gérer des noms de fichiers...
Oui , ça me semble aussi compliqué , donc j'affiche seulement un exercice ,
Merci de m'aider par votre réflexion et votre savoir faire
Essayer d'utliser cette syntax $P!{TBLE_NAME} au lieu de $P{TBLE_NAME}.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager