Newsgroup: it.comp.appl.access
Titolo: Ordinare più campi in un unico elenco

Ho bisogno del vostro (ennesimo) aiuto..
In una stessa tabella ho 5 campi data.
Vorrei stampare un report che mi mettesse in ordine crescente i record
le date contenute nei 5 campi.
Ad esempio:
      | data1 |  | data2 |  | data3 |  | data4 |  | data5 |
      ---------  ---------  ---------  ---------  ---------
01 |  02/01/00   05/01/00   04/01/00   06/01/00   01/01/00
02 |             03/01/00              07/01/00   07/01/00
03 |  06/01/00                         03/01/00   05/01/00
Risultato query:
01 |            Riga 2 Colonna 3
02 |            Riga 2 Colonna 1
03 |            Riga 3 Colonna 3
04 |            Riga 3 Colonna 2
05 |  01/01/00  Riga 1 Colonna 5
06 |  02/01/00  Riga 1 Colonna 1
07 |  03/01/00  Riga 2 Colonna 2
08 |  03/01/00  Riga 3 Colonna 4
09 |  04/01/00  Riga 1 Colonna 3
10 |  05/01/00  Riga 1 Colonna 2
11 |  05/01/00  Riga 3 Colonna 5
12 |  06/01/00  Riga 1 Colonna 4
13 |  06/01/00  Riga 3 Colonna 1
14 |  07/01/00  Riga 2 Colonna 5
15 |  07/01/00  Riga 2 Colonna 4
Come è intuibile la query sottostante il report andrà a ricercare
prima il valore del campo | data5 |, poi quello del campo | data4 |,
ecc.. fino al campo | data1 |.
E' fattibile una cosa del genere?

 E' fattibile una cosa del genere?
Credo ti debba creare una tabelle temporanea che vada a prendersi i valori
di ciascun campo e per tutti i record. Infatti se tu gli chiedessi andare
d'accapo ad ogni data col chr(13) lui continuerebbe a vederti i 5 campi come
un unico record.
Dunque apri un recordset, creati un cicolo fino alla fine dei rst, vai al
primo rst spostati al primo campo e lo aggiungi alla tua tabellina, poi al
secondo e poi al terzo. Ovviamnete compresi i valori nulli.
Se ti è chiaro il meccanismo e ti va lo affrontiamo insieme.
ciao MAssimiliano
--------------------------------
Inviato via 
http://usenet.libero.it

 ha scritto nel messaggio
news:478503f2.03062...@posting.google.com...

Devi esplodere ogni record di 5 campi in cinque record di un campo e poi
ordinare su tale campo.
-- 
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

 ha scritto nel messaggio
news:478503f2.03062...@posting.google.com...

Ciao facso
Puoi risolvere con una semplice query di unione che ti espongo spaziata per
ragioni di leggibilità ..
SELECT Data1 AS DX,
               'Riga ' & Id & ' Colonna 1' AS De
FROM TbDate
UNION ALL
SELECT Data2 AS DX,
               'Riga ' & Id & ' Colonna 2' AS De
FROM TbDate
UNION ALL
SELECT Data3 AS DX,
               'Riga ' & Id & ' Colonna 3' AS De
FROM TbDate
UNION ALL
SELECT Data4 AS DX,
               'Riga ' & Id & ' Colonna 4' AS De
FROM TbDate
UNION ALL
SELECT Data5 AS DX,
               'Riga ' & Id & ' Colonna 5' AS De
FROM TbDate
ORDER BY DX,De
Ciao Giorgio.


Molto carina.


 Ciao Giorgio.
Vi ringrazio, ma no c'ho capito granché!!!
Tabelle temporanee, query di unione, record esplosi, raggi gamma,
alabarde spaziali...
A parte gli scherzi, ancora grazie.
Ho provato a semplificare il mio scopo...
Se, data sempre la stessa tabella (con valori diversi per semplificare
ancora di più l'esempio):
      | data1 |  | data2 |  | data3 |  | data4 |  | data5 |
      ---------  ---------  ---------  ---------  ---------
01 |  02/01/00   03/01/00   04/01/00   06/01/00   
02 |             02/01/00                         10/01/00
03 |  01/01/00                         03/01/00   05/01/00
...volessi ottenere un report che mi restituisse sempre 3 record (e
non 15 come nell'ipotesi precedente) in ordine crescente.
Mi spiego...
La query va a leggere per primo l'ultimo campo data5. Se il campo
contiene un valore, lo prende in considerazione, altrimenti passa al
campo immediatamente precedente (come nel caso del record 01 dove il
campo data5 risulta essere null e quindi va a leggere il valore del
campo data4). I record, quindi, dovrebbero essere ordinati nel
seguente modo:
05/01/00 data5
06/01/00 data4
10/01/00 data5
Vale a dire:
      | data1 |  | data2 |  | data3 |  | data4 |  | data5 |
      ---------  ---------  ---------  ---------  ---------
03 |  01/01/00                         03/01/00   05/01/00
01 |  02/01/00   03/01/00   04/01/00   06/01/00   
02 |             02/01/00                         10/01/00
Spero di essermi spiegato..
Confido nel vostro (prezioso) aiuto.

 ancora di piů l'esempio):

Ciao facso
Puoi risolvere con la IIF
SELECT Id,
IIF(IsNull(Data5)=0,Data5,
     IIF(IsNull(Data4)=0,Data4,
          IIF(IsNull(Data3)=0,Data3,
               IIF(IsNull(Data2)=0,Data2,
                    IIF(IsNull(Data1)=0,Data1,NULL))))) AS Dx ,
IIF(IsNull(Data5)=0,'Data5',
     IIF(IsNull(Data4)=0,'Data4',
          IIF(IsNull(Data3)=0,'Data3',
               IIF(IsNull(Data2)=0,'Data2',
                    IIF(IsNull(Data1)=0,'Data1','NULL'))))) AS De
FROM TbDate
Ciao Giorgio


Mi sono dimenticato l'ordinamento
SELECT Id,
IIF(IsNull(Data5)=0,Data5,
       IIF(IsNull(Data4)=0,Data4,
              IIF(IsNull(Data3)=0,Data3,
                     IIF(IsNull(Data2)=0,Data2,
                           IIF(IsNull(Data1)=0,Data1,NULL))))) AS Dx ,
IIF(IsNull(Data5)=0,'Data5',
      IIF(IsNull(Data4)=0,'Data4',
            IIF(IsNull(Data3)=0,'Data3',
                  IIF(IsNull(Data2)=0,'Data2',
                        IIF(IsNull(Data1)=0,'Data1',NULL))))) AS De
FROM TbDate
ORDER BY
IIF(IsNull(Data5)=0,Data5,
       IIF(IsNull(Data4)=0,Data4,
              IIF(IsNull(Data3)=0,Data3,
                     IIF(IsNull(Data2)=0,Data2,
                           IIF(IsNull(Data1)=0,Data1,NULL)))))
Ciao

...

Ti ringrazio.. č ciň che cercavo.
Ma si poteva risolvere anche con la funzione nz?

 ha scritto nel messaggio
news:478503f2.03070...@posting.google.com...

Sě ma in modo piů scomodo.
IIF(Nz(Data5,'')<>'',Data5
     ecc.ecc.
Ciao Giorgio.