Jump to content

Problemas com campo tipo Data


jcvilanova

Postagens Recomendadas

Pessoal, criei um formulario qus busca vendas pelo codigo ou pelo id do cliente. Alem disso, coloquei ainda a opção de pesquisar por periodo. Funcionou legal, porem, percebi que o sistema estava aceitando qualquer data como válida, dái comecei a pesquisar como validar os campos data. Encontrei uma dica que orientava a usar  .withResolverStyle(ResolverStyle.STRICT);

Fiz e o que ocorreu? Agora toda e qualquer data que coloco, mesmo sendo uma data válida, o sistema diz que é invalida. Estou recebendo uma mensagem dizendo que a data infromada não pode ser convertida. 

Aqui está o método que fiz: 

 

// Metodo Buscar vendas por período
        // É necessário fazer a conversão de datas
        // Primeiro passo: Receber a data
        
           if(TxtCodCliente.getText().equals("") && TxtNome.getText().equals("")){
             JOptionPane.showMessageDialog(null, "Você deve informar o código ou o nome do Cliente que deseja pesquisar !", "Aviso!!!", JOptionPane.WARNING_MESSAGE);
               return;
           }
           
            if(TxtDataInicial.getText().equals("  /  /    ") || TxtDataFinal.getText().equals("  /  /    ")){
             JOptionPane.showMessageDialog(null, "Você deve informar o período em que deseja pesquisar !", "Aviso!!!", JOptionPane.WARNING_MESSAGE);
               return;
           }
            
            
        try {

        
            DateTimeFormatter formato = DateTimeFormatter.ofPattern("dd/MM/yyyy")
            .withResolverStyle(ResolverStyle.STRICT);
            String frmPgto ="";
            String nome = "%"+TxtNome.getText()+"%";
            VendasDAO dao = new VendasDAO();
            
                LocalDate DataInicio = LocalDate.parse(TxtDataInicial.getText(), formato);
		LocalDate DataFim = LocalDate.parse(TxtDataFinal.getText(), formato);
                
                if (radioBtnDin.isSelected()){
                // pegar a string e jogar no banco de dados
                     frmPgto = "Dinheiro";
                }
                if (radioBtnCartao.isSelected()){
                // pegar a string e jogar no banco de dados
                     frmPgto = "Cartão";
                }
                   
                if (radioBtnCheque.isSelected()){
                // pegar a string e jogar no banco de dados
                     frmPgto = "Cheque";
               }
                       
                if (radioBtnNota.isSelected()){
                // pegar a string e jogar no banco de dados
                     frmPgto = "Outros";
                }       
                       
            String codigo = TxtCodCliente.getText();
            if (!"".equals(codigo) ) {

		int CodCliente  = Integer.parseInt(codigo);
                List<Vendas>lista = dao.listarVendasPorClintenoPeriodo(CodCliente, frmPgto, DataInicio, DataFim);
		DefaultTableModel dados = (DefaultTableModel)TabelaHistorico.getModel();
		dados.setNumRows(0);

		for (Vendas v : lista) {
			dados.addRow(new Object[]{
				v.getId(),
				v.getData_venda(),
				v.getCliente().getNome(),
				v.getTotal_venda(),
				v.getObservacao()
			});
		}
	} else{
                
                        List<Vendas>lista = dao.listarVendasPorClintePorNome(nome, frmPgto, DataInicio, DataFim);
                        DefaultTableModel dados = (DefaultTableModel)TabelaHistorico.getModel();
                        dados.setNumRows(0);

                        for (Vendas v:lista){
                            dados.addRow(new Object[]{

                                v.getId(),
                                v.getData_venda(),
                                v.getCliente().getNome(),
                                v.getTotal_venda(),
                                v.getObservacao()
                            });

                        }
                
                
            }
             } catch (DateTimeParseException e) {
    //data inválida
                JOptionPane.showMessageDialog(null, e.getMessage());
                }  

