Duvida sobre JasperReports - RESOLVIDO  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
fabim
GUJ Master
[Avatar]

Membro desde: 14/12/2006 19:30:03
Mensagens: 1268
Localização: Vitoria - Espirito Santo
Offline

Ola pessoal,

estou iniciando com JasperReports agora... no ambiente web

Uma pergunta pra galera que ta acostumado com o Jasper:

Qual seria a "melhor" maneira de fazer no seguinte cenario:

tenho um jsp que exibe a ficha de uma pessoa... com Lists de endereços, telefones, fotos, etc... antes de exibir o relatorio eu preciso da uma opção com varios checks, tipo o q ele quer q va pro relatorio ou nao (pelo jeito vo te q montar o xml dinamicamente ne?)

a duvida: eu uso o codigo da pessoa pra montar o sql e passar pro Jasper, ou passo os objetos pra ele (mas pra isso andei pesquinsando eu teria q usar algo como o JRBeanCollectionDataSource certo?)

opinem por favor

vlw

ειπεν αυτη ο ιησους εγω ειμι η αναστασις και η ζωη ο πιστευων εις εμε καν αποθανη ζησεται

Sun Certified Web Component Developer
Sun Certified Java Programmer
Sun Certified Java Associate
Sun Certified Business Component Developer - Em Andamento
Bacharelando em Sistemas de Informacao


[MSN]
andreengesoft
JavaChild
[Avatar]

Membro desde: 05/01/2007 11:50:19
Mensagens: 144
Localização: Belo Horizonte - MG mas eu prefiro o nordeste
Offline

VO TE MANDAR MEU CÓDIGO PRA VC VER, EU BASICAMENTE USO SQLS E DEPENDENDO DA OPÇÃO MARCADA NA APLICAÇÃO ELE FAZ UM SQL OU OUTRO CASO FOR FALSE FRAGA AI EU ACHO MAIS SIMPLES ASSIM MAS EXISTEM OUTRAS MANEIRAS COMO VC DISSE TB.



// CustomCode-Begin ADDITIONAL Const - execute
// CustomCode-End ADDITIONAL Const - execute

// LockedCode-Begin Generated Var - execute
TelosDtoSet resultSet = new TelosDtoSet();
// LockedCode-End Generated Var - execute

// CustomCode-Begin ADDITIONAL Var - execute
DataSource ds = null;
String formato = "pdf";
Map parametros = new HashMap();
JasperPrint print = null;
String sql;
SimpleDateFormat formatador = new SimpleDateFormat("yyyy-MM-dd");
String dtInicial;
String dtFinal;
dtInicial=formatador.format(criteriaDto.getDtFechInicial());
dtFinal=formatador.format(criteriaDto.getDtFechFinal());
// CustomCode-End ADDITIONAL Var - execute

