Socorro é urgente!

7 respostas
W

Olá galera,

estou precisando da ajuda de vcs para resolver meu problema. Espero que possam ajudar.
estou desenvolvendo uma aplicaçao swing onde é necessário criar relatorio de forma dinamica. Os dados devem se passados por uma jframe q contem alguns campos no caso quero que os dados sejam exibido apartir do campo num_amostra da minha jframe. o problema é que sempre que faço a chamada do relatorio ele diz que não há paginas no documento e mostra um relatorio em branco. ja tentei fazer de tudo mais não consigo corrigir o problema. alguem por favor me ajude!!

esse é o código que estou usando:
//botão que faz a chamada do relatorio


private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

try{
        String strQuery = "select * from bacteriologica where num_amostra =" + num_amostra;
       //busca a conexão com a classe ConexaoMySQL
       Connection con = new ConexaoMySQL().getConnection();
       HashMap parametro = new HashMap();
       parametro.put("num_amostra", strQuery);
       JasperPrint jp = JasperFillManager.fillReport("c:/aplicativo java/Sistema_SAAE/relatorio/Relatorio_Bacteriologica.jasper", parametro,con);
       JasperViewer jrv = new JasperViewer(jp);
       jrv.setVisible(true);

   }catch(JRException e){
        e.printStackTrace();
   }
      // TODO add your handling code here:
}      </blockquote>

//essa é a classe de conexão

no ireport ja defini o parametro chamado num_amostra e a query só ta definica dessa forma $P{num_amostra}
mais o parametro não está sendo passado pela aplicação java para o ireport. como posso fazer isso por favor me ajudem!!!

7 Respostas

M

Mas o que tem que aparecer neste relatório que é tão urgente? Os números da mega sena?

viniciusfaleiro

Já sei o que é… libera a porta 3306 do seu firewall e da permissão de acesso à partir de qualquer máquina pro root…ahuahauhauh… brincadeiras a parte:

1 - Use PreparedStatements
2- Se o seu DataSource é uma Connection, pq vc ta passando uma SQL pra ele??? ta fazendo errado… vc tem que definir a SQL dentro do relatório e passar como parametro somente o num_amostra… Nenhuma consulta precisa ficar no seu código pra esse caso. Dai lá dentro da sua SQL vc vai usar o $P{NOME_DO_PARAMETRO} pra concatenar na SQL…
3 - Com esse JasperViewer seu, quando vc fechar a janela do jasper o seu programa vai fechar junto…
5 - Usando endereço da máquina pra apontar o relatório??? hummmmmmmmm… péssima idéia…
4 - Leia mais antes de começar… Se um dia vc precisar dar manutenção nisso… vai lembrar do que eu estou falando…

ViniGodoy

Se é urgente:

  1. Use um título descritivo para seu tópico, para trazer para cá que saibam resolver o problema;
  2. Use a tag code, ao invés da tag quote, no seu código, para que quem vai te ajudar possa entende-lo mais fácil;
Andre_Fonseca

E caso não tenha lido antes… :smiley:

http://www.guj.com.br/posts/list/50115.java

W

viniciusfaleiro:
Já sei o que é… libera a porta 3306 do seu firewall e da permissão de acesso à partir de qualquer máquina pro root…ahuahauhauh… brincadeiras a parte:

1 - Use PreparedStatements
2- Se o seu DataSource é uma Connection, pq vc ta passando uma SQL pra ele??? ta fazendo errado… vc tem que definir a SQL dentro do relatório e passar como parametro somente o num_amostra… Nenhuma consulta precisa ficar no seu código pra esse caso. Dai lá dentro da sua SQL vc vai usar o $P{NOME_DO_PARAMETRO} pra concatenar na SQL…
3 - Com esse JasperViewer seu, quando vc fechar a janela do jasper o seu programa vai fechar junto…
5 - Usando endereço da máquina pra apontar o relatório??? hummmmmmmmm… péssima idéia…
4 - Leia mais antes de começar… Se um dia vc precisar dar manutenção nisso… vai lembrar do que eu estou falando…

me desculpe a ignorância mais não sei como implementar o PreparedStatements. Será que poderia me mostrar como ficaria o codigo?

agradeço!!

Andre_Fonseca

wanderley patricio:
viniciusfaleiro:
Já sei o que é… libera a porta 3306 do seu firewall e da permissão de acesso à partir de qualquer máquina pro root…ahuahauhauh… brincadeiras a parte:

1 - Use PreparedStatements
2- Se o seu DataSource é uma Connection, pq vc ta passando uma SQL pra ele??? ta fazendo errado… vc tem que definir a SQL dentro do relatório e passar como parametro somente o num_amostra… Nenhuma consulta precisa ficar no seu código pra esse caso. Dai lá dentro da sua SQL vc vai usar o $P{NOME_DO_PARAMETRO} pra concatenar na SQL…
3 - Com esse JasperViewer seu, quando vc fechar a janela do jasper o seu programa vai fechar junto…
5 - Usando endereço da máquina pra apontar o relatório??? hummmmmmmmm… péssima idéia…
4 - Leia mais antes de começar… Se um dia vc precisar dar manutenção nisso… vai lembrar do que eu estou falando…

me desculpe a ignorância mais não sei como implementar o PreparedStatements. Será que poderia me mostrar como ficaria o codigo?

agradeço!!

Oi,

Tem um artigo aqui mesmo no forum

http://www.guj.com.br/article.show.logic?id=115

W

Ok galera agradeço a ajuda de vcs, mais o problema estava apenas no campo em que eu estava usando como parametro, não estava definindo seu tipo de dados depois disso ta fucionando normal exibindo os dados de acordo com a informação selecionada. Vou postar o código aki sei que tem muita gente com esse mesmo problema e espero poder ajudar.

Essa é a classe de Conexão com o banco de dados.

public class ConexaoMySQL {
    public Connection getConnection(){
        try{
	Class.forName("com.mysql.jdbc.Driver");
	String driver = "jdbc:mysql://localhost/bd_saae";
	Connection con = DriverManager.getConnection(driver,"root","m2bm37vvc4");
	return con;
} catch(Exception e){
	e.printStackTrace();
}
return null;
    }
}

Esse código foi inserido em um botão

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        
        try{
            //faz a chamada da classe de conexão ConexaoMySQL
            Connection con = new ConexaoMySQL().getConnection();         
            //Definição do parametro para exibir os dados no relatorio usando um JTextField            
            HashMap parameters = new HashMap();
            parameters.put("num_amostra", num_amostraField.getText());
            //Imprime os dados no relatorio
            JasperPrint jp = JasperFillManager.fillReport("c:/aplicativo java/Sistema_SAAE/relatorio/Relatorio_Bacteriologica.jasper", parameters, con);
            JasperViewer jrv = new JasperViewer(jp,false);
            jrv.setVisible(true);           

       }catch(Exception e){
            e.printStackTrace();
       }
          // TODO add your handling code here:
    }

No Ireport defini um parametro com o nome num_amostra e na consuta sql do ireport inserir uma query assim:
select * from nome_da_tabela where nome_do_campo$P{nome_do_parametro}

então é isso espero poder ajudar a quem estiver passando pelo o mesmo problema!!

Qual quer problema podem me passar um email
[email removido]

Criado 5 de janeiro de 2010
Ultima resposta 6 de jan. de 2010
Respostas 7
Participantes 5