Tem como passar um objeto, como parametro, para o meu relatorio ??
valeu !!
Tem como passar um objeto, como parametro, para o meu relatorio ??
valeu !!
Vala…
Cara tem sim! Basta vc colocar o objeto dentro do HashMap.
Aí vc recupera o objeto dentro do jasper como vc faz em java mesmo.
Coloquei assim :
parameters.put("obj", p);
para passar o objeto como parametro. E lá no jasper declarei uma variavel do tipo Object, chamada obj. Meu problema eh na hora de recuperar a informação. Tentei isso :
$P{obj.Cod_TipoMov}
Onde TipoMov eh um atributo do tipo String, mas no entanto não deu certo !!!
como deve ser ??
Você teria que declarar o a classe do parametro não como Objeto, mas sim como o tipo de classe que o Objeto representará.
Por exemplo colocar na declaração do tipo do parâmetro:
com.meu.pacote.MinhaClasse
Mas não sei como que fica o lance do classpath. Talvez tenha que colocar essa classe no diretório lib do Jasper quando estiver testando.
Crie uma classe com os get’s necessarios tipo
package br.com.meu.pacote.legal;
public class RelogioAtomicoAnalogico{
public java.lang.String getCodigo(){
return "Hello World";
}
}
agora passe ela como parametro no HashMap [acho que nao preciso explicar né? :D]
beleza agora vamos ao iReport
Crie um Parameter [View -> Report Parameters -> New]
Parameter Name: RelogioAtomicoAnalogico
Class Type: java.lang.Object
[/code][code]
Crie uma Variable [View -> Report Variables -> New ]
Variable Name: RelogioAtomicoAnalogico
Class Type: br.com.meu.pacote.legal.RelogioAtomicoAnalogico
Variable Expression: $P{RelogioAtomicoAnalogico}
agora no report basta criar um field do tipo string com a expressao
$V{RelogioAtomicoDigital}.getCodigo()
se eu nao me perdi, deve funcionar :lol:
valeu cara? até mais…
valeu gui pela ajuada, mas ainda to com problema. Lá no campo Variable Class Type de principal.jrxml, eu coloquei apenas Material, que o nome da classe que eu desejo passar como parametro. Tanto Material.java como principal.jrxml estaõ no mesmo diretorio, por isso nesse campo, Variable Class Type, coloquei apenas o nome da classe.
No entanto na hora que eu rodo no iReport ele diz que não consegeu encontrar a classe Material. Ao meu ver, ele deveria encontrar uma vez que estão no mesmo diretorio !!
valeu !
Alguem ajuda ai ??
Para o IReport encontrar minhas classes eu tive que colocar o jar com elas dentro da pasta lib do IReport…
Faça isso, feche o IReport e abra novamente e então tente compilar o arquivo…
Detalhe: se for um arquivo apenas precisa ser o .class e não o .java
Fallow
E se eu executar da aplicação e naõ do iReport, daria esse problema tb ?? Acho q não ne’?? No entanto eu tentei da aplicaçao e tb não deu certo !!
valeu cara !!
Siga Passo-a-Passo.
e você precisa expecificar o package certinho na Variable beleza ?
de uma relida no que eu passei. faça um passo-a-passo que vai funcionar…
Valeu? até mais…
E o erro foi o mesmo? Tipo, na aplicação vc pegou o jrxml e compilou e mesmo assim deu o mesmo erro?
Não . Na aplicação não deu erro algum , simplismente não apareceu nada. Fiz tudo como o gui falou, mas infelismente não aparece nada !!
Tanto o .jrxml quanto o .java (classe a ser passada como parametro para .jrxml) estão no mesmo diretorio. Por isso, no campo “Variable Class Type” coloquei apenas o nome da classe.
gui, so aquele passo-a-passo que vc deu eh suficiente mesmo ?? Fiz igualzinho como vc disse !! Vc poderia dá uma explicada na localização da classe que eu quero passar como parametro , ou seja, onde ela deve ficar ? Da forma que eu estou fazendo num era pra dá certo não ??
valeu !!!
aqui no meu tb naum funciona… da q num acha a classe… issu dentro do iReport
Compiling to file... D:\projetosNetBeans\iReport\src\ireport\iReport.jasper -> D:\projetosNetBeans\iReport\src\ireport\iReport.java
Error compiling the report Java source.
net.sf.jasperreports.engine.JRRuntimeException: java.lang.ClassNotFoundException: ireport.RelogioAtomicoAnalogico at net.sf.jasperreports.engine.base.JRBaseVariable.getValueClass(JRBaseVariable.java:130) at net.sf.jasperreports.engine.design.JRVerifier.verifyVariables(JRVerifier.java:669) at net.sf.jasperreports.engine.design.JRVerifier.verifyDataset(JRVerifier.java:2092) at net.sf.jasperreports.engine.design.JRVerifier.verifyDesign(JRVerifier.java:180) at net.sf.jasperreports.engine.design.JRVerifier.verifyDesign(JRVerifier.java:158) at net.sf.jasperreports.engine.design.JRAbstractCompiler.verifyDesign(JRAbstractCompiler.java:257) at net.sf.jasperreports.engine.design.JRAbstractCompiler.compileReport(JRAbstractCompiler.java:144) at net.sf.jasperreports.engine.design.JRDefaultCompiler.compileReport(JRDefaultCompiler.java:105) at net.sf.jasperreports.engine.JasperCompileManager.compileReportToFile(JasperCompileManager.java:127) at net.sf.jasperreports.engine.JasperCompileManager.compileReportToFile(JasperCompileManager.java:109) at it.businesslogic.ireport.IReportCompiler.run(IReportCompiler.java:529) at java.lang.Thread.run(Unknown Source) Caused by: java.lang.ClassNotFoundException: ireport.RelogioAtomicoAnalogico at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Unknown Source) at net.sf.jasperreports.engine.util.JRClassLoader.loadClassForName(JRClassLoader.java:90) at net.sf.jasperreports.engine.base.JRBaseVariable.getValueClass(JRBaseVariable.java:126) ... 11 more
Compilation running time: 62
Poisé a classe nao esta no classpath ai nao funciona mesmo.
[quote=keller]Crie uma classe com os get’s necessarios tipo
package br.com.meu.pacote.legal;
public class RelogioAtomicoAnalogico{
public java.lang.String getCodigo(){
return "Hello World";
}
}
agora passe ela como parametro no HashMap [acho que nao preciso explicar né? :D]
beleza agora vamos ao iReport
Crie um Parameter [View -> Report Parameters -> New]
Parameter Name: RelogioAtomicoAnalogico
Class Type: java.lang.Object
[/code][code]
Crie uma Variable [View -> Report Variables -> New ]
Variable Name: RelogioAtomicoAnalogico
Class Type: br.com.meu.pacote.legal.RelogioAtomicoAnalogico
Variable Expression: $P{RelogioAtomicoAnalogico}
agora no report basta criar um field do tipo string com a expressao
$V{RelogioAtomicoDigital}.getCodigo()
se eu nao me perdi, deve funcionar :lol:
valeu cara? até mais… [/quote]
O Amigo…joia…estava precisando fazer a mesma coisa…e usei seu procedimento no entando quando vai exibir …exibi nulo…so que o objeto está no map…tem alguma ideia?
Pessoal achei o problema…tava na maneira de mandar o parametro… valeu… 8)
revivendo o tópico depois de algum tempo…
como voce corrigiu o problema de receber o valor nulo?