Calcolo delle Ore e Minuti oltre le 24hh in Access

Anonimo
2014-01-28T12:36:41+00:00

Salve a tutti,

ho già postato una domanda ma ora mi sono reso conto di non essermi espresso bene. Ho una difficoltà nel far eseguire una differenza di hh/min in una query in Access.

Non riesco a far fare la sottrazione giusta quando l'orizzonte temporale eccede le 24hh.  La query che ho fatto esegue correttamente i calcoli solo se il range rimane entro le 24 hh. Altrimenti esegue il calcolo, traendoti in inganno, ma in maniera errata.

La tabella che allego riassume bene l'errore che vi spiego nel dettaglio:

Data Postale  Ora aperta Ora chiusura Durata  Somma di hh

07/01/2014 3:18:10 5:07:03 1:48:53 1,48

07/01/2014 3:18:10 5:07:03 1:48:53 1,48

07/01/2014 6:16:40 12:56:08 6:39:28 6,39

07/01/2014 6:16:40 12:56:08 6:39:28 6,39

07/01/2014 6:23:55 13:10:41 6:46:46 6,46

07/01/2014 6:23:55 13:10:41 6:46:46 6,46

07/01/2014 6:25:09 12:31:15 6:06:06 6,6

07/01/2014 6:25:09 12:31:15 6:06:06 6,6

07/01/2014 6:27:06 13:00:28 6:33:22 6,33

07/01/2014 6:27:06 13:00:28 6:33:22 6,33

07/01/2014 13:08:29 13:25:57 0:17:28 0,17

07/01/2014 13:08:29 13:25:57 0:17:28 0,17

07/01/2014 13:33:31 20:26:09 6:52:38 6,52

07/01/2014 13:33:31 20:26:09 6:52:38 6,52

07/01/2014 13:44:18 18:58:00 5:13:42 5,13

07/01/2014 13:44:18 18:58:00 5:13:42 5,13

07/01/2014 14:20:11 22:22:35 8:02:24 8,2

07/01/2014 14:20:11 22:22:35 8:02:24 8,2

07/01/2014 15:45:56 20:31:22 4:45:26 4,45

07/01/2014 15:45:56 20:31:22 4:45:26 4,45

07/01/2014 20:35:14 3:12:03 17:23:11 -17,-23

07/01/2014 22:34:07 22:35:11 0:01:04 0,2

07/01/2014 22:34:48 2:56:51 19:37:03 -19,-37

07/01/2014 22:34:48 2:56:51 19:37:03 -19,-37

07/01/2014 22:37:47 5:11:10 17:26:37 -17,-26

07/01/2014 22:40:48 5:32:51 17:07:03 -17,-7

Come potete vedere in fondo ci sono dei numeri negativi in relazione alla colonna che dovrebbe farmi la conversione corretta dei valori. Andando ad analizzare bene la cosa si evince che, invece, la formula non esegue il conteggio nella giusta maniera.

Dalle 20:35:14 alle 3:12:03non sono 17:23:11 hhdi lavoro, bensì  07:23:11(la stessa cosa succede per le righe successive).

Nella query in Access ho usato la seguente stringa nel campo "Durata":  Durata: ([Ora Chiusura]-[Ora Aperta])


Nella query in Access ho usato la seguente stringa nel campo "Somma di ore":

Somma di hh: Fix((Somma([Durata Batch])*24)) & "," & Fix(((Somma([Durata Batch])*24)-Fix(Somma([Durata Batch])*24))*60)

Cosa devo scrivere nella stringa per far eseguire il calcolo giusto alla query?

GRAZIE in anticipo a tutti  coloro che potranno aiutarmi

Zackys

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2014-01-29T10:41:51+00:00

Ciao,

puoi omettere il CDate se vuoi una stringa:

SELECT Tbl1.[Data Postale], CDate(Format(Sum(IIf([Ora Aperta batch]>[Ora Chiusura batch],CDate([Ora Aperta batch]-#12/30/1899 23:59:59#-#12/30/1899 0:0:1#-[Ora Chiusura batch]),CDate([Ora Aperta batch]-[Ora Chiusura batch]))),"hh:nn:ss")) AS DiffTotale

FROM Tbl1

GROUP BY Tbl1.[Data Postale];

Mimmo

La risposta è stata utile?

0 commenti Nessun commento

23 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2014-01-31T12:00:36+00:00

    GRAZIE Mimmo,

    funzione tutto perfettamente. Vista la tua competenza vorrei sottoporti un altro quesito. In Acess non esiste la funzione RANK per generare classifiche tenendo conto degli ex aequo e quindi "scalare" la la numerazione progressiva della posizione.

    Sono riuscito cmq ad ottenere una  classifica con una strada non troppo raffinata che mi ha visto utilizzare 3 query per farla:

    1. selezione i campi necessari
    2. somma dei totali per squadra
    3. somma e comparazione con la query precendente (2) +1

    Potresti, tu invece, riassumere il tutto in una unica istruzione permettendomi di eliminare le 3 query ed utilizzandone una sola? Ti accludo al msg un piccolo esempio preso dall'attuale classifica di serie di A di calcio che si presta bene per la simulazione.

    Praticamente mi dovresti indicare nel campo POSIZ la posizione di classifica di ognuna, scalando la numerazione di "n" per ogni ex aequo.

    GRAZIE ancora per la disponibilità

    Zackys

    Squadra Punti Posiz
    Juventus 56
    Roma 50
    Napoli 44
    Fiorentina 41
    Inter 33
    Torino 32
    Parma 32
    Verona 32
    Milan 28
    Lazio 28
    Genoa 27
    Atalanta 24
    Sampdoria 22
    Cagliari 21
    Udinese 20
    Chievo 18
    Bologna 18
    Sassuolo 17
    Livorno 16
    Catania 14

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2014-01-29T12:24:52+00:00

    GRAZIE MILLE. Farò così

    Zackys

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2014-01-29T09:44:03+00:00

    GRANDE Mimmo, GRAZIE.

    Il tuo suggerimento funziona perfettamente. Ora però mi manca l'ultimo pezzettino.

    La differenza ottenuta deve essere sommata, per data, con tutte le altre ma la somma mi restituisce un nr negativo molto lungo come si evince dall'estratto che ti allego:

    In sintesi  io ne devo fare un uso specifico. Devo calcolare le ore di produzione, per ogni giornata, sommando tutte quelle differenze.

    Grazie ancora per l'aiuto che mi stai dando.

    Zackys

    PS: Questa è la stringa che mi hai suggerito:

    Diff: IIf([Ora Aperta batch]>[Ora Chiusura batch];CDate([Ora Aperta batch]-#23:59:59#-#00:00:01#-[Ora Chiusura batch]);CDate([Ora Aperta batch]-[Ora Chiusura batch]))

    07/01/2014 -3,2302662037037
    08/01/2014 -3,37486111111111
    09/01/2014 -3,19216435185185
    10/01/2014 -2,42621527777778
    11/01/2014 -0,815486111111111

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2014-01-28T14:19:37+00:00

    Ciao,

    prova questa:

    Durata: iif([Ora Aperta] > [Ora Chiusura],cdate([Ora Aperta] - #23:59:59# - #00:00:01# - [Ora Chiusura]),cdate([Ora Aperta] - [Ora Chiusura]))

    Mimmo

    La risposta è stata utile?

    0 commenti Nessun commento