Parametros no jasperreport

0 respostas
T

Oi Gente… eu to tentando passar os parametros da minha classe para o relatório… mas eu to com duvidas…

abaixo esta o código da classe, que peguei no guj através de um tutorial muito bom… acredito que todos ja devem ter visto…

package contasconsumo_c;

/*

  • RelatorioBibliotecaPessoal.java
  • Criado em 28 de Fevereiro de 2005, 09:42
    */

/* pacotes necessários */

import dori.jasper.engine.<em>;

import dori.jasper.view.JasperViewer;

import java.sql.</em>;

import java.util.<em>;

import javax.swing.</em>;

import java.util.HashMap;
import java.io.*;

import javax.servlet.;
import javax.servlet.http.
;

/**
*

  • @author Um montao de gente
    */

public class RelatorioBibliotecaPessoal {

/* Realiza conexão com o banco de dados, retornando o objeto connection */
private static Connection getConnection( ) throws
ClassNotFoundException, SQLException
{
    String driver = "oracle.jdbc.driver.OracleDriver";
    String url = "jdbc:oracle:thin:@localhost:1521:back";
    String user = "teste";
    String password = "testeback";

    Class.forName(driver);
    Connection con = DriverManager.getConnection( url, user, password );
    return con;
}

/* Gera Relatorio e visualiza-o */
public void geraRelatorio( ) throws JRException, Exception
{
    Connection con = getConnection( );
    Statement stm = con.createStatement( );
    String query = "select * from teste.vgeral where cdprestador = 4 and cdsecretaria = 700 and substr(nrmesanoref,4,4) = '2004'";
    ResultSet rs = stm.executeQuery(query);

    /* implementação da interface JRDataSource para DataSource ResultSet */
    JRResultSetDataSource jrRS = new JRResultSetDataSource(rs);

    /* HashMap de parametros utilizados no relatório. Sempre instanciados */
    Map parameters = new HashMap();
    // parameters.put("COLUNA", valor);
    //parameters.put("cdPrestador", new Integer(1));
    //parameters.put("cdSecretaria", new Integer(1));
    //parameters.put("nmSecretaria", new String("aa"));
    //parameters.put("substr(nrmesanoref,1,2)", new String("aa"));
    //parameters.put("substr(nrmesanoref,1,2)", new String("aa"));
   
    /* Preenche o relatório com os dados. Gera o arquivo BibliotecaPessoal.jrprint */
    //JasperFillManager.fillReportToFile("C:/jakarta-tomcat-4.1.29/webapps/pmg/contasconsumo_c/relatorios/BibliotecaPessoal.jasper",parameters,jrRS);

    /* Exporta para o formato PDF */
    //JasperExportManager.exportReportToPdfFile("C:/jakarta-tomcat-4.1.29/webapps/pmg/contasconsumo_c/relatorios/BibliotecaPessoal.jrprint");

    /* Preenche o relatorio e o salva diretamente em arquivo PDF. Sem
    a necessidade do .jrprint */
    //JasperRunManager.runReportToPdfFile("C:/jakarta-tomcat-4.1.29/webapps/pmg/contasconsumo_c/relatorios/BibliotecaPessoal.jasper", parameters, jrRS);

    /* Visualiza o relatório em formato PDF */
    //JasperViewer.viewReport("C:/jakarta-tomcat-4.1.29/webapps/pmg/contasconsumo_c/relatorios/BibliotecaPessoal.pdf",false);

    JasperPrint jprint = JasperManager.fillReport("C:/jakarta-tomcat-4.1.29/webapps/pmg/contasconsumo_c/relatorios/BibliotecaPessoal.jasper", parameters, jrRS);
    JasperViewer.viewReport(jprint,false);
}

public static void main(String[] args) throws JRException, Exception
{
    new RelatorioBibliotecaPessoal().geraRelatorio();
}

}

as minhas duvisas são as seguintes:

1ª DUVIDA
eu coloquei no relatorio os parametros

[list]CodPrestador[/list]
[list]CodSecretaria[/list]
[list]NumAnoRef[/list]
[list]NumMesRef[/list]
[list]NomeSecretaria[/list]

dentro do Report query eu coloquei assim:

select * from teste.vgeral where cdPrestador=$P{CodPrestador} and cdSecretaria=$P{CodSecretaria} and substr(to_char(nrMesAnoRef),4,4) = $P{NumAnoRef}

rodando do ireport funciona legal, e inclusive eu mando em pdf, então é o seguinte, na minha classe a query esta assim:

String query = "select * from teste.vgeral where cdprestador = 4 and cdsecretaria = 700 and substr(nrmesanoref,4,4) = '2004'";

como eu devo colocar? eu ja tenho que jogar aqui mesmo os parametros dentro da classe? ou eu nao tenho que fazer a query aqui e montar la no relatorio, mas acontece que as vezes não vao todos os parametros que esta acima… entao acredito que eu tenha que montar na classe mesmo a query como bem desejar, ou melhor, como o usuario desejar…

2ª DUVIDA
eu instalei recentemente a versao 4.1.0 do ireport, rodei o relatorio por la, e funcionou, mas na hora em que eu tento rodar pelo meu jsp, não funciona… acredito que tenha a ver com os import’s, pois teria que usar o

[list]net.sf.jasperreports.engine.JasperManager[/list]
[list]net.sf.jasperreports.engine.design.JasperDesign[/list]
[list]net.sf.jasperreports.engine.JasperReport[/list]
[list]net.sf.jasperreports.engine.JasperPrint[/list]
[list]net.sf.jasperreports.view.JasperViewer[/list]

é que eu nao consigo achar isso, mas beleza… estou fazendo na versao antiga e pelo menos nessa esta funcionando, ou seja, esta aparecendo o relatorio…

3ª DUVIDA
eu nao consigo fazer o relatorio aparecer em pdf, da pau… entao eu só deixo abilitado essas linhas na classe… o que dizia respeito ao pdf eu deixei desabilitado, pois nao consigo fazer funcionar…

JasperPrint jprint = JasperManager.fillReport("C:/jakarta-tomcat-4.1.29/webapps/pmg/contasconsumo_c/relatorios/BibliotecaPessoal.jasper", parameters, jrRS);
    JasperViewer.viewReport(jprint,false);

alguem tem alguma ideia do que seja?

obrigado, desculpem qualquer coisa, não foi por mal… muito agradecido pela paciência…

Criado 28 de fevereiro de 2005
Respostas 0
Participantes 1