Newsgroup: it.comp.lang.visual-basic
Titolo: Fare somme di valori in formato ora

Lavoro con VB6
Ho una lista di dipendenti, ognuno lavora es. 8 ore al giorno ma alcuni meno
o più.
Sul DB ci sono nomi e ore lavorate per ogni giorno.
Alla fine del mese debbo sommare le ore lavorative per ciascuno e non riesco
ad ottenere valori validi per me, in quanto il risultato in formato ora non
supera le 24 ore.
Ho provato con la funzione Format ma non c'è verso di ottenere risultati del
tipo: "Caio ha lavorato 80 ore..."
Sarà una banalità, potete aiutarmi?
Grazie mille in anticipo!

 ha scritto

se non ho fatto errori, io passo un intervallo in secondi a questa funzione:
Public Function FormatHMS(ByVal t As Long) As String
    If t < 86400 Then
        FormatHMS = Format$(DateAdd("s", t, 0), "hh:mm:ss")
    Else
        Dim g As Long
        g = Int(t / 86400)
        t = t - (g * 86400)
        FormatHMS = CStr(g) & ":" & Replace(Format$(DateAdd("s", t, 0), 
"hh:mm:ss"), ".", ":")
    End If
End Function
-- 
ciao, a.
news://it-alt.comp.software.openoffice : Il newsgroup dedicato a
OpenOffice.org, la suite open source di applicazioni per ufficio. 

 supera le 24 ore.
Il numero di ore non sono date, sono interi.
Ciao 

 Il numero di ore non sono date, sono interi.
Interi? Perché?
Reali.
Daniele

 ha scritto

state parlando di ore lavorate.
conosco vari casi in cui sono assolutamente irreali.

 tipo: "Caio ha lavorato 80 ore..."
La cosa migliore è convertire tutto in secondi, fare le operazioni di
somma e riconvertire in ore.
-- 
Every program in development at MIT expands until it can read mail.
News 2000 [v 2.06] - 
http://www.akapulce.net/socket2000

 La cosa migliore è convertire tutto in secondi, [cut]
ue, e i decimi di secund che fine fanno? mì son di milan!

 conosco vari casi in cui sono assolutamente irreali.
Presente.
:-)
-- 
Salutoni
Sergio
C'è il giorno in cui nasci e quello in cui scegli di vivere
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it


Qui da me esprimiamo tutti gli intervalli orari in minuti (memorizzati in
Long).
Poi ho una comoda funzione che li trasforma in una stringa "simil-ora", tipo
"0123:45".
Contempla anche il caso di intervalli negativi (es. saldi orari).
Public Function MinutesToExtTime(ByVal Minutes As Long, Optional ByVal
HourDigits As Integer = 4) As String
Dim lHours As Long
Dim lMinutes As Long
Dim sTimeSep As string
    lHours = Abs(Minutes) \ 60
    lMinutes = Abs(Minutes) Mod 60
    sTimeSep = Mid(Format(#12:00:00 PM#, "hh:nn"), 3, 1)
    MinutesToExtTime = Format(lHours, String(HourDigits, "0")) _
                    & sTimeSep & Format(lMinutes, "00")
    If Minutes < 0 Then
        MinutesToExtTime = "-" & MinutesToExtTime
    End If
End Function
HTH
Bye
Raf

 tipo: "Caio ha lavorato 80 ore..."
E' completamente sballato il concetto.
Le 'ore lavorate' sono un 'periodo' di tempo, e non un 'orario'. Il 
campo DataOra esprime *orari, non periodi*.
I periodi vanno memorizzati con un numerico, che indichi la quantità di 
intervalli atomici (secondi, minuti, ore, giorni, ecc...) indicativi 
della durata del periodo stesso.
La somma dei periodi diventa quindi una somma di numerici, poi la 
formattazione la si fa come si vuole.
Ciao
Alberto
-- 
A questo punto hanno trovato un muro,
un muro duro, molto molto duro,
che siamo noi.

 :-)
Chiamato ? :-)
Bye, G.