Data

Dicas do Oracle Forms Builder - Blocos, Itens, LOV, Canvas, Triggers, comandos, PLL, d2kwutil, FMB, Alert, menus, etc
Responder
dante
Rank: Programador Sênior
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

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 :roll:

alguém ajuda??

vlw
rerodrig
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 27
Registrado em: Qua, 06 Fev 2008 10:33 am
Localização: Americana - SP

verifica se a data é menor que sysdate...falow
rodfbar
Rank: DBA Pleno
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

Selecionar tudo

DECLARE
   ERR_COD          NUMBER := ERROR_CODE;
BEGIN
  IF ERROR_CODE=50012 THEN
    CLEAR_MESSAGE; 
    MESSAGE('Data invalida.');
  END IF;
END;
dante
Rank: Programador Sênior
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

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"
gokden
Rank: DBA Pleno
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

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

Selecionar tudo

to_char('data', 'yyyy') < '2006';
RodrigoValentim
Moderador
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.
Avatar do usuário
Porva
Rank: DBA Sênior
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

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:

Selecionar tudo

--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í
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 20 visitantes