try {

// CustomCode-Begin ADDITIONAL Processing - execute
try {

ds = (DataSource)TelosApplicationContext.getBean("dataSource");

sql="Select Dtregistroexterno, PessoaCliente.Nome as Cliente, PessoaColaborador.Nome " +
"as Colaborador, Produto.Nome as ProdutoNome, Chamada.Autoid, AtendimentoChamada.Autoid " +
"as AutoIdAtend, ControleExterno, TipoServico.Nome as TipoServicoNome, TempoGasto, DtAbertura, " +
"AtendimentoChamada.CompFechamento, DtFechamento From Chamada Inner Join AtendimentoChamada On " +
"Chamada.AutoId = AtendimentoChamada.Chamada Inner Join Produto on Chamada.Produto=Produto.Autoid " +
"Inner Join TipoServico on AtendimentoChamada.TipoServico=TipoServico.Autoid Inner Join Cliente on " +
"Chamada.Cliente=Cliente.Autoid Inner Join Pessoa as PessoaCliente on Cliente.Pessoa=PessoaCliente.Autoid " +
"Inner Join Colaborador on AtendimentoChamada.Colaborador=Colaborador.Autoid Inner Join Pessoa as PessoaColaborador " +
"on Colaborador.Pessoa=PessoaColaborador.Autoid where Dtfechamento >= '"+dtInicial+"' and Dtfechamento <= '"+dtFinal+"' " +
"and Chamada.Produto="+criteriaDto.getProduto();

if (criteriaDto.getColaborador()!=null)
sql += " and AtendimentoChamada.Colaborador="+criteriaDto.getColaborador();

if (criteriaDto.getCliente()!=null)
sql += " and Chamada.Cliente="+criteriaDto.getCliente();

if (criteriaDto.getCompFecha()!=null)
sql += " and CompFechamento="+criteriaDto.getCompFecha();

if (criteriaDto.getChamado()!=null)
sql += " and Chamada.Autoid="+criteriaDto.getChamado();

if (criteriaDto.getListaChamComControleExt())
{
sql += " and ControleExterno<>''";
}
sql +=" order by Chamada.Autoid, AtendimentoChamada.Autoid";

parametros.put("SQL",sql);

JasperDesign jasperDesign = JRXmlLoader.load("D:\\André Murta\\HelpDesk30\\EDSHDCasoUso\\src\\eds\\helpdesk\\atendchamadas\\RelAtendimentoporChamado.jrxml");
JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);

print = JasperFillManager.fillReport(jasperReport,parametros, ds.getConnection());

JRExporter exporter = null;
if("html".equalsIgnoreCase(formato)) {
exporter = new JRHtmlExporter();
} else if("rtf".equalsIgnoreCase(formato)) {
exporter = new JRRtfExporter();
} else {
exporter = new JRPdfExporter();
}
String dataAtual = new SimpleDateFormat("dd/MM/yyyy").format(new Date());
String nomeRel = "nome_"+dataAtual+"."+formato;
exporter.setParameter(JRExporterParameter.JASPER_PRINT, print);
File arquivo = new File("RelAtendimentoporChamado.pdf");
exporter.setParameter(JRExporterParameter.OUTPUT_FILE,arquivo);
exporter.exportReport();
} catch (Exception e) {
e.printStackTrace();
}
// CustomCode-End ADDITIONAL Processing - execute

} finally {

// CustomCode-Begin ADDITIONAL Finally - execute
// CustomCode-End ADDITIONAL Finally - execute

}

return resultSet;
von.juliano
GUJ Master
[Avatar]

Membro desde: 15/01/2007 13:31:32
Mensagens: 1266
Offline

Da maneira como vc está desenvolvendo sua aplicação, acho que é mais viável utilizar um XML como fonte de dados para o relatório, já que vc vai ter que montá-lo. Ou vc tb poderia popular um Map ou uma List, e passar para o relatório.

É difícil manter-se religioso quando algumas pessoas simplesmente não são carbonizadas por raios!

Desenvolvendo software de forma simples! - http://vonjuliano.wordpress.com/
[Email] [WWW]
fabim
GUJ Master
[Avatar]

Membro desde: 14/12/2006 19:30:03
Mensagens: 1268
Localização: Vitoria - Espirito Santo
Offline

von.juliano wrote:Da maneira como vc está desenvolvendo sua aplicação, acho que é mais viável utilizar um XML como fonte de dados para o relatório, já que vc vai ter que montá-lo. Ou vc tb poderia popular um Map ou uma List, e passar para o relatório.


[Editado]
se eu tiver q montar esse xml dinamicamente, adeus IReport?


nada a ver o q falei em cima...

ummm... xml no lugar de resultSet?

ειπεν αυτη ο ιησους εγω ειμι η αναστασις και η ζωη ο πιστευων εις εμε καν αποθανη ζησεται

Sun Certified Web Component Developer
Sun Certified Java Programmer
Sun Certified Java Associate
Sun Certified Business Component Developer - Em Andamento
Bacharelando em Sistemas de Informacao


[MSN]
von.juliano
GUJ Master
[Avatar]

Membro desde: 15/01/2007 13:31:32
Mensagens: 1266
Offline

O IReport não utiliza apenas resultSet como fonte de dados, vc pode usar um arquivo XML ou algumas das Collections do java. Vc pode criar um XML com os dados selecionados, e à partir dele gerar o relatório com o IReports, desde que os dados que serão impressos estejam no XML, é claro.

É difícil manter-se religioso quando algumas pessoas simplesmente não são carbonizadas por raios!

Desenvolvendo software de forma simples! - http://vonjuliano.wordpress.com/
[Email] [WWW]
fabim
GUJ Master
[Avatar]

Membro desde: 14/12/2006 19:30:03
Mensagens: 1268
Localização: Vitoria - Espirito Santo
Offline

