Newsgroup: it.comp.appl.access
Titolo: Query a campi incrociati?

Salve a tutti
Ho una tabella del tipo
[ID], [Nome],[Indirizzo]
devo fare una query del tipo
[indirizzo], [nome ID1,Nome ID5, Nome ID15]
i tre nomi devono essere nello stesso campo e separati dalla virgola
(ammesso che all'indirizzo corrispondano ID1,ID5 e ID15)
grazie a tutti x l'aiuto
NB con la creazione guidata di Q a Campi incrociati posso cereare una
colonna x ogni nome non mettere tutti i nomi in fila nello stesso campo! O
sbaglio?

 ha scritto nel messaggio
news:oim%c.81831$1V3.2...@twister2.libero.it...

Sicuramente non puoi risolvere il tuo problema con una query a campi
incrociati.
Ti consiglio di crearti una query di raggruppamento su Indirizzo e ricavarti
in un campo calcolato, con l'ausilio di una funzione in VBA, ciň che ti
serve.
Se la tabella che contiene i dati si chiama Tabella1, in un modulo del tuo
database memorizza la seguente funzione:
Public Function Nomi(Indirizzo As String) As String
Dim rst As DAO.Recordset
Nomi = ""
Set rst = CurrentDb().OpenRecordset("Tabella1")
rst.MoveFirst
Do Until rst.EOF
    If rst!Indirizzo = Indirizzo Then
        Nomi = Nomi & rst!Nome & ", "
    End If
    rst.MoveNext
Loop
Nomi = Left(Nomi, Len(Nomi) - 2)
Set rst = Nothing
End Function
Quindi creati una query di raggruppamento che abbia il seguente codice SQL:
SELECT Tabella1.Indirizzo, Nomi([Indirizzo]) AS TuttiNomi
FROM Tabella1
GROUP BY Tabella1.Indirizzo;
-- 
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

 in un campo calcolato, con l'ausilio di una funzione in VBA, ciņ che ti



Innanzitutto quando rispondi scrivi DOPO e non prima del testo dei messaggi
precedenti.
Per risolvere il tuo problema, nel codice del mio messaggio precedente
sostituisci la riga di codice VBA:
Nomi = Nomi & rst!Nome & ", "
con:
Nomi = Nomi & rst!Titolo & " " & _
rst!Nome & " " & rst!Cognome & ", "
[CUT]


 > in realtà ho tre campi id nella mia tebella1: Nome Cognome Titolo


 ha scritto nel messaggio
news:pVb2d.5336$2T6.1...@twister1.libero.it...

A quanto pare proprio non ti va di rispettare una regola di questo NG,
ovvero di scrivere DOPO e non prima del testo dei messaggi precedenti.
Ti anticipo che se continuerai a fregartene di rispettare tale regola, mi
vedrò costretto ad abbandonare il thread.
Non riesco a capire quale sia, nella tabella Sininimi il/i campo/i su cui va
fatto il raggruppamento ed i campi che vanno visualizzati in un unico campo
calcolato della query scanditi da una virgola.
Penso sia bene che tu ci indichi la struttura esatta della tabella e la
funzione che hanno nella query i vari campi.


 ha scritto nel messaggio
news:rqd2d.5727$zF3.1...@twister2.libero.it...

Prova... sono andato in fondo al messaggio e ho scritto...
se sta volta funziona ieri ero un po inebetito

 ha scritto nel messaggio
news:rqd2d.5727$zF3.1...@twister2.libero.it...

Spero di avere sbagliato io ma ero convinto di essere andato in fondo al
messaggio prima di scrivere. scusa
Nella tabella Sinonimi devo raggruppare 4 campi Famiglia,Genere,Specie,Razza
I campi che devo unire in un unico campo sono GenereS,SpecieS,RazzaS
mi ero espresso male. Grazie

 ha scritto nel messaggio
news:zUB2d.8054$zF3.1...@twister2.libero.it...

si avevo decisamente sbagliato io!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!scusate

 mi ero espresso male. Grazie
In un modulo del database memorizza questa funzione:
Public Function GenSpecRaz(Famiglia As String, _
Genere As String, Specie As String, _
Razza As String) As String
Dim rst As DAO.Recordset
GenSpecRaz = ""
Set rst = CurrentDb().OpenRecordset("Sinonimi")
rst.MoveFirst
Do Until rst.EOF
    If rst!Famiglia = Famiglia And rst!Genere = Genere _
    And rst!Specie = Specie And rst!Razza = Razza Then
        GenSpecRaz = GenSpecRaz & rst!GenereS & " " _
        & rst!SpecieS & " " & rst!RazzaS & ", "
    End If
    rst.MoveNext
Loop
GenSpecRaz = Left(GenSpecRaz, Len(GenSpecRaz) - 2)
Set rst = Nothing
End Function
e creati una query di raggruppamento che abbia il seguente codice SQL:
SELECT Famiglia, Genere, Specie, Razza,
GenSpecRaz([Famiglia],[Genere],[Specie],[Razza]) AS Espr1
FROM Sinonimi
GROUP BY Famiglia, Genere, Specie, Razza;
