Condividi tramite

Query differenza ore, minuti

Anonimo
2011-02-01T14:17:09+00:00

Ciao a tutti,

chiedo il vostro aiuto su una query di access 2003, in particolare mi serve che esegua la differenza delle ore, minuti e secondi tra due campi entrata e uscita.

Preciso che i campi si compilano nel formato now() quindi data ora, minuti e secondi.

ho provato con questa query ma non riesco nella differenza.

SELECT Tabella1.Utente, Max(Tabella1.entrata) AS MaxDientrata, Max(Tabella1.uscita) AS MaxDiuscita, DateDiff('s',[uscita],[entrata]) AS Differenza

FROM Tabella1

GROUP BY Tabella1.Utente, Tabella1.data, DateDiff('s',[uscita],[entrata])

HAVING (((Tabella1.data)=[inserisci data Data]));

Grazie per l'attenzione

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

5 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2011-02-01T15:42:18+00:00

    Ciao David, ho provato a fare copia e incolla della tua query nonchè della funzione inserendo quest'ultima in un nuovo modulo che ho chiamato DifferenzaOre, ma il risultato è il medesimo.

    ma come formato hai utilizzato il seguente?

    31/01/2011 15.54.18

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2011-02-01T15:12:28+00:00

    Ciao Luca,

    nella query inverti entrata con uscita in questo modo

    DiffDate([entrata],[uscita].

    Inoltre il costrutto della mia query è il seguente:

    SELECT Max(Tabella1.entrata) AS MaxDientrata, Max(Tabella1.uscita) AS MaxDiuscita, DiffDate([entrata],[uscita]) AS Differenza

    FROM Tabella1

    WHERE (((Tabella1.data)=[inserisci data Data]))

    GROUP BY DiffDate([entrata],[uscita]);

    Per il resto a me funziona correttamente.

    David

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2011-02-01T15:02:13+00:00

    Ciao David, grazie per la risposto.

    quanto mi hai illustrato genere un errore sull'esecuzione e precisamente

    Espressione digitata non correttamente o troppo complessa per essere valutata. Un espressione numerica, ad esempio, può contenere troppi elementi complessi.

    Semplificare assegnando parti dell'espressione e variabili.

    hai qualche idea?

    Grazie

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2011-02-01T14:38:06+00:00

    Ciao Luca.Newton

    in un modulo crea una funzione di questo tipo

    Function DiffDate(dtOraInizio As Date, dtOraFine As Date) As Date

        If dtOraFine < dtOraInizio Then

              dtOraFine = 1 + dtOraFine 'aggiungo 1 giorno

        End If

        DiffDate = dtOraFine - dtOraInizio

    End Function

    poi cambia la tua query in questo modo:

    SELECT Tabella1.Utente, Max(Tabella1.entrata) AS MaxDientrata, Max(Tabella1.uscita) AS MaxDiuscita, DiffDate([uscita],[entrata]) AS Differenza

    FROM Tabella1

    GROUP BY Tabella1.Utente, Tabella1.data, DiffDate([uscita],[entrata])

    HAVING (((Tabella1.data)=[inserisci data Data]));

    P.S.: la funzione è un adattamento di una funzione tratta da un post di Giorgio Rancati.

    David

    La risposta è stata utile?

    0 commenti Nessun commento