Queries

2.30 Unire in una query i valori dello stesso campo di record diversi
  Roberto

Ipotizziamo di avere una tabella chiamata Tabella1 che abbia la seguente struttura:
ID                      Contatore e chiave primaria
Numeratore    Numerico
Descrizione    Testo
e che abbia il seguente contenuto:
   ID          Numeratore     Descrizione
--------------------------------------------
    1              100              Pippo
    2              110              Pluto
    3              110              è un
    4              110              cane
Per raggruppare in un unico campo le descrizioni di ogni Numeratore e quindi visualizzare in una query quanto segue:
Numeratore     Descrizione
---------------------------------
      100            Pippo
      110            Pluto è un cane
Memorizzare in un modulo del daqtabase la seguente funzione:
Public Function UnisciValori(MioCampo As Long) As String
Dim rst As DAO.Recordset
Dim strSQL As String
UnisciValori = ""
strSQL = "SELECT * FROM Tabella1 WHERE Numeratore =" & MioCampo & " ORDER BY ID;"
Set rst = CurrentDb().OpenRecordset(strSQL)
rst.MoveFirst
Do Until rst.EOF
    UnisciValori = UnisciValori & rst!Descrizione & " "
    rst.MoveNext
Loop
UnisciValori = Left(UnisciValori, Len(UnisciValori) - 1)
Set rst = Nothing
End Function
quindi creare una query che abbia il seguente codice SQL:
SELECT DISTINCT Tabella1.Numeratore, UnisciValori([Numeratore]) AS Descrizione
FROM Tabella1;

NOTA
La funzione UnisciValori fa riferimento alla libreria Microsoft DAO quindi, se si usa una versione di Access successiva ad Access 97, aggiungera al database i riferimenti a Microsoft DAO 3.6 Object Library


Se pensate di avere del materiale freeware interessante e volete pubblicarlo, allora leggete qui.