Ajuda com Parametro na Consulta SQL

6 respostas
AlencarCanton

E ae galera,beleza?

To usando o iReport e quero fazer um relatorio que utilize uma consulta desse tipo:

SELECT * FROM pedido WHERE IdPedido = ?

Utilizando o auxiliar para criação de relatórios ele pede a consulta,eu devo usar "?" mesmo ?
O que muda no metodo de gerar o relatório?
Eu consegui gerar um relatorio utilizando esse código:

private PreparedStatement pstm;
    private ResultSet rs;

    public iReportExample() {
    }

    public void gerar(String jasperFile, String IdPedido) throws JRException, SQLException, ClassNotFoundException {


        Class.forName(driver);

        dbAcess sql = new dbAcess();
        pstm = (PreparedStatement) sql.conectar().prepareStatement(consultaTeste);
        rs = pstm.executeQuery();

        Connection con = (Connection) DriverManager.getConnection(url, login, pwd);
        Statement stm = con.createStatement();
        String query = "SELECT * FROM classificacaoproduto";
        ResultSet rs = stm.executeQuery(query);


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

        //executa o relatório
        Map parametros = new HashMap();
        parametros.put("classificacao", new String());
        /*
        JasperCompileManager.compileReportToFile("relatorioModel2.jrxml");
         *
         */

        /* Preenche o relatório com os dados. Gera o arquivo BibliotecaPessoal.jrprint    */
        JasperFillManager.fillReportToFile(jasperFile, parametros, jrRS);

        /* Exporta para o formato PDF */
        JasperExportManager.exportReportToPdfFile("report2.jrprint");
    }
}

6 Respostas

R_chieck

Ola, voce quee que sua aplicação gere o relatório, ou quer gerar diretamente pelo IReport?

pedruhenrik

vc deve utilizar parametros.

no código java vc pode passar o parametro dentro do Map.

att,

luizfelipetx

Você poderia usar algo com um tratamento melhor do que o map não?

ja que soh está usando um valor…

acho que ficaria mais simples…

abraços.

R_chieck

Ola, ainda não entendi mto bm seu problema, mas tentei extrair uma parte do meu código que acho que pode estar lhe fazendo falta:

//criando data source
		JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(list);//list = lista de objetos(ArrayList)

		//mostrando o relatorio
		JasperPrint jprint = JasperFillManager.fillReport(masterReport, map, ds);
		JasperViewer viewer = new JasperViewer(jprint, false);
		viewer.setTitle(title);
		viewer.setExtendedState(JFrame.MAXIMIZED_BOTH);
		viewer.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		viewer.setVisible(true);

Porem neste caso não poderias usar direto o resultado da query, deverias tranformar aqules dados em objetos

drsmachado

A resposta é, depende.
Se você irá enviar o parâmetro ao jasper, precisa determinar uma variável que receba o mesmo, que provavelmente será enviado dentro de um map.
Então, após criar a consulta, é possível editar a query e colocar $P{param} e, no mapa, map.put(“param”, Object_param);

Caso a consulta seja feita no java, aí não tem problema…

AlencarCanton

Vlw aí galera,
descobri oq eu queria fazer,

coloquei o ID como parâmetro no iReport e a consulta fica assim:

SELECT * FROM PEDIDO WHERE IdPedido = $P{ID}

aí passo o ID nessa linha:

=)

RESOLVIDO

Criado 7 de junho de 2011
Ultima resposta 8 de jun. de 2011
Respostas 6
Participantes 5