Newsgroup: it.comp.appl.access
Titolo: Trasposizione tra righe e colonne

Salve, il mio problema è il seguente
ho una tabella cosi strutturata
ID_SCHEDA Contatore chiave primaria
COD_paziente testo
data   Data/ora
COLESTEROLEMIA     numerico
risultato
ID_scheda     COD_PAZIENTE      DATA            COLESTEROLO
1                    01                            21/03/01            240
2                    01                            12/09/02            235
3                    01                            11/01/03            230
4                    02                            31/03/01            267
5                    02                            23/04/02            257
Vorrei trasformare questa tabella nel seguente modo
COD_PAZIENTE    DATA1            COLTOT1    DATA2    COLTOT2    DATA3
COLTOT3
01                        21/03/01            240           12/09/02
235      11/01/03        230
02                        31/03/01            267           23/04/02
257        "vuoto"       "vuoto"
E' possibile? Esiste una soluzione?
Grazie a chi vorrà rispondere
LucaT

 ha scritto nel messaggio
news:436a8be4$0$29603$4faf...@reader3.news.tin.it...


ci sono le query a campi incrociati,
ma nel caso tu abbia un paz. con 5 o 6 record data,
come devi comportarti?
bye :o)

"Enrico T.S." <WlaRom...@Hotmail.com> ha scritto nel messaggio
news:5Kxaf.44675$Pe2.8...@twister2.libero.it...

Ho provato con la query a campi incrociati ma mi restituisce un numero
eccessivo di colonne e quindi non funziona. La query infatti restituisce
come intestazione di colonna una data. Vorrei che al posto della data vi
fosse come intestazione COLTOT seguito da un numero 1, 2 , ecc che ni
indicasse che il valore è riferito alla prima visita (in ordine cronologico,
alla seconda , ecc
Saluti
LucaT

[cut]

In questo caso (mi sembra allora di capire che ti interessino solo le
ultime tre visite) devi per forza di cose utilizzare una tabella di
transito su cui appoggiare l'esito di una Query di interrogazione
o una elaborazione in un ciclo do loop di lettura sulla tabella origine.
Creati una tabella strutturato come il risultato che ti serve es TABNEW
Cod_paziente numerico
Data1    Data
ColTot1 Numerico
Data2    Data
ColTot2 Numerico
Data3    Data
ColTot3 Numerico
a questo punto creerai una funzione di caricamento di questa
tabella per es.:
Function CatricaTab() As boolean
Dim Db as Database
Dim Tb As recordset
Dim TbNew As recordset
Dim Comodo as Long
Dim Fatti as Integer
    set Db=CurrentDb()
    Comodo=0: Fatti=0
    docmd.runsql("Delete * From TABNEW ")  'Azzeri la tabella temporanea
    Set tbNew=Db.Openrecordset("TABNEW")
    Set tb=Db.Openrecordset("Select * From Skede Order by COD_PAZIENTE, DATA
Desc")
            ' metti al posto di Skede il nome della tua tabella schede
            ' importante il desc per avere dall'elenco i piu giovani record
in testa
    if tb.recordcount > 0 then
        do until tbl.eof
            if comodo = 0 then
                     tbnew.addnew
                    comodo = tb!COD_PAZIENTE
            endif
            if tb!COD_PAZIENTE = comodo then
                fatti=fatti +1
                select case fatti
                case 1: tbnew!Data1=tb!DATA : tbnew!ColTot1= tb!COLESTEROLO
                case 2: tbnew!Data2=tb!DATA : tbnew!ColTot2= tb!COLESTEROLO
                case 3: tbnew!Data3=tb!DATA : tbnew!ColTot3= tb!COLESTEROLO
                end select
            else
                tbnew!COD_PAZIENTE=Comodo
                tbnew.update
                fatti = 0
                tbnew.addnew
                comodo=tb!COD_PAZIENTE
            endif
            tb.movenext
        loop
        tbnew.update
    end if
    tb.close
    tbnew.close
    set tb=nothing
    set tbnew = nothing
    set db=nothing
End Function
A questo punto la tua tabelle TABNEW e' popolata come ti serve.
Ho buttato giu' a manolibera quindi
ci sara' da controllare un po'
ma il succo c'e'
facci sapere gli esiti
bye  :o)

 [cut]

Grazie. Funziona bene!
Un ultima domanda, per favore
La tabella  va bene, ma solo due precisazioni.
1) Il campo COD_PAZIENTE è una "stringa" esempio FG01001 e ho risolto
modificando
Dim Comodo as string invece che Long
ma in inquesto modo nela TABNEW vedo un record che nel campo COD_PAZIENTE ha
un valore nullo.
2) e poi se volessi visualizzare le date più vecchie ?
Comunque già così mi può andare bene e ti ringrazio ancora per le sollecite
risposte
LucaT

 LucaT
prego.
Bye :o)

 ha scritto nel messaggio
news:436b76c9$0$29600$4faf...@reader3.news.tin.it...

Funziona tutto a dovere
Grazie!
Luca T