Calcolo ore a cavallo mezzanotte?

di il
7 risposte

Calcolo ore a cavallo mezzanotte?

Salve
Ho un database in cui gestisco dei turni e dovrei calcolare il totale delle ore e dei minuti delle entrate e uscite.
Inizialmente impostai il campo calcolato con Datediff... Ma il problema incombeva per gli orari a cavallo della mezzanotte.
Quindi ho provato a risolvere in questo modo
TotOre: IIF([Alle Ore]<[Dalle Ore]);(24-[Dalle Ore]+[Alle Ore]);([Dalle Ore]-[Alle Ore]))
Il calcolo lo fa ... Solo che accanto esce la data 01/01/1990 .____. Dove ho sbagliato?
Come posso risolvere?

7 Risposte

  • Re: Calcolo ore a cavallo mezzanotte?

    Le date si Manipolano con le Funzioni dedicate... e tu invece non lo fai...
    A parte che il salto giorno si determina con il GIORNO non con l'ora Escita<Entrata... se tu usassi il formato gg/mm/aaaa hh:nn:ss non avresti problema... perchè non utilizzi il formato esteso della Data e di conseguenza DateDiff...?
  • Re: Calcolo ore a cavallo mezzanotte?

    @Alex ha scritto:


    Le date si Manipolano con le Funzioni dedicate... e tu invece non lo fai...
    A parte che il salto giorno si determina con il GIORNO non con l'ora Escita<Entrata... se tu usassi il formato gg/mm/aaaa hh:nn:ss non avresti problema... perchè non utilizzi il formato esteso della Data e di conseguenza DateDiff...?
    Ho utilizzato il formato Datediff ("n") per il calcolo minuti o ore usando "h"
  • Re: Calcolo ore a cavallo mezzanotte?

    Il Dato di Partenza che formato ha...?
    Verifica sia corretto... [gg/mm/aaaa hh:nn:ss]
    Poi non si può fare come dici tu... devi fare il calcolo dei MINUTI TOTALI, quindi ricavi le ORE e di conseguenza i MINUTI residui.
    
    TotMinutì=DateDiff(....)
    Ore=TotMinuti\60
    Minuti=TotMinuti-Ore*60
  • Re: Calcolo ore a cavallo mezzanotte?

    L'ho fatto e funziona... Anche con la formula che ho scritto...Mi calcola sia solo il totale dei Minuti. Sia Ora e minuti.. Solo che accanto al totale dell orario a cavallo della mezzanotte esce la data 01/01/1990 e non so come toglierla...
  • Re: Calcolo ore a cavallo mezzanotte?

    Se vuoi rispondere alle domande invece di continuare a ridire la stessa cosa... forse capiamo perchè... altrimenti pazienza.
    Funziona... "ma"... significa che non funziona... non esiste una MA...!
  • Re: Calcolo ore a cavallo mezzanotte?

    Allora io ho questa tabella con questi campi:
    TabTurni
    Data: venerdí 07 luglio 2017
    Mattina: si/no
    Pomeriggio: si/no
    Notte: si/no
    Dalle Ore: 24 ore
    Alle Ore: 24 ore
    Mi hanno inizialmente consigliato di utilizzare la funzione
    Datediff("n";[Dalle Ore],[Alle Ore]) per ricavarmi i minuti ma negli orari a cavallo della mezzanotte non va.
    Quindi ho utilizzato l'altra formula... Ma mi esce quella data accanto al risultato esatto delle ore e minuti.
    Ora.. Se c'è un modo per togliere quella data dal risultato ben venga... Altrimenti mi serve un altro modo per impostare la formula senza però modificare i campi nella tabella.
  • Re: Calcolo ore a cavallo mezzanotte?

    greta.macedonio ha scritto:


    Allora io ho questa tabella con questi campi:
    TabTurni
    Data: venerdí 07 luglio 2017
    Mattina: si/no
    Pomeriggio: si/no
    Notte: si/no
    Dalle Ore: 24 ore
    Alle Ore: 24 ore
    Mi hanno inizialmente consigliato di utilizzare la funzione
    Datediff("n";[Dalle Ore],[Alle Ore]) per ricavarmi i minuti ma negli orari a cavallo della mezzanotte non va.
    Quindi ho utilizzato l'altra formula... Ma mi esce quella data accanto al risultato esatto delle ore e minuti.
    Ora.. Se c'è un modo per togliere quella data dal risultato ben venga... Altrimenti mi serve un altro modo per impostare la formula senza però modificare i campi nella tabella.
    Il suggerimento che ti hanno dato è ASSOLUTO e GIUSTO, il problema è che tu non dai le informazioni adeguate e chi ti suggerisce nel darti indicazioni giuste da per scontato tu sappia quello che fai e tu abbia una sufficiente conoscenza.
    Ti ho ripetuto 4 volte che per usare il DateDiff devi usare un Campo Formattato correttamente come data, altrimenti non va bene.
    I Campi che ti espongo sono definiti in modo ERRATO per operare in modo corretto
    
    Dalle Ore: 24 ore
    Alle Ore: 24 ore
    Devi definirli come Data normale, lascia perdere la formattazione è solo rappresentazione visiva.
    Qualsiasi sitema di controllo Accessi/Ingressi segna la timbratura come gg/mm/aaaa hh:nn:ss
    Quindi devi anche capire che poi dovrai effettuare un CALCOLO sulla DIFF tra DataUscita e DataIngresso.
    Essendo un Calcolo lo puoi inserire in una Query come calcolato usando DateDiff, oppure se ritieni possa essere utile salvarlo fisicamente, lo calcoli nella Maschera di inserimento e poi lo salvi.
    Ovviamente il FieldType, così come il DataType non potranno essere di tipo DATA, ma saranno adeguati all'utilizzo che ne devi fare... per questo ti suggerivo di tenere i MUNITI in quanto è l'unità normalmente significativa per i sistemi di timbratura.
    La dove invece devi riportare il Dato a H e Minuti devi entrare nell'ordine delle idee che il valore visualizzato e quello reale sono 2 cose diverse...!
    Tu vuoi trattare il dato ore:minuti come un Typo data, ma ti serve solo per la visualizzazione... è estremamente errato tutto il tuo ragionamento.

    Solo per te che leggi una stringa di questo tipo "1h:2min" puoi dire che questo sia un dato significativo, in realtà NON LO E', i Database devono avere dati coerenti, quindi un campo Data è come ti dicevo, se invece devi VISUALIZZARE le Ore svolte, le Formatti come Stringa al fine di visualizzarle in modo COMPRENSIBILE, ma le memorizzi come dato UTILE al sistema...
Devi accedere o registrarti per scrivere nel forum
7 risposte