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

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…

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

se for de uma procurada por JRBeanDataSource !

vc pode passar parametros tb por um Map.

att,

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

Obrigado

pedruhenrik Como eu utilizo esse map??

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

mais ou menos assim:

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

att,

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.

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 !

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.

[quote]
pedruhenrick o método map entre os parenteses param1 e param2 seriam parâmetros criados no java e enviados para o IReport???[/quote]
sim, são criados no java.

att,

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

thanks =)

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.

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,

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???

todas essas informações vem da query? por favor posta a query q vc utiliza.

netbeans ou eclipse? quais as libs vc importou no projeto?
geralmente eu utilizo essas libs:

[code]
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 [/code]

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

att,

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

[code]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();

[…]

}

             [/code]

MINHA IDE É O NETBEANS

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

[code] btnimprimir.addActionListener(new ActionListener(){

        public void actionPerformed(ActionEvent e) {

//Aqui eu deveria colocar os parametros e chamar relatorio dentro desse action

        }[/code]

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,

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

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…

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,