Como faço para Ireport receber valores de uma classe?

22 respostas
gabrielemidio

Olá Pessoal, estou com uma duvida estou terminando meu projeto (TCC) e estou com dificuldade para enviar valores de uma classe venda para o Ireport não consegui entender muito bem essa criação de metodos para o Ireport… alguem poderia me ajudar???

Obs: a cada venda feita preciso gerar um relatório daquele cliente especifico…

22 Respostas

Polverini

vc diz passar um “bean” e mapealo no ireport para a impressão do pdf ??

se for de uma procurada por JRBeanDataSource !

pedruhenrik

vc pode passar parametros tb por um Map.

att,

gabrielemidio

certo eu vou dar uma pesquisada aqui qualquer coisa eu volto a perguntar…

Obrigado

gabrielemidio

pedruhenrik Como eu utilizo esse map??

Polverini

quanto a passagem de bean eu uso assim para gerar o pdf:

// DefaultStreamedContent é do primefaces 
public DefaultStreamedContent getPrint(List lista, String path, Map param) throws JRException {
        InputStream input = null;
        try {
            ByteArrayOutputStream output = new ByteArrayOutputStream();

            JasperReport relJasper = (JasperReport) JRLoader.loadObject(getClass().getClassLoader().getResourceAsStream(path));

            JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(lista);

            JasperPrint print = JasperFillManager.fillReport(relJasper, param, ds);

            JRExporter exporter = new net.sf.jasperreports.engine.export.JRPdfExporter();
            exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, output);
            exporter.setParameter(JRExporterParameter.JASPER_PRINT, print);
            exporter.exportReport();

            input = new ByteArrayInputStream(output.toByteArray());
        } catch (Exception e) {
            e.printStackTrace();
        }
        return new DefaultStreamedContent(input);

    }

ai no ireport vc configura na classe os atributos

pedruhenrik

mais ou menos assim:

Map<String, String> paramJasper = new HashMap<String, String>();
paramJasper.put("param1","param2");
JasperFillManager.fillReport(sourceFileName,paramJasper, connection);

att,

gabrielemidio

Polverini o seu metodo seria para criar uma lista setando todas as vendas para o IReport???!! mais ou menos isso???

pedruhenrick o método map entre os parenteses param1 e param2 seriam parâmetros criados no java e enviados para o IReport??? como citei logo acima eu precisaria de algum dados apenas esse IReport serviria como uma nota fiscal par ao cliente.

Obrigado.

Polverini

no meu eu crio um relatório com os dados de uma List de um determinado bean, crio um um relatório pelo ireport e nele eu tenho os fields com o mesmo nome dos atributos da minha classe, ai quando executo ele pega os dados do bean e joga no relatório, desse jeito eu posso passar por parametros tbm, é só no ireport criar os parametros e no hashmap vc colocar os parametros como o @pedruhenrik disse !

pedruhenrik

e se vc montasse um relatório no ireport igual a DANFE ( ou nota fiscal q vc esteja utilizando), ai vc pode utilizar xpath com base em um arquivo xml.

ou então utilizando o map vc mandaria muitos parametros.


pedruhenrick o método map entre os parenteses param1 e param2 seriam parâmetros criados no java e enviados para o IReport???

sim, são criados no java.

att,

gabrielemidio

ok vou da mais uma pesquisada aqui se tiver mais duvida eu volto agradeço a ajuda de vocês…

thanks =)

gabrielemidio

Pessoal ta complicado eu não to conseguindo entender mesmo a questão dos parametros do Ireport, e quando eu tento colocar a biblioteca em meu projeto ele da erro…
Alguem me ajuda!!!

A duvida é como eu vou passar informações vinda da classe para o IReport pelo seus proprios parametro?algeum poderia mostrar um exemplo bem claro pegando um código pelo mesmo e depois enviando para o Ireport criar seu SELECT lá dentro e trazer as infromações.Obrigado

Att.

pedruhenrik

vamos por partes…

vc criou um relatório no ireport? qual é a query? q tipo de informação vc precisa passar para o relatório? a informação q vc vai passar faz parte do relatório?

no Ireport vc tem q criar os parametros para recebelos atraves de um Map e nisso a chave no map deve ter o mesmo nome do para no ireport.

o seu relatório ta rodando legal no ireport? qual o erro ao tentar gerar pela IDE? posta a sua classe q chama o relatório tb.

att,

gabrielemidio

ok pedru seguinte eu preciso mostrar algumas informações na venda como nome do cliente , funcionario, e o preço da venda e mais alguns items.

o Ireport roda normal quando faço um select e do um preview aparece os dados normais, mas quando vou chamar pelo JButton as bibliotecas não responde e quando eu insiro a biblioteca do jasperreports ele mostra um projeto com Warnning, e os imports dão erro.

Isso no map passando as informações da classe para o Ireport que não entendi???

pedruhenrik
ok pedru seguinte eu preciso mostrar algumas informações na venda como nome do cliente , funcionario, e o preço da venda e mais alguns items.
todas essas informações vem da query? por favor posta a query q vc utiliza.
o Ireport roda normal quando faço um select e do um preview aparece os dados normais, mas quando vou chamar pelo JButton as bibliotecas não responde e quando eu insiro a biblioteca do jasperreports ele mostra um projeto com Warnning, e os imports dão erro.
netbeans ou eclipse? quais as libs vc importou no projeto? geralmente eu utilizo essas libs:
barbecue-1.5-beta1.jar //opcional, caso utilize código de barras
barcode4j-2.0.jar //opcional, caso utilize código de barras

