Página 2 de 2

converte campo numerico em horas

Enviado: 11 Jul 2011 15:31
por alxsts
Olá!

Entendi que ele tem uma lista de tempos expressos em formato decimal (HHH,MM) ao invés do formato tradicional HH:MM:SS, e quer somar esses valores.

Já sugerimos algumas soluções usando a formatação mais usual. Se ele preferir manter a formatação atual, segue um código para somar no formato decimal.

Código: Selecionar todos

#define Fra(n) ( n - Int(n) )

FUNCTION TimeAdd( aValores )

   LOCAL nSecs := 0

   IF Empty( aValores )
      // carrega dados para teste 
      aValores := {}
      AAdd( aValores, 0.16 )
      AAdd( aValores, 0.16 )
      AAdd( aValores, 0.20 )
      AAdd( aValores, 0.17 )
      AAdd( aValores, 0.17 )
      AAdd( aValores, 0.14 )
      AAdd( aValores, 0.14 )
      AAdd( aValores, 0.10 )
      AAdd( aValores, 0.07 )
      AAdd( aValores, 0.06 )
      AAdd( aValores, 0.12 )
      AAdd( aValores, 0.11 )
      AAdd( aValores, 0.14 )
      AAdd( aValores, 0.08 )
      AAdd( aValores, 0.07 )
      AAdd( aValores, 0.24 )
      AAdd( aValores, 1.13 )
      AAdd( aValores, 2.39 ) 
   Endif

   AEval( aValores, { |e| nSecs += ( Int( e ) * 3600 ) + ;
                                   ( ( Fra( e ) * 100 ) * 60 ) } )

   RETURN TString( nSecs )