Ciao a tutti.
Volevo automatizzare alcuni calcoli di intervallo fra due orari Inizio e Fine (nel DB registro anche la relativa data).
Attualmente sto risolvendo con DateDiff, calcolando la differenza in minuti, ricavandone le ore e commutando i rimanenti minuti "centesimali" di access in sessagesimali umani.
Ad es Inizio 09.00 Fine 12.30 Totale 3h30'
Mi sto bloccando nel momento in cui Inizio e Fine capitano con cambio data (es Inizio 21.00 Fine 00.30 Totale -7h 0.3')
Come posso fare a risolvere?
Rimanendo in tema, cercando in rete per lo stesso motivo, mi sono imbattuto in un post datato 1998 (che per combinazione era stato fatto da un ex collega di ufficio, ormai in pensione da anni e di cui ho perso i contatti), con una funzione che fa la stesso calcolo (ma non risolve i problema a cavallo delle date ):
Public Function CalcolaOrario(dataora)
Dim Minuti
Dim Ore
CalcolaOrario = ""
On Error Resume Next ' per prevenire dataora null
Minuti = dataora * 24 * 60
Ore = Minuti \ 60: Minuti = Minuti - Ore * 60
CalcolaOrario = CStr(Ore) & ":" & IIf(Minuti < 10, "0", "") & CStr(Minuti)
On Error GoTo 0
End Function
Per usarla ho dovuto dimensionare le due variabili, in quanto ho impostato la Option Explicit
In pratica si richiama con CalcolaOrario(Fine-Inizio) oppure CalcolaOrario(Inizio+Fine)
Non essendo state dimensionionate le variabili (stringhe, numeri, etc) non capisco come vengono passati e trattati i valori, e anche i calcoli che fa....
Credo che la funzione restituisca il valore come stringa, visto che alla fine usa un CStr.
Vorrei "capirla", ma non ci riesco.
Se qualcuno me la spiegasse, lo apprezzerei.
Grazie
Andrea