Ou navega ou localiza

Olá, pessoal

Eu estou usando um banco de dados Access, a tabela chama-se Produtos, e só tem 4 campos (codigo, nome, quantidade, custo). Então eu coloquei no aplicativo 4 JTextFields (T1, T2, T3, T4) para mostrar valores desses 4 campos. Está funcionando certo, ou seja, abre o primeiro registro perfeito e vai para qualquer registro do banco.

Coloquei 4 JButtons pra NAVEGAR nos registros, assim:

b1 - Primeiro
b2 - Anterior
b3 - Próximo
b4 - Último

Está fazendo beleza, em qualquer botão que eu clico ele vai para o lugar certo. Está funcionando também.

Coloquei um outro JButton (b5) para LOCALIZAR um registro qualquer pelo nome do produto (campo nome). Ou seja, eu escrevo o nome de um produto na caixa T2 e clico no botão LOCALIZAR, ele faz perfeitamente, localiza qualquer produto, basta que eu escreva o nome certo na T2. Está funcionando também.

O que está errado então? É que ele só faz uma coisa ou outra, se eu rodo o aplicativo e fico usando os botões de navegação funciona, mas seu eu tento LOCALIZAR não localiza, não vai pra lugar nenhum.

Mas se eu rodo e fico LOCALIZANDO produtos digitando o nome, ele faz perfeitamente, mas se eu passo a clicar nos botões de navegação, não vai pra lugar nenhum.

Em resumo: ou ele NAVEGA nos 4 botões, ou LOCALIZA, mas não faz as duas coisas.

Vou colocar abaixo as partes do meu código que fazem essas coisas, claro, só as partes que devem conter o erro:


// VEJA A CONEXÃO COM O BANCO DE DADOS ----

String url = "jdbc:odbc:Loja";  
  try 
   {
     Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" );
     Connection Con = DriverManager.getConnection(url); 
     MeuState = Con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
     ResultSet.CONCUR_READ_ONLY);
     rs = MeuState.executeQuery("SELECT * FROM Produtos"); 
     rs.first();
     atualizaCampos();
   }

 // VEJA O MÉTODO atualizaCampos() -------------

      public void atualizaCampos()
           {
              try
                 {
                    T1.setText(rs.getString("codigo"));
                    T2.setText(rs.getString("nome"));
                    T3.setText(rs.getString("quantidade"));
                    T4.setText(rs.getString("custo"));
                 }

             catch(SQLException ex)  {  }
          }      	


// VEJA AS AÇÕES DOS 4 BOTÕES DE NAVEGAÇÃO ------------

public void actionPerformed(ActionEvent e)
   {  
         try
           {
              if (e.getSource()==b1)
                  rs.first();
      
              if (e.getSource()==b2)
                  rs.previous();

              if (e.getSource()==b3)
                  rs.next();

              if (e.getSource()==b4)
                  rs.last();

              atualizaCampos();
           }

 
    // VEJA A AÇÃO DO BOTÃO  LOCALIZAR ---------------

            if (e.getSource()==b5)
   	{
                try
   	    {
   	      String SQL = "SELECT * FROM Produtos WHERE nome = '"+T2.getText()+"'";
   	      rs = MeuState.executeQuery(SQL); 
                   rs.next();
                   T1.setText(rs.getString("codigo"));
   	      T2.setText(rs.getString("nome"));
   	      T3.setText(rs.getString("quantidade"));
   	      T4.setText(rs.getString("custo"));
           	     }              
                       
   	    catch(SQLException ex)
   	     {
                    JOptionPane.showMessageDialog(null,"Produto não encontrado!");
                    return;
                   }
               }              

É certo que eu coloquei alguma coisa de mais ou de menos nesse código, eu não consigo ver, mas se alguém consegue, dá uma ajuda aí.

Abraço a todos.
Marco

usa outro resultset para a pesquisa por nome,
oque está acontecendo é que quando vc faz a pesquisa por nome vc carrega o resultset so com um produto, por isso não funciona mais o seu navegador…

Ao pregospan,

Muito obrigado por me ajudar. Eu criei um segundo resultset (rs2) e usei na pesquisa LOCALIZAR por nome, mas não resolveu, continua dando erros na localização e na navegação. Eu entendi que era pra fazer assim:


ResultSet rs, rs2;
 
// NO BOTÃO LOCALIZAR

            if (e.getSource()==b5) 
      { 
                try 
          { 
            String SQL = "SELECT * FROM Produtos WHERE nome = '"+T2.getText()+"'"; 
            rs2 = MeuState.executeQuery(SQL); 
                   rs2.next(); 
                   T1.setText(rs2.getString("codigo")); 
            T2.setText(rs2.getString("nome")); 
            T3.setText(rs2.getString("quantidade")); 
            T4.setText(rs2.getString("custo")); 
                   }              
                        
          catch(SQLException ex) 
           { 
                    JOptionPane.showMessageDialog(null,"Produto não encontrado!"); 
                    return; 
                   } 
               }              

Não sei se era bem isso, mas não está funcionando. Se souberem o que é, aguardo uma ajuda.

Abraço,
Marco