Newsgroup: it.comp.appl.access
Titolo: Query - mettere su una riga vari record

Ho 2 tabelle: Prodotti (codprod, nome) e AltriDati (codprod, coddati).
Il mio problema è questo:
vorrei creare un campo in una query che mi includesse tutti i campi
[coddati] separati da virgola.
Mi spiego meglio: se la tabella prodotti contiene questi valori: (001,
carne) e se la tabella AltriDati questi valori (001, bovina; 001,
toscana; 001, fiorentina] io vorrei creare una query che mi mettesse in
una sola riga: [001], [carne], [bovina, toscana, fiorentina].
Mi sembra che sia possibile, ma purtroppo non so creare la funzione in
VBA.
Grazie a tutti quelli che mi saranno d'aiuto.

 ha scritto nel messaggio
news:1131701397.8...@f14g2000cwb.googlegroups.com...

Vai sul Sito Comune (link qui sotto) e nella Sezione Queries leggi la mia
FAQ intitolata "2.30 Unire in una query i valori dello stesso campo di
record diversi": in essa è affrontato e risolto un problema simile al tuo.
Basta apportare piccole modifiche alla funzione UnisciValori, come ad
esempio separare le parole da ", " invece solamente da uno spazio.
-- 
Roberto
-----------------------------------------------------
il Sito Comune di it.comp.appl.access
http://www.sitocomune.com
----------------------------------------------------

 ha scritto nel messaggio 
news:1131701397.8...@f14g2000cwb.googlegroups.com...
Ho 2 tabelle: Prodotti (codprod, nome) e AltriDati (codprod, coddati).
Il mio problema č questo:
vorrei creare un campo in una query che mi includesse tutti i campi
[coddati] separati da virgola.
Mi spiego meglio: se la tabella prodotti contiene questi valori: (001,
carne) e se la tabella AltriDati questi valori (001, bovina; 001,
toscana; 001, fiorentina] io vorrei creare una query che mi mettesse in
una sola riga: [001], [carne], [bovina, toscana, fiorentina].
Mi sembra che sia possibile, ma purtroppo non so creare la funzione in
VBA.
Grazie a tutti quelli che mi saranno d'aiuto.
Ciao Matrix,
mentre ti rispondevo ho letto anche il messaggio di Roberto da casa.
Fatti un giro sul suo esempio che č validissimo.
Io ho elaborato una soluzione a patto che tu inserisca un'altro campo( mi 
pare che non sia citato : codAltri e cioč un indice contatore per 
AltriDati).
di seguito la funzione che richiamerai per ogni codProd tu voglia
Public Function CreaLista(idPro As Long) As String
    Dim db As DAO.Database, rsProd As DAO.Recordset, rsAltri As 
DAO.Recordset
    Dim sFiltro As String, sProdotto As String
    Dim iQuanti As Integer, sRisultato As String
    Set db = CurrentDb
    '--------- cerco il prodotto e compongo il codice e nome -------
    sProdotto = "SELECT Prodotti.codProd, Prodotti.nome " & _
            "FROM Prodotti " & _
            "WHERE (((Prodotti.codProd)=" & _
            idPro & _
            "));"
    Set rsProd = db.OpenRecordset(sProdotto, dbOpenDynaset)
    rsProd.MoveFirst
    '..............
    sRisultato = "[" & Format(idPro, "000") & "]"
    sRisultato = sRisultato & ", [" & rsProd!nome & "], ["
    '..............
    '--------- ciclo su tutti gli altriDati
    sFiltro = "SELECT Prodotti.codProd, Prodotti.nome, altriDati.descr " & _
        "FROM Prodotti INNER JOIN altriDati ON Prodotti.codProd = 
altriDati.codProd " & _
        "WHERE (((Prodotti.codProd)=" & _
        idPro _
        & "));"
    Set rsAltri = db.OpenRecordset(sFiltro, dbOpenDynaset)
    'rsAltri.MoveLast
    iQuanti = rsAltri.RecordCount
    If iQuanti Then
        rsAltri.MoveFirst
        Do While Not rsAltri.EOF
             sRisultato = sRisultato & rsAltri!descr & ", "
            rsAltri.MoveNext
        Loop
    End If
    '----- tolgo l'ultima virgola (č in piů!)
    sRisultato = Left(sRisultato, Len(sRisultato) - 2)
    sRisultato = sRisultato & "]"
    '---------------- passo la stringa alla funzione
    CreaLista = sRisultato
End Function
-- 
... spero di esserti stato d'aiuto,
-- 
-- 
      /)/)               IVAN                (\/)
     (  '.')         NMCBRMC         ( '.' )
  o(_('')('')                               (")(")_)*
Non Microsoft Certified But Regular
             Microsoft Consumer

 Grazie a tutti quelli che mi saranno d'aiuto.
Io costruisco una query in struttura dove creo dei campi al volo che 
consistono nella concatenazione di piů campi dalla/e tabella/e che mi 
interessano, lo faccio in struttura query utilizzando l'operatore di 
concatenazione & 
Per es.: CampoNuovo: TABELLA1.campo1 & ", " & TABELLA1.campo2 
eccetera. Eventualmente utilizzo funzioni di conversione di tipo dati 
se necessario.
Trasformo in query di accodamento o come mi serve e copio l'SQL che 
incollo nel codice. Finora mi ha sempre funzionato.
Ciao, Luigi (FVG).
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 Posted via Mailgate.ORG Server - 
http://www.Mailgate.OR
Ciao Luigi,
mi sembrava di aver capito che la stringa deve essere costruita da tutti i 
Records presenti in AltriDati.
Non ho visto altra soluzione che ricorrere al codice.
Ivan