von.juliano wrote:O IReport não utiliza apenas resultSet como fonte de dados, vc pode usar um arquivo XML ou algumas das Collections do java. Vc pode criar um XML com os dados selecionados, e à partir dele gerar o relatório com o IReports, desde que os dados que serão impressos estejam no XML, é claro.


thx, man =)

mais uma coisa amigo: um relatorio por exemplo de produtos de uma determinada compra, imagino seja um resultSet só, q vai exibir uma lista e paginar a medida q for preenchendo a pagina... agora, se eu precisar montar esse relatorio com varios resultsets? tem como?

exemplo eu teria o rs dos enderecos, o rs dos telefones, o rs das fotos... todos eles relacionados a um codigo...

ai eu teria q montar um layout de relatorio tipo em "grupos", ta ligado? t tipo assim o relatorio teria tipo um cabecalho onde viria nascimento, nome, blablabla informacoes do cara... ai embaixo, viriam tipo outros informações q eu gostaria q tivessem agrupadas, tipo "enderecos do individuo", "telefones do individuo"...

como faço esse agrupamento mano?

ειπεν αυτη ο ιησους εγω ειμι η αναστασις και η ζωη ο πιστευων εις εμε καν αποθανη ζησεται

Sun Certified Web Component Developer
Sun Certified Java Programmer
Sun Certified Java Associate
Sun Certified Business Component Developer - Em Andamento
Bacharelando em Sistemas de Informacao


[MSN]
von.juliano
GUJ Master
[Avatar]

Membro desde: 15/01/2007 13:31:32
Mensagens: 1266
Offline

Cara, eu nunca usei o IReport com mais de uma fonte de dados ao mesmo tempo, e não sei se é possível.

Se vc montar apenas um ResultSet, vc consegue fazer facilmente essa parte de agrupamento de dados e layout do relatório. Qualquer tutorial simples mostra como fazer isso. Dá uma olhada aí:

http://www.livramento.yu.com.br/tutoriais/ireport.html

É difícil manter-se religioso quando algumas pessoas simplesmente não são carbonizadas por raios!

Desenvolvendo software de forma simples! - http://vonjuliano.wordpress.com/
[Email] [WWW]
fabim
GUJ Master
[Avatar]

Membro desde: 14/12/2006 19:30:03
Mensagens: 1268
Localização: Vitoria - Espirito Santo
Offline

putz cara vlw mesmo... mas o link q vc me mandou da apenas umna explanada basica sobre relatorio, mas e apenas um relatorio de produtos...

no meu caso eu preciso dividir tipo "enderecos, telefones", por ae vai...

ειπεν αυτη ο ιησους εγω ειμι η αναστασις και η ζωη ο πιστευων εις εμε καν αποθανη ζησεται

Sun Certified Web Component Developer
Sun Certified Java Programmer
Sun Certified Java Associate
Sun Certified Business Component Developer - Em Andamento
Bacharelando em Sistemas de Informacao


[MSN]
von.juliano
GUJ Master
[Avatar]

Membro desde: 15/01/2007 13:31:32
Mensagens: 1266
Offline

A sua dificuldade está em gerar o relatório, ou no layout dele?

É difícil manter-se religioso quando algumas pessoas simplesmente não são carbonizadas por raios!

Desenvolvendo software de forma simples! - http://vonjuliano.wordpress.com/
[Email] [WWW]
fabim
GUJ Master
[Avatar]

Membro desde: 14/12/2006 19:30:03
Mensagens: 1268
Localização: Vitoria - Espirito Santo
Offline

von.juliano wrote:A sua dificuldade está em gerar o relatório, ou no layout dele?


a minha dificuldade tava em axar o termo do q eu queria fazer, mas ja encontrei mano: relatorios com 'subrelatorios' dentro dele =D

thx

ειπεν αυτη ο ιησους εγω ειμι η αναστασις και η ζωη ο πιστευων εις εμε καν αποθανη ζησεται

Sun Certified Web Component Developer
Sun Certified Java Programmer
Sun Certified Java Associate
Sun Certified Business Component Developer - Em Andamento
Bacharelando em Sistemas de Informacao


[MSN]
miguelbh6
Debugger
[Avatar]

Membro desde: 09/09/2008 15:49:42
Mensagens: 68
Offline

Fabim, onde vc achou informacoes sobre subrelatorios com Ireport??? to precisando disso, do jeitinhoo que vc ta fazendo.. passar um xml
com subrelatorios.

[Email] [MSN]
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team