Somar Minutos em um campo Data

Dicas do Oracle Forms Builder - Blocos, Itens, LOV, Canvas, Triggers, comandos, PLL, d2kwutil, FMB, Alert, menus, etc
Responder
marlonpasquali
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 248
Registrado em: Sex, 06 Fev 2009 3:02 pm
Localização: ERECHIM - RS

Amigos , preciso de uma ajuda.
Tenho um Forms com 2 campos do tipo data com formado DD/MM/YYYY HH24:MI:SS
Tenho uma validaçao no primeiro campo Data que conforme a situaçao, soma uma quantidade de minutos na primeira data e seta isto para a segunda data. Mas não está funcionando. A segunda data fica com 00:00:00 nas horas/minutos/segundos.
no When_validate tenho o seguinte:

Selecionar tudo

declare
	vn_tempo number(2);
	VD_DATA DATE;
begin
begin
  select nvl(tempo,0) into vn_tempo from pcn_codigo_ocorrencia where codigo =  :PCN_OCORRENCIA_META.CODIGO_OCORRENCIA;
exception
	when others then
	  vn_tempo :=0;
end;
if vn_tempo > 0 Then
   VD_DATA := :PCN_OCORRENCIA_META.DATAINICIO;
   :PCN_OCORRENCIA_META.DATAFIM := (VD_DATA + (VN_TEMPO/1440));
end if;
end;
Podem me ajudar a ver o que tem de errado?
Forms 6i / windows XP

obrigado,
Marlon
DanielNN
Moderador
Moderador
Mensagens: 641
Registrado em: Seg, 03 Set 2007 3:26 pm
Localização: Fortaleza - CE
att,

Daniel N.N.

Aparentemente sua variável "vn_tempo" deve sempre estar com valor 0. Verifique o valor que ele está, pois já que é para calcula as horas/min/segs deveria : "0<= vn_tempo < 1".

Outra coisa, seu campo "pcn_codigo_ocorrencia.tempo" supostamente esta em segundos do dia???
Pois dada "(VN_TEMPO/1440)" você estaria a pegar somente até os minutos, fazendo-se assim desnecesário a mascara com segundos.
marlonpasquali
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 248
Registrado em: Sex, 06 Fev 2009 3:02 pm
Localização: ERECHIM - RS

Olá,
no exemplo que estou testando, minha variavel vn_tempo tem o valor 60. Equivale a 60 minutos.
Então por exemplo
na minha hora de entrada está assim: 19/04/2012 17:54:23
acrescentando 60 minutos deveria ficar assim: 19/04/2012 18:54:23

Mas está ficando: 19/04/2012 00:00:00


se eu fizer o select abaixo no SQL funciona, mas no forms não está funcionando:

Selecionar tudo

SELECT
          TO_CHAR(SYSDATE,'DD/MM/YYYY HH24:MI:SS') AS AGORA,
          TO_CHAR(SYSDATE + 60/1440, 'DD/MM/YYYY HH24:MI:SS') AGORA_MAIS_60_MIN
          FROM DUAL

Att,
Marlon
DanielNN
Moderador
Moderador
Mensagens: 641
Registrado em: Seg, 03 Set 2007 3:26 pm
Localização: Fortaleza - CE
att,

Daniel N.N.

Não estou vendo motivo aparente.
Tente colocar o "60/1440" diretamente e vê se altera apenas 1 hora.
marlonpasquali
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 248
Registrado em: Sex, 06 Fev 2009 3:02 pm
Localização: ERECHIM - RS

Nada feito.Continua zerando
tentei mudar a mascara de formato para DD/MM/YYYY HH24:MI mas tambem não resolveu.
está configurado assim:

Tipo de dados = data
Tamanho maximo = 14
Tamanho fixo = não
Valor inicial = $$DBDATETIME$$
Obrigatório = Sim
Mascara de Formato = DD/MM/YYYY HH24:MI
DanielNN
Moderador
Moderador
Mensagens: 641
Registrado em: Seg, 03 Set 2007 3:26 pm
Localização: Fortaleza - CE
att,

Daniel N.N.

Acredito não estar entrando no if:

Selecionar tudo

if vn_tempo > 0 Then
   VD_DATA := :PCN_OCORRENCIA_META.DATAINICIO;
   :PCN_OCORRENCIA_META.DATAFIM := (VD_DATA + (VN_TEMPO/1440));
end if;
Tenta por:

Selecionar tudo

:PCN_OCORRENCIA_META.DATAFIM := VD_DATA;
ou

Selecionar tudo

:PCN_OCORRENCIA_META.DATAFIM := SYSDATE;
Se der certo com alguns desses é apenas, mesmo, um problema de conversão que você pode tratar, alternativamente, com to_char e to_date em último caso.
Responder
  • Informação
  • Quem está online

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