Select SUM + Access + Netbeans

4 respostas
S

Olá pessoal!

Estou com uma dúvida … acho que nem chega a ser uma dúvida porque eu nem sei como que faz rsrs…
Ja dei uma pesquisada nos posts… mas mesmo assim não consegui resolver…

É o seguinte, eu estou com uma telinha de vendas…
Preciso somar os itens da venda, para poder gerar o total da venda…
a cada item adcionado atualiza um JTextField(“tf_total_venda”).

Ai é que está, estou tentando usar o select SUM…
estou usando tambem Netbeans e Access.
No Banco de Dados tenho uma tabela “vendas” e outra “itens_venda”…

eu na minha leiguisse … tentei assim:

public void totalVenda()
    {
       try
        {
           String sql = "SELECT SUM (valor_total_item) As Total From itens_venda Where codigo_vend = " +    tf_cod_venda.getText();
            System.out.println(sql);
           CON_ITENS_VENDA.executeSQL(sql);
           tf_total_venda.setText(CON_ITENS_VENDA.resultset.getString("Total"));
           System.out.println(sql);
        }
        catch (SQLException erro)
        {
            JOptionPane.showMessageDialog(null,"Nao foi possivel Efetuar a SOMA da venda " + erro);
      
        }

Eu achei um post que acho que resolveria mas não consegui implementar para mim…
o código do post é esse:

public Double somar(Double valor) throws SQLException{
double somatotal;
try {
Connection con = Conexao.getConexao();
try {
Statement stmt = con.createStatement();
String sqlSelect = "select sum(valor) total from caixa group by id";
ResultSet rs = stmt.executeQuery(sqlSelect);
somatotal = rs.getDouble("total");
rs.close();
stmt.close();
}finally {
con.close();
}
} catch (SQLException e) {
}
return somatotal;
}

tentei adaptar mas não consegui compreender, alguem poderia me explicar o que extamente o resultset e statement fazem…
eu ja tenho uma classe de conexão…
se quiserem dar uma olhada:

public class Conectar{

    public static void close() {
        throw new UnsupportedOperationException("Not yet implemented");
    }
    
        final private String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
        final private String url = "jdbc:odbc:SIC";
        final private String usuario = "";
        final private String senha ="";
        private Connection conect;
        public Statement statement;
        public ResultSet resultset;
                
        public boolean conecta (){
            boolean result = true;
                try {
                        Class.forName(driver);
                        conect = DriverManager.getConnection(url, usuario, senha);
                      }
                
                catch(ClassNotFoundException Driver)
                    {
                JOptionPane.showMessageDialog(null,"Driver não localizado" + Driver);
                result = false;
                     }
            
               catch(SQLException Fonte)
                    {
                JOptionPane.showMessageDialog(null, "Deu erro na conexão, " +
                        "com a Fonte de Dados, erro: " + Fonte);
                result = false;
                     }
                     return result;
                }

                public void desconeta()
             {
                boolean result = true;
                try
                {
                    conect.close();
                    JOptionPane.showMessageDialog(null,"Banco de Dados Fechado");
                 }
            
                  catch(SQLException fecha)
                   {
                  JOptionPane.showMessageDialog(null,"Não foi possivel, "+
                        " fechar o Banco de Dados, erro: " + fecha);
                    }
               }
        
        public void executeSQL(String sql)
        {
            try
            {
               statement = conect.createStatement  (ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
                resultset = statement.executeQuery(sql);
            }
            catch(SQLException sqlex)
            {
                JOptionPane.showMessageDialog(null,"Não foi possivel execultar o comando sql - Class Conectar: "+
                        ", "+sqlex+" O sql passado foi: "+sql);
            
            }
         }

}

Já não tenho idéia mais do que fazer…
Se puderem me ajudar fico muito grata.

4 Respostas

gilmaslima

Vê se isso lhe ajuda:

import java.sql.*;
import javax.swing.JOptionPane;

public class Teste {

    public static void main(String[] args) {
        final String DRIVER = "sun.jdbc.odbc.JdbcOdbcDriver";
        final String URL = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=C:/bancoAccess/meuBanco.mdb"; // caminho onde está o banco
        Connection conn = null;
        String sql = "SELECT SUM (valor_total_item) As Total From itens_venda Where codigo_vend = " + tf_cod_venda.getText();   
        int total = 0;
        try {
            Class.forName(DRIVER);
            conn = DriverManager.getConnection(URL);
            JOptionPane.showMessageDialog(null, "Conexao realizada com sucesso");
            Statement st = conn.createStatement();
            ResultSet rs = st.executeQuery(sql);
            while(rs.next()){ // o resultset é como um cursor que retorna o resultado da sua query e pode retornar de 0 a n linhas 
                total = rs.getInt("Total"); // guarda na variavel o retorno do select
            }
            
            
            
        } catch (ClassNotFoundException erro) {
            JOptionPane.showMessageDialog(null, "Driver JDBC-ODBC não encontrado!");
        } catch (SQLException e) {
            JOptionPane.showMessageDialog(null, "Problemas na conexao");
            e.printStackTrace();
        } finally {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

    }
}

A única coisa que mudei é que estou conectando usando o caminho onde o arquivo do access se encontra.

Está funcionando!
Espero ter ajudado.
flw!

S

Olá Gilmar Lima!

Obrigada, pela ajuda!!!
implementei no meu código… ainda não consegui visualizar o valor total da venda…
ainda não descobri o porque… mas vou dar uma analisada em todo o código.

Mas boa parte dos erros deixam de aparecer… :smiley:
qualquer resultado eu iformo blz!!!
obrigadão!!!

gilmaslima

Veja se tf_cod_venda.getText(); está retornando algum valor.

Tente fazer o select direto no banco pra ver se está trazendo alguma coisa.

S

Olá
Deus certo agora esta funcionando

Muito Obriga!!!

Criado 21 de outubro de 2008
Ultima resposta 13 de nov. de 2008
Respostas 4
Participantes 2