Relatorios Ireport

Pessoal estou fazendo um sistema para gerencia orçamentos na parte de relatórios vai ter os filtros tipo por data por vendedor orçamento fechado esse tipo de opções a minha dúvida é se eu monto a estrutura de pesquisa do sql para cada tipo de pesquisa e conforme as opções eu passo para o irreport ow eu eu gero os arquivos do relatorio para cada opões de pesquisa para gerar relatório…

Oi Tiago, não sei se entendi a sua dúvida. Você quer permitir que seus parâmetros de filtro para gerar o relatório possam ser nulos?
Se for essa a dúvida, uma opção seria você enviar nulo para o parâmetro, e tratar na SQL.

[]'s

[quote=crfurlan]Oi Tiago, não sei se entendi a sua dúvida. Você quer permitir que seus parâmetros de filtro para gerar o relatório possam ser nulos?
Se for essa a dúvida, uma opção seria você enviar nulo para o parâmetro, e tratar na SQL.

[]'s [/quote]

não…

É assim eu vou fazer uma janela de relatorio, e nessa janela eu quero coloca a opção da pessoa gerar por ex. o relatório de orçamento de todos os vendedores ou de um especifico, para gerar os orçamentos de tal data a tal data esses tipo de coisa , conforme a pessoa vai usa o filtro a sintaxe do sql vai mudar, ae vem minha dúvida de como fazer esse tipo de filtros com o irreport se nele eu deixo ele para receber uma variavel e passo o codigo sql da minha aplicação pra ele.

Ah tah…entendi agora…vc quer gerar SQL dinamicamente…
Tenta dar uma olhada neste tipo de parâmetro $P!

“$P!{name_parameter} It is a special syntax used in the report SQL query to
indicate that the parameter does not have to be dealt
as a value to transfer to a Prepared Statement, but
that it represents a little piece of the query.”

Ao invés de valor, ele espera uma sentença SQL. Assim vc monta seu where conforme a opção que o usuário marcar…no caso de uma anulação…vc pode mandar “1 = 1”, ai não haverá erros na contrução da SQL.

[]'s

[quote=crfurlan]Ah tah…entendi agora…vc quer gerar SQL dinamicamente…
Tenta dar uma olhada neste tipo de parâmetro $P!

“$P!{name_parameter} It is a special syntax used in the report SQL query to
indicate that the parameter does not have to be dealt
as a value to transfer to a Prepared Statement, but
that it represents a little piece of the query.”

Ao invés de valor, ele espera uma sentença SQL. Assim vc monta seu where conforme a opção que o usuário marcar…no caso de uma anulação…vc pode mandar “1 = 1”, ai não haverá erros na contrução da SQL.

[]'s[/quote]

no caso quando eu não quiser usar a clausula eu passo o valor para ela?

Isso, para anular passe algo que não interfira na montagem da SQL.
Por exemplo:


AND
$P!{variavel}
AND

Assim vai estar na SQL do ireport. Se vc quiser anular com “1 = 1”, a variavel é passada como uma String lá da aplicação. Ficaria assim:


AND
1 = 1
AND

Ou um código de restrição para a consulta:
“TB_NOTA_CAB.COD_NOTA_CAB = TB_NOTA_ITEM.COD_NOTA_CAB”
Ficaria assim:


AND
TB_NOTA_CAB.COD_NOTA_CAB = TB_NOTA_ITEM.COD_NOTA_CAB
AND

Essa substituição o irepot faz, diferente de um parametro ($P{}) normal que somente espera um valor.
Qualquer bloco SQL você pode enviar como String para esse parâmetro ($P!{}), ai fica conforme a regra que está utilizando.

[]'s

Neste caso eu acho melhor adquirir os dados no java e não usar o esquema de consultas do iReport. Use o iReport apenas para criar o layout do relatório. Então você pode usar a classe JRBeanCollectionDataSource para passar uma Collection dos resultados da sua consulta.

Faz uma busca no forum ou no google que vc acha um monte de tutorial.

Até.

[quote=Eliezer Reis]Neste caso eu acho melhor adquirir os dados no java e não usar o esquema de consultas do iReport. Use o iReport apenas para criar o layout do relatório. Então você pode usar a classe JRBeanCollectionDataSource para passar uma Collection dos resultados da sua consulta.

Faz uma busca no forum ou no google que vc acha um monte de tutorial.

Até.[/quote]

Concordo. Se quiser usar este exemplo q mostra como setar o classpath com os arquivo .class dos seus javabeans(olhar ultimo post) ou esse q explica melhor a ideia q o nosso colega postou logo acima.

segui esse tutorial so que na classe inicio ta dando erro na linha
http://www.furutani.eti.br:8080/MostrarArtigo.action?codigo=5

impressao = JasperFillManager.fillReport(arquivoJasper, parametros, ds);

[quote=tiago.vt]segui esse tutorial so que na classe inicio ta dando erro na linha
http://www.furutani.eti.br:8080/MostrarArtigo.action?codigo=5

impressao = JasperFillManager.fillReport(arquivoJasper, parametros, ds);[/quote]

Qual erro ocorre? deu uma olhada nos tutoriais que te passei acima?

[quote=ebarros][quote=tiago.vt]segui esse tutorial so que na classe inicio ta dando erro na linha
http://www.furutani.eti.br:8080/MostrarArtigo.action?codigo=5

impressao = JasperFillManager.fillReport(arquivoJasper, parametros, ds);[/quote]

Qual erro ocorre? deu uma olhada nos tutoriais que te passei acima?[/quote]


net.sf.jasperreports.engine.JRException: Error loading object from InputStream
	at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:196)
	at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:580)
	at exemplo.Inicio.exibirRelatorio(Inicio.java:44)
	at exemplo.Inicio.main(Inicio.java:96)
Caused by: java.io.InvalidClassException: net.sf.jasperreports.engine.base.JRBaseReport; local class incompatible: stream classdesc serialVersionUID = 10101, local class serialVersionUID = 10200
	at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:562)
	at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1583)
	at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1496)
	at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1583)
	at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1496)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1732)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
	at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:192)
	... 3 more