Antes de usar o  .withResolverStyle(ResolverStyle.STRICT); logo depois do DateTimeFormater, a busca era realizada normalmente. Agora nenhuma data passa. 

Alguem sabe como resolver ?????

  • Curtir 1
Link to comment
Compartilhe em outros sites

22 horas atrás, jcvilanova disse:

Pessoal, criei um formulario qus busca vendas pelo codigo ou pelo id do cliente. Alem disso, coloquei ainda a opção de pesquisar por periodo. Funcionou legal, porem, percebi que o sistema estava aceitando qualquer data como válida, dái comecei a pesquisar como validar os campos data. Encontrei uma dica que orientava a usar  .withResolverStyle(ResolverStyle.STRICT);

Fiz e o que ocorreu? Agora toda e qualquer data que coloco, mesmo sendo uma data válida, o sistema diz que é invalida. Estou recebendo uma mensagem dizendo que a data infromada não pode ser convertida. 

Aqui está o método que fiz: 

 

// Metodo Buscar vendas por período
        // É necessário fazer a conversão de datas
        // Primeiro passo: Receber a data
        
           if(TxtCodCliente.getText().equals("") && TxtNome.getText().equals("")){
             JOptionPane.showMessageDialog(null, "Você deve informar o código ou o nome do Cliente que deseja pesquisar !", "Aviso!!!", JOptionPane.WARNING_MESSAGE);
               return;
           }
           
            if(TxtDataInicial.getText().equals("  /  /    ") || TxtDataFinal.getText().equals("  /  /    ")){
             JOptionPane.showMessageDialog(null, "Você deve informar o período em que deseja pesquisar !", "Aviso!!!", JOptionPane.WARNING_MESSAGE);
               return;
           }
            
            
        try {

        
            DateTimeFormatter formato = DateTimeFormatter.ofPattern("dd/MM/yyyy")
            .withResolverStyle(ResolverStyle.STRICT);
            String frmPgto ="";
            String nome = "%"+TxtNome.getText()+"%";
            VendasDAO dao = new VendasDAO();
            
                LocalDate DataInicio = LocalDate.parse(TxtDataInicial.getText(), formato);
		LocalDate DataFim = LocalDate.parse(TxtDataFinal.getText(), formato);
                
                if (radioBtnDin.isSelected()){
                // pegar a string e jogar no banco de dados
                     frmPgto = "Dinheiro";
                }
                if (radioBtnCartao.isSelected()){
                // pegar a string e jogar no banco de dados
                     frmPgto = "Cartão";
                }
                   
                if (radioBtnCheque.isSelected()){
                // pegar a string e jogar no banco de dados
                     frmPgto = "Cheque";
               }
                       
                if (radioBtnNota.isSelected()){
                // pegar a string e jogar no banco de dados
                     frmPgto = "Outros";
                }       
                       
            String codigo = TxtCodCliente.getText();
            if (!"".equals(codigo) ) {

		int CodCliente  = Integer.parseInt(codigo);
                List<Vendas>lista = dao.listarVendasPorClintenoPeriodo(CodCliente, frmPgto, DataInicio, DataFim);
		DefaultTableModel dados = (DefaultTableModel)TabelaHistorico.getModel();
		dados.setNumRows(0);

		for (Vendas v : lista) {
			dados.addRow(new Object[]{
				v.getId(),
				v.getData_venda(),
				v.getCliente().getNome(),
				v.getTotal_venda(),
				v.getObservacao()
			});
		}
	} else{
                
                        List<Vendas>lista = dao.listarVendasPorClintePorNome(nome, frmPgto, DataInicio, DataFim);
                        DefaultTableModel dados = (DefaultTableModel)TabelaHistorico.getModel();
                        dados.setNumRows(0);

                        for (Vendas v:lista){
                            dados.addRow(new Object[]{

                                v.getId(),
                                v.getData_venda(),
                                v.getCliente().getNome(),
                                v.getTotal_venda(),
                                v.getObservacao()
                            });

                        }
                
                
            }
             } catch (DateTimeParseException e) {
    //data inválida
                JOptionPane.showMessageDialog(null, e.getMessage());
                }  

