02/06/2023 - willy55 ha scritto:
Ho notato, effettuando delle prove, un errore nel calcolo fornito dalla funzione DateDiff di Access:
https://support.microsoft.com/it-it/office/funzione-datediff-e6dd7ee6-3d01-4531-905c-e24fc238f85f
Nel particolare l'errore si verifica quando gli intervalli di tempo comprendono date con giorni diversi e si calcolano i minuti con un valore inferiore ai 60 secondi, in quanto viene restitituito un minuto anche se i minuti dovrebbero essere zero.
Il seguente esempio evidenzia dei casi con gli errori possibili:
ID | Ingresso | Uscita | IntervalloInMinuti | NrOre | NrMinuti |
---|
1 | 30/12/2023 23:59:59 | 31/12/2023 00:00:01 | 1 | 0 | 1 |
3 | 31/12/2023 23:59:58 | 01/01/2024 | 1 | 0 | 1 |
5 | 30/12/2023 23:59:59 | 31/12/2023 00:00:58 | 1 | 0 | 1 |
6 | 31/12/2023 23:59:59 | 01/01/2024 00:00:01 | 1 | 0 | 1 |
QueryOrarioCredo che la funzione DateDiff("n";[Ingresso];[Uscita]) effettui un arrotondamento per eccesso, quindi una possibile soluzione è gestire questo singolo caso, adeguando il codice nella presentazione dei dati.
C'è anche il limite delle 23:59:59… pertanto come dicevi tu bisogna assolutamente portarsi dietro anche la data del giorno. Per evitare arrotondamenti etc… io ho usato solo la Datediff per estrarre i totale secondi.
Poi da lì ho ricostruito una stringa per essere visualizzata e/o stampata in un formato tipo Orario… ma ovviamente è una stringa perchè c'è il limite detto sopra.
Ho preso il tuo spunto, con @Alex siamo andati verso una semplificazione del codice rispetto a quello che avevo buttato giù e ho fatto una piccola demo dove una Function ritorna in una stringa il numero delle Ore/Minuti/secondi nei formati :
hh:mm:ss
oppure
hh:mm
oppure
hh
Pertanto secondo i parametri passati si ha una rappresentazione Stringa del tempo intercorso tra due date/time che può essere utilizzato in diversi scenari.
Nell'altro Post ho messo la Demo per poter verificare se la Function esegue correttamente i calcoli…
Invece alla luce del codice che hai presentato, si potrebbe implementare con un ulteriore Option nei parametri, se si vuole anche la rappresentazione in numeri di giorni … “dd hh:mm:ss” (non sarebbe per niente male)
C'è solo un grande problema…. bisogna che Nat, che comunque si vede che si impegna, si metta a studiare un pò di più e un pò meglio. ;))
(scherzoooo)