Pesquisa com JTextField vazio
Boa noite pessoal, tenho uma tela em JAVA e o professor me mandou implementar uma tela de pesquisa, onde o usuário pode digitar o código e o sistema tem que trazer todas as informações daquele produtos. Até ai tudo bem, o problema e que o usuário pode não digitar o codigo, ele pode digitar a descrição e deixar o código do produto em branco.
Como devo tratar minha view nessa situação?
Pensei em mandar todos os campos para a persistência, porém não aceita campo em branco. Como posso fazer?
Fiz o código abaixo, porém quando o usuário deixa qualquer campo em branco, da erro na parte do comando que está em branco, como por exemplo p.setAplicacao(txtAplicacao.getText());
DAO
Como devo tratar minha view nessa situação?
Pensei em mandar todos os campos para a persistência, porém não aceita campo em branco. Como posso fazer?
Fiz o código abaixo, porém quando o usuário deixa qualquer campo em branco, da erro na parte do comando que está em branco, como por exemplo p.setAplicacao(txtAplicacao.getText());
p.setIdProdutos(Integer.valueOf(txtCodigoProduto.getText())); p.setCodigoBarras(Long.valueOf(txtCodigoBarras.getText())); p.setAplicacao(txtAplicacao.getText()); p.setDescricao(txtDescricao.getText()); p.setMedida(txtMedida.getText()); p.setValorVenda(Double.valueOf(fmtValorVenda.getText())); p.setValorCusto(Double.valueOf(fmtValorCusto.getText())); p.setQuantidade(Double.valueOf(txtQuantidade.getText())); dao.select(p); txtCodigoProduto.setText(String.valueOf(p.getIdProdutos())); txtCodigoBarras.setText(String.valueOf(p.getCodigoBarras())); txtAplicacao.setText(p.getAplicacao()); txtDescricao.setText(p.getDescricao()); txtMedida.setText(p.getMedida()); fmtValorVenda.setText(String.valueOf(p.getValorVenda())); fmtValorCusto.setText(String.valueOf(p.getValorCusto()));
DAO
try { ResultSet rs; conecta.conexao(); PreparedStatement pst = conecta.conn .prepareStatement("select * from produtos where idProdutos = %?% or codigoBarras = %?% or descricao = %?% or " + "aplicacao = %?% or medida = %?% or valorVenda = %?% or valorCusto = %?% or quantidade = %?%"); rs = pst.executeQuery(); p.setIdProdutos(rs.getInt("idProdutos")); p.setCodigoBarras(rs.getLong("codigoBarras")); p.setDescricao(rs.getString("descricao")); p.setAplicacao(rs.getString("aplicacao")); p.setMedida(rs.getString("medida")); p.setValorVenda(rs.getDouble("valorVenda")); p.setValorCusto(rs.getDouble("valorCusto")); p.setQuantidade(rs.getDouble("quantidade")); // JOptionPane.showMessageDialog(null, "Salvo com sucesso"); } catch (SQLException e1) { JOptionPane.showMessageDialog(null, "Erro na pesquisa \n Erro " + e1.getMessage()); } }
Ricardo Lima
Curtidas 0
Melhor post
Aldair Gomes
08/05/2015
Olá Ricardo,
se eu entendi bem, vc tem que fazer uma pesquisa apenas pelo nome do produto certo?
se for isso Use Like.
é uma pesquisa que vai te trazer uma lista?como é? não ficou bem especificado.
att.
se eu entendi bem, vc tem que fazer uma pesquisa apenas pelo nome do produto certo?
se for isso Use Like.
é uma pesquisa que vai te trazer uma lista?como é? não ficou bem especificado.
att.
GOSTEI 1
Mais Respostas
Ricardo Lima
07/05/2015
Esqueci de mostrar a classe Produtos, na qual faço referencia em ambas as classes citadas a cima
public class Produtos { //declaração de variaves private int idProdutos; private long codigoBarras; private String descricao; private String aplicacao; private String medida; private String lote; private double valorVenda; private double valorCusto; private double quantidade; //método construtor public Produtos(){ } /*//Método construtor aprimorado public Produtos(int idProdutos,int codigoBarras,String descricao,String aplicacao,String medida,Boolean ativo, String dataValidade, String dataFabricacao,String lote) throws ParseException { SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyy"); this.idProdutos = idProdutos; this.codigoBarras = codigoBarras; this.descricao = descricao; this.aplicacao = aplicacao; this.medida =medida; this.ativo = ativo; this.dataValidade = df.parse(dataValidade); this.dataFabricacao = df.parse(dataFabricacao); this.lote = lote; }*/ // inicio dos getters public int getIdProdutos() { return idProdutos; } public long getCodigoBarras() { return codigoBarras; } public String getDescricao() { return descricao; } public String getAplicacao() { return aplicacao; } public String getMedida() { return medida; } public String getLote() { return lote; } public double getValorVenda(){ return valorVenda; } public double getValorCusto(){ return valorCusto; } public double getQuantidade(){ return quantidade; } // inicio dos setters public void setIdProdutos(int idProdutos) { this.idProdutos = idProdutos; } public void setCodigoBarras(long codigoBarras) { this.codigoBarras = codigoBarras; } public void setDescricao(String descricao) { this.descricao = descricao; } public void setAplicacao(String aplicacao) { this.aplicacao = aplicacao; } public void setMedida(String medida) { this.medida = medida; } public void setLote(String lote) { this.lote = lote; } public void setValorVenda(double valorVenda){ this.valorVenda = valorVenda; } public void setValorCusto(double valorCusto){ this.valorCusto = valorCusto; } public void setQuantidade(double quantidade){ this.quantidade = quantidade; } }
GOSTEI 0
Ricardo Lima
07/05/2015
A pesquisa não e apenas pelo nome do produto, os campos utilizados serão informados pelo usuário. Por exemplo, se o usuário quiser pesquisar pelo codigo, o sistema traz todas as informações. Se ele decidir pesquisar pela descrição, da mesma maneira o sistema tem que trazer todas as informações do produto...
A minha dúvida encontra-se no momento que essa pesquisa acontece, quando o usuário coloca o numero do produto (código), o sistema da erro informando que tem campo vazio e não pode prosseguir. Clicando no erro, ele direciona para o próximo campo que não estava preenchido. Se escolher pesquisar pela descrição, o erro acontece no código do produto (1º campo da pesquisa)
Poderia me dar um exemplo de pesquisa usando o LIKE???
Obrigado
A minha dúvida encontra-se no momento que essa pesquisa acontece, quando o usuário coloca o numero do produto (código), o sistema da erro informando que tem campo vazio e não pode prosseguir. Clicando no erro, ele direciona para o próximo campo que não estava preenchido. Se escolher pesquisar pela descrição, o erro acontece no código do produto (1º campo da pesquisa)
Poderia me dar um exemplo de pesquisa usando o LIKE???
Obrigado
GOSTEI 0
Aldair Gomes
07/05/2015
Certo,
1º Atributos de tipos numéricos não aceitam valores NULL, mas aceitam 0 (zero), pode ser este o motivo.
2º seu select está estranho, como vc substitui estas interrogações?
use o pst.setString(1,valor);
sendo "setString" o tipo do valor no banco, o parametro 1 é a posição da interrogação em sequencia, e o segundo é o valor pelo qual vai substituir.
1º Atributos de tipos numéricos não aceitam valores NULL, mas aceitam 0 (zero), pode ser este o motivo.
2º seu select está estranho, como vc substitui estas interrogações?
use o pst.setString(1,valor);
sendo "setString" o tipo do valor no banco, o parametro 1 é a posição da interrogação em sequencia, e o segundo é o valor pelo qual vai substituir.
try { ResultSet rs; conecta.conexao(); PreparedStatement pst = conecta.conn .prepareStatement("select * from produtos where idProdutos = %?% or codigoBarras = %?% or descricao = %?% or " + "aplicacao = %?% or medida = %?% or valorVenda = %?% or valorCusto = %?% or quantidade = %?%"); rs = pst.executeQuery(); p.setIdProdutos(rs.getInt("idProdutos")); p.setCodigoBarras(rs.getLong("codigoBarras")); p.setDescricao(rs.getString("descricao")); p.setAplicacao(rs.getString("aplicacao")); p.setMedida(rs.getString("medida")); p.setValorVenda(rs.getDouble("valorVenda")); p.setValorCusto(rs.getDouble("valorCusto")); p.setQuantidade(rs.getDouble("quantidade")); // JOptionPane.showMessageDialog(null, "Salvo com sucesso"); } catch (SQLException e1) { JOptionPane.showMessageDialog(null, "Erro na pesquisa \n Erro " + e1.getMessage()); }
GOSTEI 1
Ricardo Lima
07/05/2015
Eu entendi o que você disse. Vou testar e já falo aqui.
Obrigado
Obrigado
GOSTEI 0
Ricardo Lima
07/05/2015
Eu entendi o que você disse. Vou testar e já falo aqui.
Obrigado
Obrigado
GOSTEI 0
Aldair Gomes
07/05/2015
Ok, Fico no aguardo meu amigo.
GOSTEI 0
Ricardo Lima
07/05/2015
Eu tentei aqui, más apareceu a seguinte mensagem
before start of result set
O que devo estar fazendo de errado?
before start of result set
O que devo estar fazendo de errado?
GOSTEI 0
Aldair Gomes
07/05/2015
Manda o código...
mas provavelmente, deve ser a Instancia do ResultSet,
Faça a isntancia od Result set depois de substituir os valores das interrogações.
mas provavelmente, deve ser a Instancia do ResultSet,
Faça a isntancia od Result set depois de substituir os valores das interrogações.
GOSTEI 0
Ricardo Lima
07/05/2015
Era isso mesmo. Deu certinho. Obrigado
GOSTEI 0
Aldair Gomes
07/05/2015
Opa, que bom que pude ajudar... :D
abraço.
abraço.
GOSTEI 0