Antes de usar o  .withResolverStyle(ResolverStyle.STRICT); logo depois do DateTimeFormater, a busca era realizada normalmente. Agora nenhuma data passa. 

Alguem sabe como resolver ?????

import java.time.LocalDate;

import java.time.format.DateTimeFormatter;

import java.time.format.DateTimeParseException;

import java.time.format.ResolverStyle;

import java.util.List;

import javax.swing.JOptionPane;

import javax.swing.table.DefaultTableModel;

 

public class SuaClasse {

 

// Outros métodos da classe...

 

// Método Buscar vendas por período

// É necessário fazer a conversão de datas

// Primeiro passo: Receber a data

public void buscarVendasPorPeriodo() {

if (TxtCodCliente.getText().isEmpty() && TxtNome.getText().isEmpty()) {

JOptionPane.showMessageDialog(null, "Você deve informar o código ou o nome do Cliente que deseja pesquisar !", "Aviso!!!", JOptionPane.WARNING_MESSAGE);

return;

}

 

if (TxtDataInicial.getText().equals(" / / ") || TxtDataFinal.getText().equals(" / / ")) {

JOptionPane.showMessageDialog(null, "Você deve informar o período em que deseja pesquisar !", "Aviso!!!", JOptionPane.WARNING_MESSAGE);

return;

}

 

try {

DateTimeFormatter formato = DateTimeFormatter.ofPattern("dd/MM/yyyy")

.withResolverStyle(ResolverStyle.STRICT);

String frmPgto = "";

String nome = "%" + TxtNome.getText() + "%";

VendasDAO dao = new VendasDAO();

 

LocalDate dataInicio = LocalDate.parse(TxtDataInicial.getText(), formato);

LocalDate dataFim = LocalDate.parse(TxtDataFinal.getText(), formato);

 

if (radioBtnDin.isSelected()) {

frmPgto = "Dinheiro";

} else if (radioBtnCartao.isSelected()) {

frmPgto = "Cartão";

} else if (radioBtnCheque.isSelected()) {

frmPgto = "Cheque";

} else if (radioBtnNota.isSelected()) {

frmPgto = "Outros";

}

 

String codigo = TxtCodCliente.getText();

if (!codigo.isEmpty()) {

int codCliente = Integer.parseInt(codigo);

List<Vendas> lista = dao.listarVendasPorClienteNoPeriodo(codCliente, frmPgto, dataInicio, dataFim);

atualizarTabela(lista);

} else {

List<Vendas> lista = dao.listarVendasPorClientePorNome(nome, frmPgto, dataInicio, dataFim);

atualizarTabela(lista);

}

} catch (DateTimeParseException e) {

// data inválida

JOptionPane.showMessageDialog(null, "Data inválida. Certifique-se de inserir no formato dd/MM/yyyy.", "Erro", JOptionPane.ERROR_MESSAGE);

}

}

 

private void atualizarTabela(List<Vendas> lista) {

DefaultTableModel dados = (DefaultTableModel) TabelaHistorico.getModel();

dados.setNumRows(0);

 

for (Vendas v : lista) {

dados.addRow(new Object[]{

v.getId(),

v.getData_venda(),

v.getCliente().getNome(),

v.getTotal_venda(),

v.getObservacao()

});

}

}

}

  • Curtir 1
Link to comment
Compartilhe em outros sites

Crie uma conta ou entre para comentar 😀

Você precisa ser um membro para deixar um comentário.

Crie a sua conta

Participe da nossa comunidade, crie sua conta.
É bem rápido!

Criar minha conta agora

Entrar

Você já tem uma conta?
Faça o login agora.

Entrar agora


×
×
  • Create New...