Bom, no meu caso eu coloquei um JOptionPane pra pessoa digitar o id pro relatório.
public relatClientes() {
try
{
con.conecta();
int var =Integer.parseInt(JOptionPane.showInputDialog(null, “Digite o código para executar o Relatório: “));
con.executeSQL(“SELECT * from cliente where codigo=” + var);
JRResultSetDataSource jrRS = new JRResultSetDataSource(con.resultset);
JasperPrint jasperPrint = JasperFillManager.fillReport(
”/estoque full/estoque/estoque/relatorio/relClientes.jasper”, new HashMap(), jrRS);
JasperViewer.viewReport(jasperPrint, false);
Essa parte você define depois que criou uma cláusula SQL no IReport. Você deve ir até a opção de consultas do relatório (como estou no trabalho e minha máquina não tem o iReport não tenho certeza desta opção) e incluir um parâmetro do tipo de dado que quiser (int, String, Float, etc). Após isto, altere a cláusula, colocando o parâmetro criado no where.
A API do iReport dá suporte para que você passe parâmetros, através de um HashMap, por exemplo.
Para tanto, será preciso criar variáveis no relatório, no momento em que o mesmo é programado. Há até uma maneira de rodar passando estes parâmetros.
Mais tarde, em casa, envio uns exemplos, para tornar mais didático e compreensível o que disse.
justo pela dificuldade, no caso aqui do meu projeto, tudo que está no relatorio é passado pelo map, mas nao uma lista… se eu tenho meu bean Usuario… passo uma lista usuarios pra ele como eu faço usuario.getNome() por exemplo… ?
Vou usar a idéia do marciofermino e complementar com o que eu compreendi como solução para tua duvida. O HashMap pode receber objetos do tipo Object, assim sendo, é possível colocar qualquer tipo de dado nele, certo?
Portanto, considerando que você queira passar os parâmetros pêra, uva, maçã e tomate, basta que, dentro do report criado, você possua respectivas variáveis que recebam estes valores.
Basicamente, seria:
Dando continuidade…
Não sei que versão do iReport você está utilizando, mas na versão 3.0 o processo é assim:
1 - Cria-se o modelo do relatório com uma query que considere a cláusula where e todas as variáveis são instanciadas como padrão (codigo = 1, nome = ‘’, etc);
2 - Com o modelo pronto, vou até o menu visualizar e acesso Parâmetros do relatório;
3 - Clico em novo, informo o nome do parâmetro (o mesmo que será passado no HashMap) e em valor padrão da expressão, insiro $P{nome_do_parametro} ;
4 - Posso clicar em “usar como sugestão” e, quando executar o relatório usando a conexão ativa, o próprio iReport se encarrega de solicitar o valor para o parâmetro;
5 - Após clicar em “Ok” fecho a outra caixa e vou até o menu Data e acesso query do relatório;
6 - No lugar dos parâmetros padrão da cláusula where, insiro os parâmetros criados, sempre na forma select * from vegan_food where cod = $P{tomate} ;
marciofermino , obrigada…
mas eu nao estou com problemas nisso, eu sei fazer uma query, sei passar valores do map… meu problema era usar esse parametro no where dentro do relatorio, nao na aplicação, mas obrigada mesmo assim
drsmachado ,
acho que é esse o caminho mesmo, vou tentar fazer isso agora aqui no projeto e te dou um feedback se funcionou…
obrigada
Seguinte… no iReport vc vai colocar uma query simples
SELECT * FROM FUNCIONARIOS
isso mesmo…
ai quando for chamar o relatorio… vc olha que eu crio o SQL como quiser…
e passo resulset para o relatorio… entao o meu SELECT * FROM funcionarios. ja era…
Estou explicando assim para vc entender… tecnicamente nao é isso oque acontece…
where ei.index_id = $P{indexId} //no banco isso eh um number
and eiad.price_date = $P{priceDate} //esse eh date
and eias.ticker = $P{tickerName} //esse eh varchar
and eias.action_id = $P{actionId} // esse number
and ei.index_id=eias.index_id
eu setei os parametros pra string, number/int e date…
mas ele da um erro do sql…
Amigos boa noite,
Sou novo com Ireport, estou tentando passar parametros para iReport, já tentei de tudo, diversas formas, e até agora não consigo ver uma luz no fundo do túnel, por favor me ajudem, segue meu código:
Versão netbeans: 7.3
Versão Ireport: 5.2.0
Versão MySQL: 5.6.12
Quando utilizo o preview do iReport ele pede o parâmetro, e funciona perfeito, mas quando vou para o netBeans e tento comunicar com o iReport gera o erro na linha 1461, como o trace abaixo:
relatorio = java.io.BufferedInputStream@71880832
parametro = {nmesa=4}
con = com.mysql.jdbc.JDBC4Connection@19d244d9
Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
at net.sf.jasperreports.engine.util.JRLoader.<clinit>(JRLoader.java:68)
at net.sf.jasperreports.engine.JRPropertiesUtil.loadProperties(JRPropertiesUtil.java:99)
at net.sf.jasperreports.engine.DefaultJasperReportsContext.initProperties(DefaultJasperReportsContext.java:94)
at net.sf.jasperreports.engine.DefaultJasperReportsContext.<init>(DefaultJasperReportsContext.java:71)
at net.sf.jasperreports.engine.DefaultJasperReportsContext.<clinit>(DefaultJasperReportsContext.java:59)
at net.sf.jasperreports.engine.JasperFillManager.getDefaultInstance(JasperFillManager.java:85)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:824)
at wrestaurante.view.PedidosView.imprimirRecibo(PedidosView.java:1461)
at wrestaurante.view.PedidosView.jButton2ActionPerformed(PedidosView.java:908)
at wrestaurante.view.PedidosView.access$1900(PedidosView.java:91)
at wrestaurante.view.PedidosView$18.actionPerformed(PedidosView.java:520)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6505)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6270)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4861)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2719)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:694)
at java.awt.EventQueue$3.run(EventQueue.java:692)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:708)
at java.awt.EventQueue$4.run(EventQueue.java:706)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:154)
at java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:182)
at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:221)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:219)
at java.awt.Dialog.show(Dialog.java:1082)
at java.awt.Component.show(Component.java:1651)
at java.awt.Component.setVisible(Component.java:1603)
at java.awt.Window.setVisible(Window.java:1014)
at java.awt.Dialog.setVisible(Dialog.java:1005)
at wrestaurante.view.Inicio.exibirPedido(Inicio.java:3238)
at wrestaurante.view.Inicio.bt4ActionPerformed(Inicio.java:2774)
at wrestaurante.view.Inicio.access$2000(Inicio.java:19)
at wrestaurante.view.Inicio$21.actionPerformed(Inicio.java:1614)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6505)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6270)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4861)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2719)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:694)
at java.awt.EventQueue$3.run(EventQueue.java:692)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:708)
at java.awt.EventQueue$4.run(EventQueue.java:706)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 93 more