Fiz um programa em JAVA de controle de medicamentos, porém decidi implementar um “jtextfield” para Validade isso com implementação em banco, porém estou sem saber como que eu faço isso, se tenho que usar a classe “Date”, como vou calcular a validade e como eu vou fazer para que o banco receba isso e repasse para uma chamada posterior.
Fiz um programa em JAVA de controle de medicamentos, porém decidi implementar um “jtextfield” para Validade isso com implementação em banco, porém estou sem saber como que eu faço isso, se tenho que usar a classe “Date”, como vou calcular a validade e como eu vou fazer para que o banco receba isso e repasse para uma chamada posterior.
Mande seu codigo!!!
Mitnick8
Esse é o problema… Não fiz nada, estou na faculdade fazendo JAVA mais ainda não cheguei a esse ponto de usar a classe DATE
Mais o que queria era algum como o seguinte:
Estou fazendo um programa de controle de Medicamento e gostaria de adicionar uma validade a eles e posteriormente o programa me informar se está vencido ou não.
Usuário Digita a data em forma de String o programa recebe
O programa salva no BD o data
O programa busca no BD e me passa quando o medicamento está pra vencer
E
evefuji
Mitnick8:
Esse é o problema… Não fiz nada, estou na faculdade fazendo JAVA mais ainda não cheguei a esse ponto de usar a classe DATE
Mais o que queria era algum como o seguinte:
Estou fazendo um programa de controle de Medicamento e gostaria de adicionar uma validade a eles e posteriormente o programa me informar se está vencido ou não.
Usuário Digita a data em forma de String o programa recebe
O programa salva no BD o data
O programa busca no BD e me passa quando o medicamento está pra vencer
Já desenhou as telas? Está usando SWT? JSP? etc…
Para converter string em Date você pode usar o SampleDateFormat (método parse).
Para pegar, por exemplo, a string de um JTextField, se me lembro bem, você deve usar o getText().
Mitnick8
Bom, “voei” agora com sua pergunta, mais os termos digamos “técnicos”, o que estou com dificuldade e na parte de como usar a classe Date, de como inserir dados nela, de como inserir no banco, de como buscar isso no banco e depois de como fazer o calculo para saber se vai vencer ou não?
E
evefuji
Bom, para criar uma data a partir de uma String, você faz assim (considerando que está usando o java.util.Date)
SimpleDateFormatformatter=newSimpleDateFormat("yyyy/MM/dd");// para o formato de 2010/11/10, por exemplotry{DatedataNoJava=formatter("2010/11/10");}catch(ParseExceptione){e.printStackTrace();}
Para inserir nem alguma consulta no banco de dados, se você tiver um objeto Connection:
PreparedStatementps=connection.prepareStatement("select * from tabela where campo_data > ?");ps.setDate(1,dataNoJava);//o primeiro parâmetro indica que vai substituir o primeiro "?", o segundo é o objeto que vai substituir esse "?"
Mitnick8
Muito obrigado amigo, mais o que estou mais intrigado ainda é:
Para eu pegar a data que está no banco e calcular o tempo que falta, digamos pra saber a validade, no caso se (já venceu ou não)
como que eu faria isso?
Obrigado desde ja
Mitnick8
Fiz o codigo que falou porém deu um erro nessa linha
E
evefuji
Mitnick8:
Fiz o codigo que falou porém deu um erro nessa linha
ops, digitei errado, hehehe, faltou o método parse.
DatedataNoJava=formatter.parse("10/11/2010");
Mitnick8
Consertei esse erro, tentei apagar o posto mais não consegui
Fiz tudo certo, porém estou com duvida em relação a como recuperar essa dado de forma que de pra calcular a validade, assim “dizendo” ao usuário se está vencido ou não…
elias_era
Mitnick8:
Consertei esse erro, tentei apagar o posto mais não consegui :(
Fiz tudo certo, porém estou com duvida em relação a como recuperar essa dado de forma que de pra calcular a validade, assim "dizendo" ao usuário se está vencido ou não...
Não sei se tem alguma classe, mas dá para fazer por lógica:
nesse caso, ele pega a data em uma String no formato “yyyy/MM/dd” e remove as barras (substitui por texto vazio). Com isso é possível converter em um inteiro de formato yyyyMMdd, e pela lógica, você sabe que comparar inteiros nesse formato é equivalente a comparar datas.
Mitnick8
Estou deste então a modificar todo os códigos, consegui terminar agora, mais aí apareceu outro erro, até imagino o que houve porém não estou conseguindo corrigir.
StringvalidadeMed=txtValidade.getText().replace("/","");Datedat=newDate();StringdataHoje=String.valueOf(dat);//Pega a data do dia atual e transforma em String[b]intdataHoj=Integer.parseInt(dataHoje);PegaadataemStringetransformaemInt[/b]intvalid=Integer.parseInt(validadeMed);if(valid<dataHoj){jPanel.setBackground(Color.RED);}
Imagino que o erro é por querer transformar uma "Date" em "Integer", porém como faria isso, ou como faria a comparação do (if) ?
elias_era
Qual o valor de dat? Quando não se coloca nada no construtor ela vem com a data de hoje?
E
evefuji
Mitnick8: vc tentou da forma que eu falei?
SimpleDateFormatformatter=newSimpleDateFormat("yyyy/MM/dd");// para o formato de 2010/11/10, por exemplo try{DatedataNoJava=formatter.parse("2010/11/10");}catch(ParseExceptione){e.printStackTrace();}Datedat=newDate();if(dataNoJava.getTime()<dat.getTime()){jPanel.setBackground(Color.RED);}
Outra coisa, se vc quiser fazer da maneira que está tentando fazer (que eu não julgo ser a mais adequada), essa linha:
String dataHoje = String.valueOf(dat);
Não vai formatar a data em yyyy/MM/dd, não lembro agora qual formato ele vai usar, mas não é yyyy/MM/dd (para transformar em yyyy/MM/dd você também pode usar o SampleDateFormat, com o método format)
Mitnick8
Funcionou Perfeitamente,
Obrigado pessoal, mais só pra fechar no 10
Eu queria implementar o seguinte, quando o medicamento estivesse vencido a tela ficava Vermelha, isso eu consegui, blz.
O problema é:
Queria também mudar o cor da tela para que 3 meses antes de vencer a tela ficasse Amarela, a mudar a cor eu sei, o que eu não sei é como fazer esse calcula?
Obrigado novamente.
E
evefuji
Você pode fazer assim (mas não recomendo, pois é um método deprecated, mantido apenas para compatibilidade com sistemas antigos):
dat.setMonth(dat.getMonth()-3);
A forma mais elegante de fazer isso é assim (mas essa eu não lembro de cabeça se é exatamente assim, talvez você tenha que procurar como se faz):
Não estou conseguindo colocar dentro da condição i[/i]
e este outro:
1. Calendar cal = Calendar.getInstance(dat.getTime());
2.
3. cal.add(Calendar.MONTH, -3);
Realmente está um pouco errado consegui que funcionasse com isso:
Calendar cal = Calendar.getInstance(Locale.ENGLISH);
cal.add(Calendar.MONTH, -3);
Só que também não consegui por dentro da condição…
E
evefuji
então, você gera um objeto Date ou Calendar, e pega o time deles para comparar. Procura se informar melhor sobre os métodos getTime() da classe Date, e da classe Calendar.
Mitnick8
Vou ver o que posso fazer…
Mitnick8
Pois é, estou até agora aqui tentando resolver o problema e nada, levei para os amigos de sala, e nenhum deles me deu uma soluções, me deram sugestões e ela tentei todas, mais nada de conseguir,
Meu problema é:
Fazer com que eu receba uma mensagem para quando faltar 3 meses de um medicamento vencer. fiz isso quando ele estiver vencido, mais quero também fazer quando faltar de 3 meses a 0 dias para vencer.