Erro ao tentar da baixa no estoque ( Trabalho Faculdade )

6 respostas
cyberlacs

Amigos estou desenvolvendo um trabalho de faculdade, e de tanto tentar e não consegui resolver, venho aqui no forum para pedir ajuda.

//diminuir o estoque  
        for(int i=0; i<modelo.getRowCount();i++)
        {

                String cod=modelo.getValueAt(i,0).toString();
                String quant=modelo.getValueAt(i,2).toString();

                sql = "SELECT pro_estoque FROM produto WHERE pro_cod="+cod;            
                ResultSet rs = Banco.con.consultar(sql);

                int subtraiEstoque = 0;

            try 
            {
                subtraiEstoque = rs.getInt("pro_estoque") - Integer.parseInt(quant); // ACHO QUE O ERRO ESTA EM ACESSAR O BANCO DE DADOS PARA PEGAR O VALOR ATUAL NO ESTOQUE E SUBTRAIR PELA QUANTIDADE QUE O CLIENTES ESTA COMPRANDO
            
              } catch (SQLException ex) {
                Logger.getLogger(TelaTrocaOleo.class.getName()).log(Level.SEVERE, null, ex);
            } 
                
                sql="UPDATE produto SET pro_estoque='#1' WHERE pro_cod="+cod;

                sql = sql.replace("#1", String.valueOf(subtraiEstoque));

                if(Banco.con.manipular(sql))
                    JOptionPane.showMessageDialog(this, "Cadastrado ------- 3 !");
                else
                    JOptionPane.showMessageDialog(this, "Erro ---------- 3 "+Banco.con.getMensagemErro());



        }

[size=24][color=red]Olha o erro que esta dando[/color][/size]

21/11/2011 10:30:46 controloil.TelaTrocaOleo bConfirmarActionPerformed
GRAVE: null
org.postgresql.util.PSQLException: ResultSet não está posicionado corretamente, talvez você precise chamar next.
	at org.postgresql.jdbc2.AbstractJdbc2ResultSet.checkResultSet(AbstractJdbc2ResultSet.java:2695)
	at org.postgresql.jdbc2.AbstractJdbc2ResultSet.getInt(AbstractJdbc2ResultSet.java:1992)
	at org.postgresql.jdbc2.AbstractJdbc2ResultSet.getInt(AbstractJdbc2ResultSet.java:2426)
	at controloil.TelaTrocaOleo.bConfirmarActionPerformed(TelaTrocaOleo.java:398)
	at controloil.TelaTrocaOleo.access$000(TelaTrocaOleo.java:24)
	at controloil.TelaTrocaOleo$1.actionPerformed(TelaTrocaOleo.java:123)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
	at java.awt.Component.processMouseEvent(Component.java:6267)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
	at java.awt.Component.processEvent(Component.java:6032)
	at java.awt.Container.processEvent(Container.java:2041)
	at java.awt.Component.dispatchEventImpl(Component.java:4630)
	at java.awt.Container.dispatchEventImpl(Container.java:2099)
	at java.awt.Component.dispatchEvent(Component.java:4460)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
	at java.awt.Container.dispatchEventImpl(Container.java:2085)
	at java.awt.Window.dispatchEventImpl(Window.java:2478)
	at java.awt.Component.dispatchEvent(Component.java:4460)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:178)
	at java.awt.Dialog$1.run(Dialog.java:1046)
	at java.awt.Dialog$3.run(Dialog.java:1098)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.awt.Dialog.show(Dialog.java:1096)
	at java.awt.Component.show(Component.java:1563)
	at java.awt.Component.setVisible(Component.java:1515)
	at java.awt.Window.setVisible(Window.java:842)
	at java.awt.Dialog.setVisible(Dialog.java:986)
	at controloil.TelaPrincipal.jMenuItem5ActionPerformed(TelaPrincipal.java:212)
	at controloil.TelaPrincipal.access$400(TelaPrincipal.java:26)
	at controloil.TelaPrincipal$5.actionPerformed(TelaPrincipal.java:142)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
	at javax.swing.AbstractButton.doClick(AbstractButton.java:357)
	at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:809)
	at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:850)
	at java.awt.Component.processMouseEvent(Component.java:6267)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
	at java.awt.Component.processEvent(Component.java:6032)
	at java.awt.Container.processEvent(Container.java:2041)
	at java.awt.Component.dispatchEventImpl(Component.java:4630)
	at java.awt.Container.dispatchEventImpl(Container.java:2099)
	at java.awt.Component.dispatchEvent(Component.java:4460)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
	at java.awt.Container.dispatchEventImpl(Container.java:2085)
	at java.awt.Window.dispatchEventImpl(Window.java:2478)
	at java.awt.Component.dispatchEvent(Component.java:4460)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

Obrigado fico no aguardo

6 Respostas

diego.sas

Você precisa certificar-se que o resultado retornou algum valor antes de usa-lo.

try   
    {   
        if(rs.next()){
        subtraiEstoque = rs.getInt("pro_estoque") - Integer.parseInt(quant);   
       }
       
      } catch (SQLException ex) {   
        Logger.getLogger(TelaTrocaOleo.class.getName()).log(Level.SEVERE, null, ex);   
    }
Lucas_Abbatepaolo

http://download.oracle.com/javase/1.4.2/docs/api/java/sql/ResultSet.html

Está no Javadoc…

O cursor do resultset vem posicionado ANTES do primeiro registro sendo assim se vc não utilizar o metodo next() será lancada uma exception

cyberlacs
diego.sas:
Você precisa certificar-se que o resultado retornou algum valor antes de usa-lo.

Muito obrigado, vou testar , mas gostaria de ter mais uma informação ...
Como faço para saber se estou recebendo o valor???
Uso um joptionpane.showmessagedialog(this,diminuiEstoque);

obrigado

try   
    
{   
        if(rs.next()){
        subtraiEstoque = rs.getInt("pro_estoque") - Integer.parseInt(quant);   
       }
       
      } catch (SQLException ex) {   
        Logger.getLogger(TelaTrocaOleo.class.getName()).log(Level.SEVERE, null, ex);   
    }
diego.sas
cyberlacs:
diego.sas:
Você precisa certificar-se que o resultado retornou algum valor antes de usa-lo.

Muito obrigado, vou testar , mas gostaria de ter mais uma informação ...
Como faço para saber se estou recebendo o valor???
Uso um joptionpane.showmessagedialog(this,diminuiEstoque);

obrigado

try   
    
{   
        if(rs.next()){
        subtraiEstoque = rs.getInt("pro_estoque") - Integer.parseInt(quant);   
       }
       
      } catch (SQLException ex) {   
        Logger.getLogger(TelaTrocaOleo.class.getName()).log(Level.SEVERE, null, ex);   
    }

Bom se entrar dentro do if... É porque o resultado foi bem sucedido...
Para nivel de teste pode exibir uma msg caso encontre... E ate mesmo incluir um else e informar que não foi encontrado.

cyberlacs

Diego, Funcionou perfeitamente valew

Obrigado Diego Sas e Lucas Abbatepaolo, pelas dica.

:smiley: :smiley: :smiley:

diego.sas

Edita seu 1º post para Resolvido…
flw

Criado 21 de novembro de 2011
Ultima resposta 21 de nov. de 2011
Respostas 6
Participantes 3