Como eu faço uma rotina que verifica se a data é valida?
exemplo.
o usuaria se cadastra.
na data de nascimento ele coloca 12-13-2009, o sistema não aceita por causa do mês 13 que não existe.
mas se ele coloca 12-01-2009, o sistema aceita, como eu posso tratar isso?
para ele aceitar a partir de tal data.
Lembrando que a ideia de forçar através de uma poplist não é viavel por meu chefe não quere
alguém ajuda??
vlw
Data
-
- Rank: DBA Pleno
- Mensagens: 241
- Registrado em: Ter, 09 Out 2007 11:15 am
- Localização: Batatais - SP
se você estiver falando de não deixar aparecer a mensagem de erro do forms para campos de data formatados você pode adicionar a trigger on-error a nivel de forms ... você pegas todos os error_code referente ao formado de data e adiciona nessa trigger (você pode observalos assim que são disparados, vai dar uma mensagem tipo "FRM-50012 .... ")
como por exemplo
como por exemplo
DECLARE
ERR_COD NUMBER := ERROR_CODE;
BEGIN
IF ERROR_CODE=50012 THEN
CLEAR_MESSAGE;
MESSAGE('Data invalida.');
END IF;
END;
-
- Rank: Programador Sênior
- Mensagens: 48
- Registrado em: Qui, 24 Jan 2008 1:58 pm
- Localização: são paulo sp
Danilo Maranini
Aprendendo e Compartilhando
Aprendendo e Compartilhando
estou falando dele fazer verificao apenas no ano!!
ano 2006 ou maior
mensagem data invalida
"acho que deve ser simples, mas estou começando agora em forms faz só um mês que estou mechendo, antes era só visual basic ... então se eu estiver fazendo perguntas ridiculas desculpe-meeee"
ano 2006 ou maior
mensagem data invalida
"acho que deve ser simples, mas estou começando agora em forms faz só um mês que estou mechendo, antes era só visual basic ... então se eu estiver fazendo perguntas ridiculas desculpe-meeee"
-
- Rank: DBA Pleno
- Mensagens: 264
- Registrado em: Dom, 19 Ago 2007 8:18 pm
- Localização: Ribeirão Preto - SP
Lucas de Souza
OCA Developer
Analista de sistemas
OCA Developer
Analista de sistemas
o próprio oracle não deixa você colar datas como 31-FEV-2008, 01-15-2009
ele fala que a data é inválida...
mais você pode verificar se a data é menor que sysdate como o rerodrig falou...
ou então, para checar se a data é menor que 2006, assim
ele fala que a data é inválida...
mais você pode verificar se a data é menor que sysdate como o rerodrig falou...
ou então, para checar se a data é menor que 2006, assim
to_char('data', 'yyyy') < '2006';
-
- Moderador
- Mensagens: 367
- Registrado em: Ter, 25 Mar 2008 3:41 pm
- Localização: Salvador - BA
na trigger when validate item coloque o teste se o campo é maior que to_char(sysdate,'yyyy').
se for, exisba mensagem informando o erro.
se for, exisba mensagem informando o erro.
- Porva
- Rank: DBA Sênior
- Mensagens: 342
- Registrado em: Seg, 29 Jan 2007 7:36 am
- Localização: São Paulo/SP
Rafael S. Nunes
São Paulo/SP
São Paulo/SP
certo, mas daqui 5 anos ele vai continuar a validar por 2006?!
não faz sentido, o ideal seria você subtrair X anos do ano atual pra você validar
exemplo, eu não quero que o sistema permita que eu cadastre pessoas com menos de 10 anos de idade:
não me lembro se dá pra fazer direto com Ano, se a galera souber, manda aí
não faz sentido, o ideal seria você subtrair X anos do ano atual pra você validar
exemplo, eu não quero que o sistema permita que eu cadastre pessoas com menos de 10 anos de idade:
--Onde ADD_MONTHS trabalha com meses, no caso, 60 meses = 5 anos
--pega a data atual e subtrai 60 meses
IF :bloco.data_nascimento > ADD_MONTHS(SYSDATE,-60) THEN --Se a pessoa tiver menos de 5 anos
MESSAGE('Data de nascimento não pode ser superior a: ' || ADD_MONTHS(SYSDATE,-60) );
END IF;
não me lembro se dá pra fazer direto com Ano, se a galera souber, manda aí
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 20 visitantes