Raggruppamento

di il
9 risposte

Raggruppamento

Ho un db così strutturato:
Cognome Nome indirizzo citta cod
Rossi Mario via cagliari Palermo 01
Rossi Mario via cagliari Palermo 09
Rossi Mario via cagliari Palermo 07
Rossi Mario via cagliari Palermo 11
Rossi Mario via cagliari Palermo 40
Rossi Mario via cagliari Palermo 74
Rossi Mario via cagliari Palermo 03
Bianchi Pino via ragusa Milano 35
Bianchi Pino via ragusa Milano 21
Bianchi Pino via ragusa Milano 04

vorrei riportare le informazioni su riga in questo modo:

Cognome Nome indirizzo citta cod cod1 cod2 cod3 cod4 cod5 cod6
Rossi Mario via cagliari Palermo 01 09 07 11 40 74 03
Bianchi Pino via ragusa Milano 35 21 04

é possibile ottenere questo risultato mediante una query?

Grazie

9 Risposte

  • Re: Raggruppamento

    Innanzitutto direi che dovresti strutturare su 2 tabelle. Una tabella Anagrafica che riporta tutti quei campi tranne Cod. Il resto...forse si può fare con una query...ma ne vale la pena? Potresti spiegare il significato del campo Cod?
  • Re: Raggruppamento

    La prima tabella ce l'ho già strutturata in quel modo, posso al limite crearne due tabelle una anagrafica ed una con i codici (prodotto).
    Quella che a me serve ottenere viene utilizzata da una serie di query e deve essere strutturata in quel modo, per ora essendo alle prime armi con l'access la ottengo con diversi passaggi in l'excel, quindi chiedevo se c'era un modo con l'access più veloce per ottenerla.

    Grazie di nuovo
  • Re: Raggruppamento

    Non puoi applicare lo stesso ragionamente che fai in Excel, in Access. Sicuramente devi avere la tabella Anagrafica. Se Cod si riferisca a Prodotto...non mi quadra ancora qualcosa.
    Di cosa parla il tuo database?
  • Re: Raggruppamento

    Ciao,
    con una query solamente la vedo un po' dura...
    ti mancano i campi...che si...possono essere aggiunti alla tabella esistente con altertable...
    ti consiglio di utilizzare VBA non è impossibile ottenere ciò che chiedi...
    se non sei pratico di recordset, vedo di buttarti giù qualcosa....
    facci sapere.
    un saluto.
  • Re: Raggruppamento

    No non ho nessuna esperienza ne di vba ne di recordset, mi sonno affacciato da poco nelle query con access.
    Se mi potessi dare dei suggerimenti a riguardo te ne sarei grato.
  • Re: Raggruppamento

    Ti consiglio di non prendere in considerazione questa ipotesi. Una relazione uno-a-molti sta lì a giustificare che i MOLTI potrebbero essere anche infiniti. Non puoi mica certo creare infiniti campi in ORIZZONTALE per fare quello che hai chiesto. È una logica organizzativa di visualizzazione dati che Access non gradisce affatto. Ti consiglio di creare una maschera/sottomaschera...
  • Re: Raggruppamento

    So che al massimo i codici in orizzontale ne possono essere 6, può essere più semplice gestirla in questo caso?

    Grazie
  • Re: Raggruppamento

    In linea teorica, anche sì, ma non hai mai dichiarato che cosa rappresenta quel Cod. I database, oltre a essere strumenti tecnici, hanno risvolti di scelta anche umani/strategici...non saprei. Per come la vedo io, i campi di una tabella devono essere OMOGENEI e STRETTAMENTE LEGATI al nome della propria tabella. Un campo Cod non mi suona nulla di familiare avere a che fare con i dati anagrafici di una Persona.
  • Re: Raggruppamento

    Ciao Jazz,
    premesso che l'impostazione del db presenta problemi di normalizzazione, ma passando da un database piatto come Excel ad un db relazionale, non la situazione non potrebbe essere differente.
    ti ho sviluppato una routine e provandola mi sembra faccia il suo lavoro...(l'ho provata e funziona).
    dove trovi tuaTabella scrivi il nome della tabella, imposta un id contatore numerico a numerazione automatica.
    dove trovi tuaQuery imposta una query di selezione ordinata per cognome con ordinanamento crescente su tuaTabella.

    un saluto e facci sapere!

    ps. manca in toto la gestione errori....magari sviluppala in autonomia-
    
    Sub jazz2()
    
    Dim rst As DAO.Recordset
    Dim rst1 As DAO.Recordset
    Dim strNome As String
    Dim strCognome As String
    Dim strField As String
    Dim i As Integer
    
    Set rst = DBEngine(0)(0).OpenRecordset("tuaTabella", dbOpenDynaset)
    Set rst1 = DBEngine(0)(0).OpenRecordset("TuaQuery", dbOpenDynaset)
    
    With rst1
        .MoveLast
        .MoveFirst
        Do While Not .EOF
            strField = "cod"
            strNome = .Fields("nome")
            strCognome = .Fields("cognome")
            For i = 0 To 6
                rst.FindFirst "nome='" & strNome & "' and cognome='" & strCognome & "'"
                If i > 0 Then strField = "cod" & i
                If Not rst.NoMatch Then
                    rst.Edit
                    rst.Fields(strField) = .Fields("id")
                    rst.Update
                    .MoveNext
                End If
            Next
          rst.MoveNext
         Loop
        End With
    Set rst1 = Nothing
    Set rst = Nothing
    
    End Sub
    
    
    
Devi accedere o registrarti per scrivere nel forum
9 risposte