commons-beanutils-1.8.2.jar
commons-collections-3.2.1.jar
commons-digester-1.7.jar
commons-logging-1.1.jar
groovy-all-1.5.5.jar
iText-2.1.7.jar
jasperreports-3.7.2.jar

poi-3.7-20101029.jar //não tenho certeza

posta também a sua classe que chama o relatório.

att,

gabrielemidio

QUERY QUE USO PARA MANDAR OS DADOS PARA O BANCO E VOU UTILIZAR PARA PEGAR OS DADOS DO DETERMINADO CLIENTE

try {
                        
       
                 con = DriverManager.getConnection("jdbc:odbc:tcc","root","");          
                 PreparedStatement ps = con.prepareStatement("insert into venda_servico(cod_sc,cod_servico,placa,id_cliente,id_funcionario,preco,data) values(?,?,?,?,?,?,?)");
                 
                 ps.setString(1,lblcodvenda.getText());
                 ps.setString(2,codigo);
                 ps.setString(3,cbplaca.getSelectedItem().toString());
                 ps.setString(4,txtcodcli.getText());
                 ps.setString(5,txtcodfun.getText());
                 ps.setString(6,lblvalor.getText());
                 ps.setString(7,calendario);
                 ps.execute();
                 ps.close();


[....]

}

MINHA IDE É O NETBEANS

esse é a api do jasper que da erro quando importo par ao projeto :jasperreports-3.0.1.jar

btnimprimir.addActionListener(new ActionListener(){

            public void actionPerformed(ActionEvent e) {
              
//Aqui eu deveria colocar os parametros e chamar relatorio dentro desse action
             
            }
pedruhenrik

Gabriel, ta certa essa sua query? insert mesmo?

vc pode deixar a query registrada no relatório ao invés de passar por código java, assim vc passa apenas a conexão para o relatório.
da uma olhada em um tutorial sobre ireport.

e posta tb o erro q dá ao importar todas as libs do ireport.

att,

gabrielemidio

A query esta certa sim Pedru e pq esse Action serve para registrar a compra em meu Banco e com essas informações que vão ser passadas para o Insert eu tenho que pegar e mandar para o Relatorio

o Erro que ocorre é que ele não identifica a lib no projeto meu projeto fica com um ponto de afirmação no projeto…

cara ja li tudo que vc pensar em Ireport mais não consegui entender nada na parte de criar o parametro e enviar para ele…

Obrigado

gabrielemidio

Vou tentar explicar de uma forma mais clara… =)

vamos supor que tenho um cliente cadastrado em minha aplicação com numero de seu código 3,um funcionario tambem numero 2.

eu vou dar um select no banco em ambas informações e vou trazer as informações que preciso dos dois, RG,nome,Telefone etc.

Depois eu vou pegar o valor da venda e mandar tambem para o Relátorio e imprimir a cada finalização de venda seria uma forma só de comprovar a venda ao cliente e ao estabelecimento.

A questão é que não sei enviar essas informações para o Ireport entende ???pq gerar um relatório de todas venda consigo só não consigo gerar um expecifico.

Agradeço a ajuda…

pedruhenrik

então Gabriel,

acho q entendi perfeitamente o q vc quer fazer.
e realmente acredito q parametros possam te ajudar.

eu consigo passar um exemplo sólido daqui uns 2 dias no máximo, se ate la vc não conseguir resolver.

no ireport do lado esquerdo tem uma aba chamada parametros clica com o botão direito e em novo, o nome q vc der a esse parametro é o mesmo que deve estar na chave do Map, ai vc consegue arrastar esse parametro como se fosse um field para o relatório.

att,

gabrielemidio

Certo eu estou usando o plugin da IDE mesmo mas consegui criar o parametro na query eu criei um chama nome_fun

ele ficaria assim no código???

Map<String, String> paramJasper = new HashMap<String, String>(); paramJasper.put("nome_fun");// ficaria assim mesmo??? JasperFillManager.fillReport(sourceFileName,paramJasper, connection);

obs : esse put serve para que?

vlw Pedru ta me ajudando muito eu vou aceitar sim o exemplo, é pq meu tcc eu apresento ele Terça-feira mais de qualquer forma eu aceito o exemplo…

pedruhenrik
[b]put[/b] é o metodo para adicionar valores ao map.

<blockquote>vlw Pedru ta me ajudando muito eu vou aceitar sim o exemplo, é pq meu tcc eu apresentou ele Terça-feira mais de qualquer forma eu aceito o exemplo.. </blockquote>

defina "apresentar", hehe acho q ta bem em cima hein.

att,

put é o metodo para adicionar valores ao map.

defina “apresentar”, hehe acho q ta bem em cima hein.

att,

gabrielemidio

kkkk correria escrevi errado pskpskspks

sim esta bem em cima, eu fui deixar o IReport por ultimo, e fui terminar a parte logica quinta -feira ai fiquei o ferido atras disso vou ver se consigo falar com meu professor de java segunda-feira …

Criado 24 de junho de 2011
Ultima resposta 26 de jun. de 2011
Respostas 22
Participantes 3