Problema com retorno de resultado no banco

9 respostas
T
O meu problema é o seguinte: eu tenho um programa em que você insere a data inicial e a data final e o programa faz uma consulta sql e retorna num jTextArea um relatório. No entanto, acontece o seguinte problema: as minhas sqls retornam null quando eu digito qualquer coisa nos meus jTextFields. Mas se eu uso um campo jTextField, já com a data inicial e final o programa faz a consulta corretamente, o que me faz pensar que eu não estou enviando a data corretamente. Será este o problema? Eis meu código: Form RELATORIO
RelatoriosAction relact;
 // BOTAO PESQUISAR
    private void pesquisar(java.awt.event.ActionEvent evt) {                           
          try {
          
               // Seta no meu jTextArea o resultado da consulta e envia também a data inicial e a data final da consulta
             jTAvisor.setText(relact.capturaDatas(jTF_dataInicial2.getText(), jTF_dataFinal2.getText()));

        } catch (SQLException ex) {
            Logger.getLogger(jT_Relatorios.class.getName()).log(Level.SEVERE, null, ex);
        }
Classe REALATORIOACTION
// Este daqui é um método que passa a data
    //para o formato do banco de dados ano-mes-dia
    FormataCampos camp;


     // Esta classe recebe a data inicial e final dos jTextFields e faz as consultas nos métodos
public String capturaDatas(String jTF_dataInicial, String jTF_dataFinal) throws SQLException {

         visor.setText("");

          RelatoriosBean add = new RelatoriosBean();
          add.setData_inicial(camp.formatDate(jTF_dataInicial));
          add.setData_final(camp.formatDate(jTF_dataFinal));

          // Referência à classe que contém os métodos SQL
          RelatoriosDao dao = new RelatoriosDao();
    String retorna =
            "Período: de " + jTF_dataInicial+" até "+jTF_dataFinal
            +"\n"
            +"\nTotal arrecadado: R$ " + dao.valorVendidos(jTF_dataInicial, jTF_dataFinal)
            +"\n Quantidade vendida: " + dao.quantidadeVendidos(jTF_dataInicial, jTF_dataFinal)
            +"\n"
            +"\n Total gasto: R$ " + dao.valorComprados(jTF_dataInicial, jTF_dataFinal)
            +"\n Quantidade comprada: " + dao.quantidadeComprados(jTF_dataInicial, jTF_dataFinal);
             
       return retorna;
}
Classe REALTORIOSDAO
// TODOS os meus métodos estão estruturados dessa maneira, por isso só achei necessário colocar este. 
//A única coisa que muda nos outros é a SQL

// Retorna quanto foi gasto comprando livros
    public String valorVendidos(String dataInicial, String dataFinal) throws SQLException {
        String volta = "";
        // String sql
        String sql="SELECT SUM(preco_venda) as soma FROM livros where data_venda>= ? and data_venda<= ? ";
        // Prepara a conexão
        PreparedStatement stmt = (PreparedStatement) this.conexao.prepareStatement(sql);
        stmt.setString(1, dataInicial);
        stmt.setString(2, dataFinal);
        ResultSet rs = stmt.executeQuery();

          while (rs.next()){
              // Gera a String que será impressa no JTextArea
              volta = rs.getString("soma");

             // Imprime na tela também e aqui
         System.out.println(volta);
        }
        //Fechando o resultset
        rs.close();
        //Fecha a conexão
        stmt.close();
        //Retorna a String para ser impressa
        return volta;  

    }

O que o programa me retorna é:

Período: de 01/01/2011 até 03/12/2011

Total arrecadado: R$ null
Quantidade vendida: 0

Total gasto: R$ null
Quantidade comprada: 0

9 Respostas

nel

O mais fácil é tu debugar o seu código, adicionar log e acompanhar as informações que são enviadas ao seu DAO.
Feito isso, saberá se o problema é tratamento de eventos ou qualquer outro. No mínimo, vai saber em qual ponto o seu algoritmo se perde.

Abraços.

R

mas cade a parte do insert, no caso do mysql. se há um problema deve ser lá não ?

T

raghy o meu código não tem insert, apenas select, pois nesta parte eu não insiro nada no BD, apenas faço uma consulta com a data que eu quero e retorno esse resultado numa jTextArea

T

Mas de maneira geral eu queria era saber a opinião de vocês: eu cometi algum erro no meu código ou ele está aparentemente certo?

R

OLHA SE VC

R

OPS MANDEI ANTES, SE vc quiser me mandar o projeto todo eu dou uma olhada, com o compile fica mais fácil ver os erros.

[email removido]

por outro lado, como vc pode ter dados no banco, se não usar o insert?

mas enfim, se vc digitar algo que é diferente de data, certamente ele não achará nada. é só este o problema?

ele só vai enxergar um dado parecido com o que tenha?

nao entendo o que quer dizer, se não for só isso…

T

E aí raghy, tudo bem? Mandei pro teu email do ig o meu projeto, dá uma olhada em forms e em jT_Relatorios. O meu programa já tem dados inseridos no meu banco de dados. Esta parte de cadastro de dados eu já fiz. O que não consigo é fazer um relatório destes dados.
Como é um sistema para livraria eu queria pesquisar em um certo período de tempo quantos livros foram comprados/vendidos e quanto foi arrecadado e gasto neste período de tempo que o próprio usuário coloca.
Se puderes me retornar rápido eu agradeceria, afinal tenho até esta quarta para entregar este trabalho :frowning:

R

ok recebi e te pedi o banco em forma de create table, pois não consigo importar este arquivo sql.
será possível.?
aguardo. por email de preferencia.

R

bem abri o sql com bloco de notas, e to conseguindo visualizar alguma coisa. os funcionarios não foram possiveis inserir. por enquanto.

Criado 5 de dezembro de 2011
Ultima resposta 5 de dez. de 2011
Respostas 9
Participantes 3