Newsgroup: it.comp.appl.access
Titolo: Re:Query di raggruppamento orari 2

Ciao a tutti. 
Ho questa situazione:
IDBadge     OraInOut            InOut
=======     ==========          =====
   1        27/01/2005 08:30      0
   1        27/01/2005 09:30      1
   1        27/01/2005 11:00      0
   1        27/01/2005 13:30      1
   1        27/01/2005 14:00      0
   1        27/01/2005 15:00      1
   1        27/01/2005 16:30      0
   1        27/01/2005 17:30      1
   1        28/01/2005 07:30      0
   1        28/01/2005 13:00      1
   1        28/01/2005 13:30      0
   1        28/01/2005 17:30      1
ecc
Questa tabella da origine a questa tabella chiamata TEMP
IDBadge     Giorno        OraIn    OraOut 
=======     =======       =====    =====    
   1        27/01/2005    08:30    09:30
   1        27/01/2005    11:00    13:30
   1        27/01/2005    14:00    15:00
   1        27/01/2005    16:30    17:30
   1        28/01/2005    07:30    13:00
   1        28/01/2005    13:30    17:30
L'output che vorrei ottenere è questo:
Id   Giorno      In1    Out1   In2    Out2   In3    Out3   In4    Out4
==   ========    ===    ===    ===    ===    ===    ====   ====   ====
 1   27/01/2005  08:30  09:30  11:00  13:30  14:00  15:00  16:30  17:30
 1   28/01/2005  07:30  13:00  13:30  17:30
Lavorando con recordset e VBA ciclerei la tabella prendendo ad uno ad uno
i record ed inserendoli nei campi giusti. 
Procedendo logicamente dovrei:
a) individuare quanti record ci sono per un giorno (usereri un Loop)
b) inserire nei campi In e Out le timbrature corrispondenti ed "avanzare"
campo per ogni coppia di record
Tramite SQL è fattibile una cosa del genere?
Forse il problema nasce dal fatto che non il numero delle coppie di
timbrature non è fisso ma variabile?
Ciao e grazie
MarcoMac
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 -- 
Credo ci possano essere piů strade. Quella che mi viene in mente č questa.
Per ogni id conta il numero di timbrature: ottieni cosě il numero massimo, 
per esempio 8
Da codice crea al volo una tabella temporanea con ID Giorno e tanti In e Out 
quanti sono (8) quelli contati.
A questo punto č un gioco riempirla.
In alternativa ti crei una tabella di appoggio con 20 o 30 in e out che 
svuoterai e riempirai dinamicamente.
Con la tabella poi farai quello che vuoi.
Ciao, Carlo 

 ha scritto nel 
messaggio news:Tp6ce.835009$b5.37...@news3.tin.it...

Anch'io ho avuto un problema simile ho risolto con una Query in questo modo, 
poi ho apportato alcune modifiche per l'utilizzo in specifico. Grazie a 
Roberto.
Format([Data],"mm/dd/yyyy") & "# AND InOut =
'00'")<>0,CDate(DMin("OraInOut","Tabella1","Matricola ='" & [Matricola] & "'
AND Data = #" & Format([Data],"mm/dd/yyyy") & "# AND InOut = '00'")),Null)
AS Ingresso, IIf(DCount("*","Tabella1","Matricola ='" & [Matricola] & "' AND
Data = #" & Format([Data],"mm/dd/yyyy") & "# AND InOut =
'01'")<>0,CDate(DMin("OraInOut","Tabella1","Matricola ='" & [Matricola] & "'
AND Data = #" & Format([Data],"mm/dd/yyyy") & "# AND InOut = '01'")),Null)
AS Uscita, IIf(DCount("*","Tabella1","Matricola ='" & [Matricola] & "' AND
Data = #" & Format([Data],"mm/dd/yyyy") & "# AND InOut = '00'")<>0,IIf(Not
IsNull(DMax("OraInOut","Tabella1","Matricola ='" & [Matricola] & "' AND Data
= #" & Format([Data],"mm/dd/yyyy") & "# AND InOut = '00'" & " AND OraInOut
<> #" & CDate(DMin("OraInOut","Tabella1","Matricola ='" & [Matricola] & "'
AND Data = #" & Format([Data],"mm/dd/yyyy") & "# AND InOut = '00'")) &
"#")),CDate(DMax("OraInOut","Tabella1","Matricola ='" & [Matricola] & "' AND
Data = #" & Format([Data],"mm/dd/yyyy") & "# AND InOut = '00'" & " AND
OraInOut <> #" & CDate(DMin("OraInOut","Tabella1","Matricola ='" &
[Matricola] & "' AND Data = #" & Format([Data],"mm/dd/yyyy") & "# AND InOut
= '00'")) & "#")),Null),Null) AS Ingresso1,
IIf(DCount("*","Tabella1","Matricola ='" & [Matricola] & "' AND Data = #" &
Format([Data],"mm/dd/yyyy") & "# AND InOut = '01'")<>0,IIf(Not
IsNull(DMax("OraInOut","Tabella1","Matricola ='" & [Matricola] & "' AND Data
= #" & Format([Data],"mm/dd/yyyy") & "# AND InOut = '01'" & " AND OraInOut
<> #" & CDate(DMin("OraInOut","Tabella1","Matricola ='" & [Matricola] & "'
AND Data = #" & Format([Data],"mm/dd/yyyy") & "# AND InOut = '01'")) &
"#")),CDate(DMax("OraInOut","Tabella1","Matricola ='" & [Matricola] & "' AND
Data = #" & Format([Data],"mm/dd/yyyy") & "# AND InOut = '01'" & " AND
OraInOut <> #" & CDate(DMin("OraInOut","Tabella1","Matricola ='" &
[Matricola] & "' AND Data = #" & Format([Data],"mm/dd/yyyy") & "# AND InOut
= '01'")) & "#")),Null),Null) AS Uscita1
FROM Tabella1
GROUP BY Tabella1.Matricola, Tabella1.Data
ORDER BY Tabella1.Data, Tabella1.Matricola;
Ciao Ronvai