Newsgroup: it.comp.www.asp
Titolo: Visualizzare i risultati di una query

Ciao a tutti,
lavoro da non troppo con asp ed avrei bisogno di visualizzare i risultati di
una query in modo "similare" ad un foglio di calcolo tipo excel.
Mi spiego meglio, i record che devo visualizzare contengono i campi
seguenti:
Ora , Luogo, Persona.
Es.
9.00  Ufficio1  Marco
9.00  Ufficio2 Lucia
10.00 Ufficio1 Lucia
10.00 Ufficio2 Marco
Vorrei riuscire a visualizzare questi dati in modo tale che, nella prima
colonna risultino le ore, nelle colonne successive si abbia come
intestazione il luogo e , nell'incrocio tra ora e luogo sia inserita la
persona(ovviamente non vi sono solo 2 uffici e due persone...).
Ore            Ufficio1                   Ufficio2  etc..
9.00            Marco                    Lucia
10.00           Lucia                     Marco
Non ho idea di come poter fare, c'è qualcuno in grado di darmi qualche
indicazione?
Grazie in anticipo e buona giornata,
Lucy

 10.00           Lucia                     Marco
potresti ordinare la query per ora... e visualizzare in orizzontale fino a
che l'ora e' la stessa... (ufficio1, ufficio2, ufficioN) poi passi alla riga
successiva...
ciao
--
Lino Mari [mod - it.economia.e-commerce]
http://www.ebow.it
 - e-business on web!
http://www.dev2dev.it
 - La rete ha connesso nuove particelle - d2D004
Le tue scelte sono scommesse. Come quelle di chiunque altro.

Non credo che funzioni, perche ci vuole una doppia corrispondenza
ora/ufficio e se gia non c'e' un ufficio salta tutto per aria...
Direi che la ricetta per me migliore è
1 recordset per gli uffici
1 recordset per gli orari
1 recordset per il personale
1 connessione
sale e pepe qb
(scusa l'umorismo macabro ma è quasi finita la settimana :))
Detto questo, fai la tua bella select iniziale del recordset contenente gli
uffici
sSql = "SELECT Luogo FROM OLP GROUP BY Luogo ORDER BY Luogo"
Cosi' hai solo gli uffici esistenti, quanti sono non ha importanza.
Apri la tabella, apri il <TR>, apri un <TD> con dentro scritto "ORA" e dopo
averlo chiuso, fai un ciclo del recordset "luoghi" stampando tanti TD con
dentro il luogo quanti sono gli elementi del recordset. Finito questo,
chiudi il <TR> e fai una movefirst del recordset contenente i luoghi
(assicurati di averlo aperto statico!)
dopo, apri il secondo recordset contenente gli orari, con la tua bella
solita query
sSql = "SELECT Ora FROM OLP Group By Ora ORDER BY Ora"
Cosi' hai tutto gli orari presenti e possibili.
Fai un ciclo, per ogni iterazione devi
- Aprire un <TR>, aprire un <TD> e scrivere l'orario
- Chiudere il <TD>, e aprire un altro ciclo con il recordset dei luoghi. Per
ogni iterazione di questo ciclodevi costruire una query SQL che prenda la
persona e abbia nella where l'ora ed il luogo. Se il recordset è EOF, vuol
dire che per quell'ora e quel luogo non c'e' nessuno, quindi stampi "N/A",
"non c'e' nessuno" o roba simile, altrimenti stampi il nome della persona
- Chiudere il recordset contenente la persona, e fare il movefirst del
recordset contenente i luoghi
- Chiudere il <TR>
Insomma, per intenderci qualcosa di questo tipo:
rsOra.Open
do until rsOra.EOF
    %>
    <tr>
    <td><%=trim(rsOra.Fields("Ora").Value)%></td>
    <%
    do until rsLuogo.EOF
            'Per ogni luogo cerchi la persona con quel luogo e quell'ora
            sSql = "SELECT Persona FROM OLP WHERE Ora='" &
trim(RsOra.Fields("Ora").Value) & _
                        "' AND Luogo='" &
trim(rsLuogo.Fields("Luogo").Value) & "'"
            rsPersona.Open sSql, cnConn
                if rsPersona.EOF then
                    'non c'e' persona con questo luogo e questa ora, stampi
una cavolata
                    %><td> - </td><%
               else
                    'C'e' la persona, stampi il nome
                    %><td> <%=trim(rsPersona.Fields("Persona").Value)%>
</td><%
               end if
            rsPersona.Close
            rsLuogo.MoveNext
        loop
        rsLuogo.MoveFirst
        %>
        </tr>
        <%
        rsOra.MoveNext
    loop
 rsOra.Close
 %>
Ovviamente, se hai bisogno di avere piu persone per lo stesso luogo e la
stessa ora basta che nella condizione "else" in cui stampi il nome della
persona, metti dentro un altro ciclo del recordset contenente le persone e
fai un'altra tabella.
non è propriamente una soluzione pulita, ma è quella piu sicura e decente
che mi viene in mente... spero di essermi spiegato bene!
Ciao
--
Alessandro
UGIdotNET - 
http://www.ugidotnet.org

 ora/ufficio e se gia non c'e' un ufficio salta tutto per aria...
direi che con qualche controllo si possa fare... mi sembra piu' pratico...


Innanzi tutto grazie per le risposte,
per iniziare credo che proverò con la tecnica proposta da Alessandro
Ghizzardi,
anche perchè per me (spero) più immediata.
Se qualcuno avesse soluzioni alternative di più semplice realizzazione
(vista anche la mia inesperienza) gliene sarei grata.
In riferimento al secondo post di Lino Mari , a che controlli ti riferisci?
Grazie ancora,
Lucy

Dimenticavo...
Sempre che non possa sussistere la compresenza di due persone nello
stesso ufficio...
... altrimenti mi sa che ti conviene ristrutturare il database creando
tabelle diverse esempio:
tabella_luoghi
- ID
- luogo
tabella_persone
- ID
- nome
tabella_accessi
- data
- ora
- ID_nome
- ID_luogo
Ciao
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Ciao,
Prova ad usare la seguente query:
Ammesso che il nome della tabella che contiene i dati sia [dati1] e che
i campi siano:
dati1:
 ora
 persona
 luogo
Ecco la query che ti genera il recordset dal quale estrarre la tabella:
TRANSFORM Min(dati1.persona) AS MinDipersona
SELECT dati1.ora
FROM dati1
GROUP BY dati1.ora
PIVOT dati1.luogo;
Fammi sapere


 Ciao
Ciao,
in realtà ho due db con strutture diverse ( li ho creati per prova) di cui
uno normalizzato nel modo da te esposto.
Prendendo come base la struttura delle tabelle da te riportata, il mio
problema è come poter fare per visualizzare questi dati (ovviamente tramite
una pagina asp) in un modo similare ad un foglio di calcolo , ossia con :
nelle intestazioni delle colonne i luoghi
nelle intestazioni righe le ore
nelle intersezioni tra luoghi e ore --> le persone.
Accetto consigli , indicazioni , libri da leggere etc..e sicuramente
ringrazio per la pazienza!
Buona giornata a tutti,
Lucy

 anche perchč per me (spero) piů immediata.
guarda che la mia proposta era proprio per semplificare il processo... anche
se l'altra soluzione e' piu' completa...
