[RESOLVIDO]IReport > Relatório apartir de JTable (Ajudem por favor)
10 respostas
J
javaJoni
Olá pessoal do GUJ,
preciso de uma ajuda com IREPORT. Uso ele com conexão com BD tranquilamente, mas agora minha aplicação exige a impressão de dados que ja foram trazidos do BD e estão em uma jTable swing. Sei que existe a classe JRTableModelDataSource e sei como enviar ao relatório meu model da jTable.
Porém ainda não sei como fazer lá dentro do designer do IReport quanto aos campos que irão receber os dados do model.
Por favor, se alguém puder me dar umas dicas ou indicar algum link eu agradeço muito.
pq vc nao faz o seguinte, vc provavelmente tem uma list que vc preenche o JTable, é so pegar esse list e mandar para o Ireport.
t+
J
javaJoni
Olá alissonvla,
tenho um list sim, mas como faço pro IReport entender o list? como relacionar no relatorio os campos com as posicoes do list?
Vc tem algum tuto ou link q posso usar?
Abraço!!
A
alissonvla
cara,
sua lista é de um objeto especifico, com isso no ireport vc vai criar variavel com o mesmo nome dos seus atributos na sua classe.
e no java para passar essa lista para o ireport basta criar um objeto da classe JRBeanCollectionDataSource.
t+
J
javaJoni
Olá alissonvla,
segui seu conselho e criei variaveis no relatorio e usei a JRBeanCollectionDataSource.
Mas no relatório os campos aparecem null, mas a quantidade de objetos do list esta correto(criei uma variavel para incrementar em cada registro).
Segue o código da chamada do relatório:
Stringarq=DIR_RELATORIOS+"\\RelRanking.jasper";Mapmap=newHashMap();JRBeanCollectionDataSourceds=newJRBeanCollectionDataSource(lista);JasperPrintimpressao=null;impressao=JasperFillManager.fillReport(arq,map,ds);JasperViewerjasperViewer=newJasperViewer(impressao,false);jasperViewer.setDefaultCloseOperation(JasperViewer.DISPOSE_ON_CLOSE);jasperViewer.setTitle("Ranking de Jogadores");jasperViewer.setIconImage(Toolkit.getDefaultToolkit().getImage(getClass().getResource(JanPrincipal.ICONE_LOGO)));jasperViewer.setZoomRatio((float)1.25);jasperViewer.setExtendedState(JasperViewer.MAXIMIZED_BOTH);jasperViewer.setModalExclusionType(ModalExclusionType.APPLICATION_EXCLUDE);jasperViewer.requestFocus();jasperViewer.setVisible(true);
Veja no anexo como os campos retornam nulos.
Se puder me dar uma luz eu agradeço.
Té+
A
alissonvla
cara,
vc tem certeza q o nome das variaveis no ireport tem o mesmo nome das variaveis do seu objeto que vc está passando na lista.
t+
J
javaJoni
Tenho sim alissonvla, inclusive fiz um ctrl+c/ctrl+v dos nomes. Nao tem mais alguma configuracao no relatorio que tenho que fazer?
O JRBeanCollectionDataSource aceita ArrayList ?
Outra coisa: minha conexao configurei como Custom JRDataSource. É assim mesmo?
té+
A
alissonvla
entao,
vc tem que passar algo assim, ArrayList().
e eu nao entendi, Outra coisa: minha conexao configurei como Custom JRDataSource. É assim mesmo?
T+
J
javaJoni
alissonvla, consegui!!!
Foi um mau entendido: anteriormente vc disse que eu deveria criar variaveis no relatorio com o mesmo nome dos atributos do objeto, entao criei variaveis e setei nos campos, mas na verdade eu tinha que criar fields com os nomes do objeto.
Fiz dessa forma e resolveu.
Demorou pra cair a ficha, rsrs.
Valeu alissonvla e pessoal do GUJ, muito obrigado!
Abraços
A
alissonvla
boaa… :lol:
marque o post como resolvido.
t+
P
PauloHLG
ressuscitando o tópico kkkkkkk
então tentei fazer da maneira q vc colocaram anteriormente:
O field data é o mesmo do objeto da lista, mas provavelmente vai dar problema em todos os campos (pq o data é o primeiro da sequencia).
Eu tenho que criar uma conexão especifica la no ireport pra fazer a geração pela tabela?
Alguma ideia do que pode estar acontecendo?