Newsgroup: it.comp.appl.access
Titolo: Somma di tempi parzialmente sovrapposti

buongiorno a tutti...
scusate se riprendo un vecchio post, ma
non riesco a raccapezzarmi con la somma delle ore e minuti.
in particolare quando parzialmente si sovrappongono.
Leggendo i vari post ho estrapolato ed adattato la seguente query suggerita 
da Roberto
SELECT Trattamenti.Data_Seduta, Trattamenti.Id_Collaboratore, 
Sum(IIf(IsNull(DLookUp("ID_Trattamento","Trattamenti","Data_Seduta =#" & 
Format$([Data_Seduta],"mm/dd/yyyy") & "# And Id_Collaboratore=" & 
[Id_Collaboratore] & " And
DALLE<#" & [ALLE] & "# And ALLE>#" & [ALLE] & 
"#")),[ALLE],DLookUp("DALLE","Trattamenti","ID_trattamento=" & 
DLookUp("ID_Trattamento","Trattamenti","Data_Seduta =#" & 
Format$([Data_Seduta],"mm/dd/yyyy") & "# And
Id_Collaboratore=" & [Id_Collaboratore] & " And DALLE<#" & [ALLE] & "# And 
ALLE>#" & [ALLE] & "#")))-[DALLE])*24 AS OreGiornata
FROM Trattamenti
GROUP BY Trattamenti.Data_Seduta, Trattamenti.Id_Collaboratore;
allora partendo da questi dati:
ID_Trattamento    Id_Collaboratore    Data_seduta        Dalle        Alle 
Ore (campo calcolato)
1                            1                                10/03/2011 
09:00        11:19            02.19
2                            1                               10/03/2011 
10:00        12:00            02.00
3                            1                                10/03/2011 
16:00        17:00           01.00
4                            1                                10/03/2011 
16:30        17:00            00.30
5                            1                                10/03/2011 
16:55        17:17           00.22
dovrei ottenere come OreGiornata il risultato di 04.17 , considerata la 
sovrapposizione degli orari
invece ottengo:
Id_Collaboratore    Data_seduta        OreGiornata
1                                10/03/2011        4,7
oltre non capire come convertirla nel formato  hh:nn non mi sembra neanche 
esatto come risultato
ho sbagliato ad adattare la query?
il problema è risolvibile diveramente?
grazie!

"Renato"  ha scritto nel messaggio 
news:4d7ce750$0$1356$4faf...@reader2.news.tin.it...
buongiorno a tutti...
scusate se riprendo un vecchio post, ma
non riesco a raccapezzarmi con la somma delle ore e minuti.
in particolare quando parzialmente si sovrappongono.
...........
Ri ciao a tutti
Dove ho sbagliato???
nel non postare nei vecchi post?
allora scusatemi ma questo "window mail" fà tutto a modo suo
non mi fa trovare i vecchi post, cambia la formattazione de testo, ed
altro..
poi da google gruppi non sono riuscito ad entrare, se non solo per leggere i
msg
in ogni caso non c'è peggio che non essere considerati ...
va bene lo stesso, ciao a tutti 

"Renato"  ha scritto nel messaggio 
news:4d85e1e2$0$38646$4faf...@reader1.news.tin.it...

buongiorno a tutti...

Ri ciao a tutti



_______________________Risposta:
Ciao
guarda che il tuo post non l'ho proprio letto e come me penso qualcun altro.
Creane uno nuovo e vediamo di che si tratta
MA

"MA"  ha scritto nel messaggio news:im7nnf$4b0$1...@tdi.cu.mi.it...


buongiorno a tutti...

Ri ciao a tutti



maledetto Windows live mail
scusami ma ho involontariamente risposto al tuo indirizzo
quindi riposto sul NG
Allora si tratta di questo:
dovrei calcolare la somma delle ore effettivamente effettuate
considerando che alcune di esse si sovrappongono parzialmente
ad esempio:
Inizio    Fine        data
09.00    11.19    21/03/2011
10.00    12.00    21/03/2011
16.00    17.00    21/03/2011
16.30    17.00    21/03/2011
16.55    17.17    21/03/2011
la somma totale che vorrei ottenere è di 04:17
che non è la somma totale delle singole ore.
nei vecchi post ho trovato questa query suggerita da Roberto
SELECT Tabella1.DataI, Tabella1.Tecnico,
Sum(IIf(IsNull(DLookUp("ID","Tabella1","DataI =#" &
Format$([DataI],"mm/dd/yyyy") & "# And Tecnico=" & [Tecnico] & " And
Inizio<#" & [Inizio] & "# And Fine>#" & [Fine] &
"#")),(IIf(IsNull(DLookUp("ID","Tabella1","DataI =#" &
Format$([DataI],"mm/dd/yyyy") & "# And Tecnico=" & [Tecnico] & " And
Inizio<#" & [Fine] & "# And Fine>#" & [Fine] &
"#")),[Fine],DLookUp("Inizio","Tabella1","ID=" &
DLookUp("ID","Tabella1","DataI =#" & Format$([DataI],"mm/dd/yyyy") & "# And
Tecnico=" & [Tecnico] & " And Inizio<#" & [Fine] & "# And Fine>#" & [Fine] &
"#")))-[Inizio])*24,0)) AS OreGiornata
FROM Tabella1
GROUP BY Tabella1.DataI, Tabella1.Tecnico;
come risultato ottengo 4,7 sembra essere ore + centesimi di ora quindi =
04:42   o sbaglio?
io invece vorrei ottenere il risultato anche nel formato 04:17
ma più mi metto e meno ci capisco!
grazie comunque
Ciao Renato

"Renato"  ha scritto nel messaggio 
news:4d87c023$0$38648$4faf...@reader1.news.tin.it...
[CUT]
Allora si tratta di questo:
dovrei calcolare la somma delle ore effettivamente effettuate
considerando che alcune di esse si sovrappongono parzialmente
ad esempio:
Inizio    Fine        data
09.00    11.19    21/03/2011
10.00    12.00    21/03/2011
16.00    17.00    21/03/2011
16.30    17.00    21/03/2011
16.55    17.17    21/03/2011
la somma totale che vorrei ottenere è di 04:17
che non è la somma totale delle singole ore.
[CUT]
Ciao Renato
______________Risposta:
Allora partiamo da qui
Tu hai questi periodi, e vuoi sapere il totale
una strada al volo, ma tutta da verificare è
SELECT miatab.DEL, Fix([Differenza]/60) AS Ore, [differenza]-([Ore]*60) AS 
Minuti
FROM
(SELECT Sum(DateDiff("n",[Inizio],[Fine])) AS Differenza, P.del FROM 
Tabella1 AS P GROUP BY P.del)
AS miatab;
In pratica ti calcoli gli intervalli, poi li dividi per 60 e hai le ore e e 
togli dal totale i minuti delle ore e sai i minuti rimanenti
MA

 AS miatab;
credo che ci sia un equivoco:
a Renato serve il totale delle ore escludendo le sovrapposizioni
se utilizzo la tua query (che funziona perfettamente ma non serve allo
scopo) ottengo 6 ore e 11 minuti

 AS miatab;
credo che ci sia un equivoco:
a Renato serve il totale delle ore escludendo le sovrapposizioni
se utilizzo la tua query (che funziona perfettamente ma non serve allo
scopo) ottengo 6 ore e 11 minuti
-----------Risp.
esatto! grazie Roberto di aver detto piů chiaramente quello che intendevo.
Vorrei trovare il totale delle ore escludendo le sovrapposizioni
(inoltre non sono vincolato da orari che vanno da un giorno ad un altro)
confermo con la query di sopra ottengo 6 ore e 11 minuti,
ed avere un campo ore ed uno minuti non credo mi serva, mi basta avere il 
dato in un unico campo che poi posso visualizzare nel formato hh:nn
grazie comunque

 (inoltre non sono vincolato da orari che vanno da un giorno ad un altro)
Ciao,
per un problema simile ho risolto con una tabella temporanea:
tabella di lavoro
Inizio    Fine        data
09.00    11.19    21/03/2011
10.00    12.00    21/03/2011
16.00    17.00    21/03/2011
16.30    17.00    21/03/2011
16.55    17.17    21/03/2011
tabella temporanea
Inizio    Fine        data
09.00    11.19    21/03/2011
11.19    12.00    21/03/2011
16.00    17.00    21/03/2011
17.00    17.17    21/03/2011
a questo punto puoi utilizzare la tua query (sulla tab temporanea)

"Roberto"  ha scritto nel messaggio 
news:d29876e4-dd44-4aea...@m13g2000yqb.googlegroups.com...




------------------------------------------------------
Buona idea proverņ questa soluzione
con un pņ di codice mi creo la tabella temporanea e poi ci applico le dovute 
query.
anche se pensavo fosse risolvibile tutto con una query
utilizzando < e > ed il MAX e MIN....., ma troppo complicato per me.
grazie Roberto
ciao Renato

 (inoltre non sono vincolato da orari che vanno da un giorno ad un altro)
Ciao,
per un problema simile ho risolto con una tabella temporanea:
tabella di lavoro
Inizio    Fine        data
09.00    11.19    21/03/2011
10.00    12.00    21/03/2011
16.00    17.00    21/03/2011
16.30    17.00    21/03/2011
16.55    17.17    21/03/2011
tabella temporanea
Inizio    Fine        data
09.00    11.19    21/03/2011
11.19    12.00    21/03/2011
16.00    17.00    21/03/2011
17.00    17.17    21/03/2011
a questo punto puoi utilizzare la tua query (sulla tab temporanea)
------------------------------------------------------
Buona idea proverò questa soluzione
con un pò di codice mi creo la tabella temporanea e poi ci applico le dovute
query.
anche se pensavo fosse risolvibile tutto con una query
utilizzando < e > ed il MAX e MIN....., ma troppo complicato per me.
grazie Roberto
ciao Renato
-----------------risp
Funziona Grazie Roberto