Ir para conteúdo
  • 0

Horas negativas


Ir para solução Solucionado por Erick Oliveira ,

Pergunta

  • Alunos
Postado

Boa tarde!

Meus amigos estou trabalhando com horas e deparei com uma questão horas negativas, na minha medida horas positiva bate já horas negativas não .

na imagem H. decimal  e negativa -0,0167  X 60 mm = 1,002 mm, porem a hora não bate conforme a imagem. "esta dando (- 01:59:00) erro.

onde esta meu erro ? 

esta e minha medida "Resultado"

Resultado =
VAR vHoras = SUM(VWVGV_FRQ_F_MOVIMENTO[Banco Horas])
VAR vHora = INT(vHoras)
VAR vMinuto = INT((vHoras - vHora) * 60)
VAR vSegundos = ROUND((vHoras - vHora - DIVIDE(vMinuto, 60)) * 3600, 0)
VAR vHH = IF(LEN(vHora) = 1, "0" & vHora, vHora)
VAR vMM = IF(LEN(vMinuto) = 1, "0" & vMinuto, vMinuto)
VAR vSS = IF(LEN(vSegundos) = 1, "0" & vSegundos, vSegundos)
VAR vResultado = CONVERT (vHH&vMM&vSS, INTEGER)
RETURN
    vResultado

image.png.cbaefca28f752cfee8eb57a149dd67e3.png

7 respostass a esta questão

Posts Recomendados

  • 0
  • Alunos
  • Solução
Postado

Opa Jamilson;

Acredito que dessa forma atenda o resultado esperado:
 

Resultado = 
VAR vRealizado = SUM(VWVGV_FRQ_F_MOVIMENTO[H. proc. realizado])
VAR vProgramado = SUM(VWVGV_FRQ_F_MOVIMENTO[H. proc. decimal])
VAR vHoras = ABS(vRealizado - vProgramado)
VAR vHora = INT(vHoras)
VAR vMinuto = INT((vHoras - vHora) * 60)
VAR vSegundos = ROUND((vHoras - vHora - DIVIDE(vMinuto, 60)) * 3600, 0)
VAR vHH = IF(LEN(vHora) = 1, "0" & vHora, vHora)
VAR vMM = IF(LEN(vMinuto) = 1, "0" & vMinuto, vMinuto)
VAR vSS = IF(LEN(vSegundos) = 1, "0" & vSegundos, vSegundos)
VAR vResultado = 
    IF(
        vRealizado - vProgramado >= 0,
        CONVERT (vHH&vMM&vSS, INTEGER),
        CONVERT (-vHH&vMM&vSS, INTEGER)
    )
RETURN
    vResultado

 

  • Like 1
  • Thanks 1
  • 0
  • Alunos
Postado

Boa noite Jamilson;
Tente  o seguinte:

Resultado = 
VAR vValor = SUM(VWVGV_FRQ_F_MOVIMENTO[Banco Horas])
VAR vHoras = ABS(vValor)
VAR vHora = INT(vHoras)
VAR vMinuto = INT((vHoras - vHora) * 60)
VAR vSegundos = ROUND((vHoras - vHora - DIVIDE(vMinuto, 60)) * 3600, 0)
VAR vHH = IF(LEN(vHora) = 1, "0" & vHora, vHora)
VAR vMM = IF(LEN(vMinuto) = 1, "0" & vMinuto, vMinuto)
VAR vSS = IF(LEN(vSegundos) = 1, "0" & vSegundos, vSegundos)
VAR vResultado = 
    IF(
        vValor >= 0,
        CONVERT (vHH&vMM&vSS, INTEGER),
        CONVERT (-vHH&vMM&vSS, INTEGER)
    )
RETURN
    vResultado

 

  • 0
  • Alunos
Postado

Boa noite!

@Erick Oliveira, quando eu apliquei esta medidas em uma tabela e coloco um filtro para dia ou semana as somas de horas bateu corretamente, porém no resultado do fechamento do mês ou mais esta dando erro no total seque imagem.   ( REALIZADO - PROGRAMADO = 02:28).

 

 

 image.png.9f282625662701197977062ace8ff750.png

Faça login para comentar

Você vai ser capaz de deixar um comentário após fazer o login



Entrar Agora
×
×
  • Criar Novo...