Newsgroup: it.comp.appl.access
Titolo: Raggruppamento righe tabella

Salve,
Ho la tabella DESCRIZAGGCLIFOR dove ho i campi:
 
codice_cli_for (testo 6 caratteri)
Num_riga (testo 3 caratteri)
riga_descrizione_cli (testo 40 caratteri)
 
vi sono più rige di note per ogni cliente. Es:
 
  codice_cli_for Num_riga   riga_descrizione_cli
    000001          001     Contattare il sig. Rossi
    000001          002     ricordargli che i prezzi
    000001          003     sono da considerarsi +iva
 
 
Vorrei raggrupparli in una nuova tabella chiamata note così composta
 
codice_cli_for (testo 6 caratteri)
note (memo) composta dalle righe riga_descrizione_cli separate da VbCrLf
 
Come posso farlo, mantenendo tutti i dati? (alcuni clienti hanno anche 
40 righe di note).
 
Vi ringrazio anticipatamente.
 
Saluti.
 
Stefano

Salve,
 
Stefano ha scritto:

Puoi p.e. usare il codice di Allen:
 
http://www.allenbrowne.com/func-concat.html
 
 
e aggiornare la tabella con il risultato della query.
 
-- 
Ciao
Karl
*********
http://www.AccessDevCon.com
 
Access FAQ: 
http://www.donkarl.com/it
 

 e aggiornare la tabella con il risultato della query.
 
Ho incollato la funzione nel modulo, poi ho creato un form con un campo 
e ho inserito una casella di testo e come origine ho messo:
=ConcatRelated("[Riga_Descrizione_Cli]";"DESCRIZAGGCLIFOR]";"[Codice_Cli_For] 
='000002'")
 
Però non mi restituisce i valori.
Ho sbagliato qualcosa?
 
Ti ringrazio.
 
Saluti.
 
Stefano


Anvedi, anche tu alle prese con Esatto
Com'e' che leggi i dati?
Driver odbc? Librerie particolari?
 
 

 Driver odbc? Librerie particolari?
 
 
Driver odbc

 
 
Ho risolto in un modo un po grezzo, ma ha funzionato.
Esatto mette dei codici non visibile al termine della riga per cui, ho 
preso la tabella DESCRIZAGGCLIFOR, l'ho esportata in excel e poi l'ho 
reimportata in access.
Ho quindi creato un form che passasse i records aggiungendo un campo 
memo chiamato note
 
Ho messo un pulsante con il seguente codice
 
While Me.Codice_Cli_For > "000000"
If Me.Num_Riga = "001" Then
     annotazione = Me.Riga_Descrizione_Cli
Else
     annotazione = annotazione & vbCrLf & Me.Riga_Descrizione_Cli
End If
     Me.note = annotazione
     DoCmd.GoToRecord , , acNext
Wend
 
Al termine, ho creato una query
SELECT Note.Ind_ClienteFornitore, Note.Codice_Cli_For, 
Last(Note.Num_Riga) AS UltimoDiNum_Riga, Last(Note.note) AS UltimoDinote 
INTO annotazioni
FROM [Note]
GROUP BY Note.Ind_ClienteFornitore, Note.Codice_Cli_For
ORDER BY Note.Ind_ClienteFornitore, Note.Codice_Cli_For, 
Last(Note.Num_Riga);
 
ha quindi creato una tabella chiamata annotazioni, con i dati che mi 
servivano.
 
Ringrazio tutti per il vostro interessamente.
 
Saluti.
 
Stefano

 Ho sbagliato qualcosa?
 
Sì, hai dimenticato la parentesi quadra prima di DESCRIZAGGCLIFOR. Peró 
basta anche:
 
=ConcatRelated("Riga_Descrizione_Cli";"DESCRIZAGGCLIFOR";"Codice_Cli_For='000002'")


 
 
Grazie mille. Proverò anche così, mi sa che ne dovrò modificare altre 
tabelle di altri clienti. Così è più veloca.
 
Ciao.

on 07-08-19, Stefano supposed :

Prova questa:
====================================================
Public Sub TrasferimentoNote()
Dim RS1 As Recordset, RS2 As Recordset
Dim SQL, RS3 As Recordset, NewNote As String
 
SQL = "SELECT DESCRIZAGGCLIFOR.codice_cli_for, 
Count(DESCRIZAGGCLIFOR.codice_cli_for) AS CountOfcodice_cli_for "
SQL = SQL & "FROM DESCRIZAGGCLIFOR GROUP BY 
DESCRIZAGGCLIFOR.codice_cli_for;"
 
Set RS1 = CurrentDb.OpenRecordset("DESCRIZAGGCLIFOR", dbOpenDynaset)
Set RS2 = CurrentDb.OpenRecordset("Note", dbOpenDynaset)
Set RS3 = CurrentDb.OpenRecordset(SQL, dbOpenDynaset)
 
Do Until RS3.EOF
    Do Until RS1.EOF
        If RS3![codice_cli_for] = RS1![codice_cli_for] Then
            NewNote = NewNote & RS1![riga_descrizione_cli] & vbCrLf
        End If
        RS1.MoveNext
    Loop
    RS2.AddNew
    RS2![codice_cli_for] = RS3![codice_cli_for]
    RS2![note] = NewNote
    RS2.Update
    NewNote = vbNullString
    RS1.MoveFirst
    RS3.MoveNext
Loop
 
End Sub
===============================================
 
Bruno