Porém não esta dando certo, acredito que seja porque o formato da data do campo da tabela não é igual ao da data que pego do jFormattedTextField, o retorno do comando System.out.println(d1) é:
Sat Jan 07 00:00:00 BRST 2017
e com o system.out do campo da tabela System.out.println(tabAtendimentos.getValueAt(tabAtendimentos.getSelectedRow(), 4)) é:
2017-01-17
Alguém teria alguma ideia de como resolver isso e o filtro funcionar?
Cara estou quebrando a cabeça e não tem jeito, inclusive havia tentado de uma forma semelhante que você me passou, dá erro porque no lugar do formatter.format(d1) ele diz que é necessário o tipo Date e não String, será que estou fazendo alguma outra coisa de errado, a data que esta no JTable esta vindo do meu banco executanto o comanto System.out.println(tabAtendimentos.getValueAt(tabAtendimentos.getSelectedRow(), 4)); a saída é 2017-01-20, então o formato estou colocando é “yyyy-MM-dd”.
Agradeço sua ajuda.
Jonathan_Medeiros
Então faz o processo inverso, transformando a String em Date.
Stringdata1=//aqui você atribui sua primeira data salva no banco de dados;Stringdata2=//aqui você atribui sua segunta data salva no banco de dados;Datedata;DateFormatformatter=newSimpleDateFormat("dd/MM/yyyy");d1=(Date)formatter.parse(data1);d2=(Date)formatter.parse(data2);RowFilterlow=RowFilter.dateFilter(RowFilter.ComparisonType.AFTER,d1,4);RowFilterhigh=RowFilter.dateFilter(RowFilter.ComparisonType.BEFORE,d2,4);
P
phrix
Jonathan,
As datas que vem do banco são as que estão na tabela as do filtro o usuário informa em um JFormattedTextField, que eu recupero assim:
if(iniFim=="I")strData=inputFormatDtIni.getText();if(iniFim=="F")strData=inputFormatDtFim.getText();DateFormatformat=newSimpleDateFormat("dd/MM/yyyy",Locale.US);try{dateFiltro=format.parse(strData);}catch(ParseExceptionex){JOptionPane.showMessageDialog(null,"Erro na conversão da data do Filtro. Erro: "+ex);}returndateFiltro;}
se eu tento mudar o formato aí para:
DateFormat format = new SimpleDateFormat(“yyyy-MM-dd”, Locale.US);
recebo o erro:
Já fiz uma gambi para consseguir pegar com o formato desejado mas não surtiu efeito.
Se tiver uma ideia agradeço.
Abraço.
P
phrix
Outra dúvida alguém saberia uma forma de debugar o que esta sendo comparado na linha:
Eu estou visualizando atualmente com a saída dos comandos: System.out.println(d1);
e selecionando uma linha da tabela: System.out.println(tabAtendimentos.getValueAt(tabAtendimentos.getSelectedRow(), 4));
As duas saídas mostram saídas diferentes de formato como expliquei acima mas não sei se seria confiável levar somente em consideração a saída do System.out.
Jonathan_Medeiros
Porque você utiliza o Locale.US na formatação do valor, é realmente necessário esse parâmetro ?
Outra observação, nesta linha aqui: dateFiltro = format.parse(strData); você precisa fazer o casting de Date ficando da seguinte maneira: dateFiltro = (Date) format.parse(strData);
P
Solucao aceita
phrix
Jonathan,
Muito obrigado por sua ajuda.
Infelizmente não consegui fazer o filtro pela tabela, resolvi limpando a tabela e fazendo a busca no banco novamente com a condição das datas na instrução do SQL.