Newsgroup: it.comp.appl.access
Titolo: Query di accodamento

Salve a tutti , ho una tabella con molti campi in cui la chiave
primaria è la data :
data  compito1  compito2  compito3      ecc..
2/9       tizio         caio         sempronio
3/9       caio         tizio         sempronio
4/9    sempronio   caio         tizio
vorrei riuscire mediante una  query o codice a riportare in una
tabella nuova tutti i record della tabella su descritta in questo
modo :
DATA  NOME        COMPITO
2/9     tizio             compito1
2/9     caio             compito2
2/9     sempronio    compito3
3/9     caio             compito1
3/9     tizio             compito2
3/9     sempronio    compito3
4/9     sempronio    compito1
4/9     caio             compito2
4/9     tizio             compito3
Qualcuno riesce a darmi una soluzione ??
Grazie anticipate a tutti


Ciao,
se il numero di colonne è "umano" puoi risolvere con una query di
unione, tipo:
select data, nome, compito1 from TuaTabella
union all
select data, nome, compito2 from TuaTabella
union all
Ecc.
poi puoi usare questa query com base per una quey di accodamento
o creazione tabella.
Ovviamente questa mia è solo l'idea base...
Ciao
Alberto


Grazie Alberto per la risposta , ma purtroppo la tabella contiene
diversi campi......
Mi chiedo come sia possibile non riuscire a trovare un metodo più
semplice ...... boh !!! spero che altri inviino altre idee.
Comunque infinite grazie del tuo suggerimento.

 - Mostra testo citato -
Prova con una routine del genere
Sub sAccoda()
Dim u as Long, QuantiCampi as Long
QuantiCampi = 'qui ci metti il numero di campi che si chiamano
CompitoX
For u = 1 to QuantiCampi
   Currentdb.Execute "INSERT INTO TabellaDestinazione ( data, nome,
compito ) " & _
      "SELECT Data, Compito" & u & ", 'Compito" & u & "' FROM
TabellaOrigine;"
Next
End Sub
Prima avrai creato la TabellaDestinazione.
Comunque, quanti campi sono: venti, ottanta? Col copia-incolla la
query di almorel la fai in due minuti, l'importante è non sbagliare la
numerazione.
Riccardo Baldinotti
Occhio alle virgolette doppie e singole.


C'è qualcosa che non va perchè così non funziona !!!!

 C'è qualcosa che non va perchè così non funziona !!!!
Bisognerebbe che mi dicessi che errore ti dà.
Fai attenzione alla riga che finisce con "data, nome," perché il
messaggio ha messo un acapo di troppo; in realtà la riga successiva,
con "compito" ecc. va di seguito.
Inoltre potrebbe darti problemi la parola "data", che in Access è un
termine riservato.
Hai letto il messaggio di posta?
Riccardo Baldinotti

 Qualcuno riesce a darmi una soluzione ??
================================
Private Sub Transpose_Click()
Dim db As Database, SourceTableName As String, SQL As String
Dim RS1 As Recordset, RS2 As Recordset
Dim i As Integer, n As Integer, TargetTableName As String
' Definizioni
' --------------------------------------------------------
SourceTableName = "Table1"  ' Il primo campo in Table1 č Date/Time,
                                                    ' gli altri sono tutti 
Text
TargetTableName = "Tab3"    ' Se esiste verrą cancellata
' --------------------------------------------------------
SQL = "CREATE TABLE " & TargetTableName & _
      "(Data DateTime, " & _
      "Nome CHAR, " & _
      "Compito CHAR);"
Set db = CurrentDb
On Error Resume Next
DoCmd.DeleteObject acTable, TargetTableName
On Error GoTo 0
db.Execute SQL
n = db.TableDefs(SourceTableName).Fields.Count - 1
Set RS1 = db.OpenRecordset(SourceTableName, dbOpenDynaset)
Set RS2 = db.OpenRecordset(TargetTableName, dbOpenDynaset)
Do Until RS1.EOF
    For i = 0 To n - 1
        RS2.AddNew
        RS2(0) = RS1(0)
        RS2(1) = RS1(i + 1).Name
        RS2(2) = RS1(i + 1)
        RS2.Update
    Next
    RS1.MoveNext
Loop
End Sub
==============================
Bruno