Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Access calcolo differenza tra due data/ora

    Ciao
    Purtroppo non sono un genio in access e sto cercando di fare una query semplicissima ma non mi riesce:
    Ho un'unica tabella con sei campi:
    1. ID: contatore primario
    2. Data entrata: Data/Ora
    3. Data uscita: Data/Ora
    4. Tempo: Numerico
    5. Importo: Numerico
    6. Totale: Numerico


    Vorrei fare una querry che mi restituisca il tempo trascorso tra le due date/ora nel campo Tempo e il prodotto della moltiplicazione del campo tempo x importo nel campo Totale.

    Esempio:
    ID 1
    Data entrata: 23/02/2016 15:00
    Data uscita: 24/02/2016 17:00
    Tempo: 26 (dato da ricavare)
    Importo: 2,50
    Totale: 65 (dato da ricavare)

    Se qualche anima pia volesse aiutarmi con questa formuletta, potrei anche fargli un monumento

    Grazie
    “Che le cose siano cosi, non vuol dire che debbano andare così. Solo che quando si tratta di rimboccarsi le maniche e incominciare a cambiare, vi è un prezzo da pagare. Ed è allora che la stragrande maggioranza preferisce lamentarsi più che fare”.

    Giovanni Falcone

  2. #2
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Ma ti bastano le ore intere oppure calcoli anche le frazioni di ora ???
    Immaginiamo che calcoli anche le frazioni quindi usiamo la funzione DateDiff col parametro minuti (n)

    Nella tabella i campi "Tempo" e "Totale" NON ti servono
    mentre il campo "Importo" deve essere di tipo Valuta e non Numerico (perderesti i decimali)


    codice:
    SELECT 
    Tab1.ID, 
    Tab1.[Data entrata], 
    Tab1.[Data uscita], 
    Tab1.Importo, 
    (DateDiff("n",[Data entrata],[Data uscita]))/60 AS Tempo, 
    [Importo]*[Tempo] AS Totale
    FROM Tab1
    ;

    PS: 28 ore e 30 minuti le leggerai come 28,5

    Facci sapere
    Ultima modifica di nman; 24-02-2016 a 10:24

  3. #3
    Quote Originariamente inviata da nman Visualizza il messaggio
    Facci sapere
    Grazie infinite!! Funziona perfettamente!
    Va bene per il momento anche se calcole le ore,decimali, in futuro però forse avrei bsogno di avere la differenza in minuti!
    L'unica cosa che non mi funziona è che eseguendo la querry i risultati non vengono memorizzati nella tabella ma solo nella querry, mi piacerebbe averli anche lì.

    Grazie ancora
    Se ci sarà l'occasione ti devo una benuta
    “Che le cose siano cosi, non vuol dire che debbano andare così. Solo che quando si tratta di rimboccarsi le maniche e incominciare a cambiare, vi è un prezzo da pagare. Ed è allora che la stragrande maggioranza preferisce lamentarsi più che fare”.

    Giovanni Falcone

  4. #4
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Premesso che a parer mio è un errore scrivere nelle tabelle dei valori calcolati
    premesso anche che sull'argomento ci sono pareri discordanti,
    e in alcuni casi particolari potrebbe essere un errore accettato e conveniente (se i calcoli da fare sono molto impegnativi)

    se preferisci scrivere i valori calcolati in tabella allora devi fare una "UPDATE"
    ricordati pero che se vai poi a modificare un "Importo" il valore del "Totale"
    non si aggiorna automaticamente, ma devi rieseguire la query per aggiornarlo

    Solo per conoscenza la query sarebbe questa
    dopo avere aggiunti in tabella i campi "Tempo" e "Totale" (sempre in formmato Valuta)
    codice:
    UPDATE 
    Tab1 
    SET 
    Tab1.Tempo = (DateDiff("n",[Data entrata],[Data uscita]))/60, 
    Tab1.Totale = ((DateDiff("n",[Data entrata],[Data uscita]))/60)*[Importo]
    WHERE 
    (
    (((DateDiff("n",[Data entrata],[Data uscita]))/60)<>[Tempo]) 
    OR 
    ((((DateDiff("n",[Data entrata],[Data uscita]))/60)*[Importo])<>[Totale])
    )
    ;

    Osserva che ho messo la condizione WHERE che significa che aggiorna solo i record
    dove i valori calcolati sono difformi dal valore del calcolo che li ha generati
    (significa che se hai 20.000 record di cui solo 3 nuovi allora ti aggiorna solo quei 3


    Facci sapere

  5. #5
    Quote Originariamente inviata da nman Visualizza il messaggio
    .....Facci sapere
    Tutto molto chiaro e perfetto! Grazie veramente
    “Che le cose siano cosi, non vuol dire che debbano andare così. Solo che quando si tratta di rimboccarsi le maniche e incominciare a cambiare, vi è un prezzo da pagare. Ed è allora che la stragrande maggioranza preferisce lamentarsi più che fare”.

    Giovanni Falcone

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.