[RESOLVIDO] Dúvida conceitual - Jasper Reports

Bom dia pessoal,

Estou com um dúvida conceitual.

Sou novo na plataforma java na prática, venho estudando a bastante tempo, mas na prática mesmo, estou no primeiro projeto.

Estou utilizando JSF + PRIMEFACES + HIBERNATE + JASPER.

Está tudo muito bem. O sistema rodando legal e agora começo a criar meus relatórios, ai que está a dúvida.

Li artigos sobre a criação de relatórios em jasper, utilizando a conexão hibernate e seus respectivos modelos, já consegui entender e executar até ai, porém minhas dúvidas são:

1º - Estou passando os dados através de List<>, mas e quando eu precisar de mais de um tipo de objeto no meu relatório?

2º - Se quando utilizo “Java Bean Data Source” eu necessito obtê-la através de uma classe java, tudo que eu quiser criar de relatório, eu terei de criar uma classe pra isto?

3º - Supondo que necessite criar um determinado comando SQL, com somas, médias, agrupamentos e etc, de vários objetos diferentes, obtendo uma query despadronizada (ou seja, que não seja um modelo do meu sistema), como farei pra criar relatório em cima disto?

Sei que posso criar uma conexão JDBC e a partir daí criar meus sql’s no jasper e fazer qualquer coisa, mas… e com hibernate connection?

Como vocês na prática lidam com isto??? Estou precisando de um norte para seguir…

Grande abraço!

Mano, sinceramente eu nunca usei dessa forma, eu trato tudo direto no Jasper, crio os SQL por la, os quantitativos, e tudo mais, tudo la mesmo. E nao sei te informar se isso tem que ser assim, se é uma boa pratica ou nao, eu nem gosto de fazer relatorios, faco porque é o meu trabalho ‘-’

É… fazer relatórios é um saco mesmo hduisahdiauds…

Mas você usa conexão JDBC neste caso? ou dá pra fazer sql direto com hibernate connection?

uso JDBC puro nos sqls, mas da pra fazer com Hibernate, dentro do proprio jasper tem essa opção, so que nunca usei =D

Prefiro passar uma lista de um Java Bean Data Source com uma classe que tem o que você precisa, para não engessar o relatório com consultas ao modelo.

[quote=lele_vader]Prefiro passar uma lista de um Java Bean Data Source com uma classe que tem o que você precisa, para não engessar o relatório com consultas ao modelo.

[/quote]

Certo mas… e quando é um SQL diferenciado? Como proceder?

Aproveitando o papo, caso eu utilize jdbc, ainda tenho uma dúvida:

Supondo a seguinte situação:

1 - Objeto Cliente
2 - Objeto Pedido, que possui objeto Cliente…

Em java, eu poderia acessar o nome do cliente por: pedido.getCliente().getNome()…

Mas em jasper com jdbc, não estou conseguindo fazendo isto, se eu fizer o select apenas do pedido, como lidar com isto?

inner join, lef join e etc

Hummm… pensei que tinha uma maneira mais simples… mas de certa forma, é até melhor… pelo menos tenho liberdade de fazer o que quiser né…

Obrigado rof… vou fazer deste jeito mesmo… até agora não consegui visualizar maneira mais eficaz para não ficar engessado…

Abraço!

Você cria uma classe que tem esses atrbutos todos e retorna uma consulta para essa classe.

[quote=lele_vader]Você cria uma classe que tem esses atrbutos todos e retorna uma consulta para essa classe.

[/quote]

Ou seja… se quiser fazer um sql qualquer… tenho q criar uma classe java para isto? Cara… é muito trampo ser assim né não???

Depende.
Os mais básicos você já tem a classe para mapear.
E dependendo se usar um framework você pode mapear o resultado da sua consulta para instanciar essa classe que criou.

Acabei me decidindo por utilizar uma conexão jdbc e fazer meus sql’s de maneira mais dinâmica… mas ai me surgiu um novo problema…

Em um determinado relatório, preciso colocar dados numa mesma banda, de 2 fontes diferentes, ou seja, de 2 comandos sql diferentes…

Fiz o comando sql de relatório, com passagem de parâmetros, tudo certo, mas e o outro comando sql? onde vai?

Criei outro dataset, fiz o outro comando, mas dá erro ao visualizar…

Resolvi o erro arrastando os campos deste novo dataset, para os fields do relatório geral… o erro parou, mas nenhum dado é exibido deste dataset…

Pesquisei muito mas… até agora não consegui compreender este mecanismo…

Como proceder?

sub-relatorios nao ajuda ?

Ajudar ajuda sim… mas pensei em utilizar isto apenas quando fosse abrir uma outra banda… pela dificuldade em alinhar a coisas por exemplo…

O que voce pode fazer é juntar os sqls, tipo, voce faz 1 sql que traga TUDO, e depois no relatorio voce vai separando as coisas. Assim, acho bem complicado fazer dessa forma, porque voce deve prestar atencao nos inner join, pra nao deixar de trazer tudo, eu mesmo tive um problema desse tipo uma vez, tive que usar o left join e por ai vai.

Como te disse, relatorio pra mim = $%@!*&

hehehehehe, agora mesmo to tendo que resolver uma problema de fonte de um servidor linux, no windows sai tudo bonitinho, ja no linux nao, to batendo a cabeça aqui, acho que hoje a noite vo dormir com gelo na cabeça =D

[quote=rof20004]O que voce pode fazer é juntar os sqls, tipo, voce faz 1 sql que traga TUDO, e depois no relatorio voce vai separando as coisas. Assim, acho bem complicado fazer dessa forma, porque voce deve prestar atencao nos inner join, pra nao deixar de trazer tudo, eu mesmo tive um problema desse tipo uma vez, tive que usar o left join e por ai vai.

Como te disse, relatorio pra mim = $%@!*&

hehehehehe, agora mesmo to tendo que resolver uma problema de fonte de um servidor linux, no windows sai tudo bonitinho, ja no linux nao, to batendo a cabeça aqui, acho que hoje a noite vo dormir com gelo na cabeça =D [/quote]

Vishh… q barra… :O… infelizmente essa profissão tem dessas coisas…

Na verdade acho que a ferramenta jasper tem um conceito estranho… Resolve, mas é estranho… E como não tenho conhecimento suficiente pra fazer melhor… tenho q aceitar quietinho hehehe…

Obrigado novamente… Vou encerrar o tópico pois já me esclareceram muita coisa, e já tenho por onde começar agora… um abraço! T+