Newsgroup: it.comp.appl.access
Titolo: Dividere i dati di una tabella in due tabelle e collegarle

Ho un foglio excel con tutti i libri che ho a casa mia e voglio trasformarlo
in db access in quanto il numero di libri è diventato molto grande.
Il mio file excel è composto da queste colonne: nome autore, cognome autore,
nazione autore, titolo libro, anno, lingua, casa editrice.
io ho importato tutto in una tabella access che ho chiamato libri e fin qui
nessun problema.
Ora però per una migliore gestione vorrei dividere la tabella libri in due
tabelle collegate e cioè autori con solo i campi nome autore, cognome
autore, nazione autore e una seconda tabella libri in cui rimangono le
informazioni sui libri.
Come posso fare senza dover reinserire 700 libri o 700 autori?
Esiste qualche procedura per suddividere i dati della tabella e generare una
relazione tra le due nuove tabelle?
Naturalmente il problema è che ci sono molti autori di cui ho più di un
libro e quindi vorrei che questa relazione fosse 1 a molti.
Grazie mille

 ha scritto nel messaggio 
news:iTDsd.4484$Zk.1...@twister2.libero.it...

Ciao,
la cosa si può fare ma è molto lunga da spiegare.
In sintesi:
hai bisogno di contrassegnare ogni autore con un numero univoco: 
soluzione...una query raggruppata con i soli nomi, cognomi e nazione la fai 
diventare una query di accodamento ad una tabella con ID (contatore), 
Autore (testo 150 caratteri) e Nazione (Testo 100 caratteri). La tabella la 
crei prima ovviamente.
Nella tabella originale aggiungi un campo numerico (IDAutore) senza indici e 
la lasci vuota. Con una query ma molto meglio da codice inserisci l'ID della 
nuova tabella nel nuovo campo della vecchia tabella, lo stesso id per ogni 
Autore (cognome e nome) presente nella nuova tabella.
Risultato fino ad ora: Una tabella Autori con ID univoco e una tabella 
(vecchia) con IDAutore ora pieno.
A questo punto collega con relazione uno a molti la nuova tabella con la 
vecchia utilizzanto l'ID comune. Puoi eliminare i campi Cognome, Nome e 
Nazione dalla vecchia tabella.
Questo è solo uno spunto.
Ricorda di fare sempre una copia di riserva prima di lavorare col db.
Buon lavoro
Ciao, Carlo 

 Ciao, Carlo
Grazie mille
Paolo

 ha scritto nel messaggio 
news:QvFsd.4636$Zk.1...@twister2.libero.it...

Ok. Sei sulla strada giusta.
Un po' di sano e salutare codice.
Scrivi una query semplice mettendo in un unico campo le tre voci 
fondamentali: Identificativo:[Cognome] & " " & [Nome] & " " & [Nazione]. In 
pratica i tre campi comuni separati da spazi. Aggiungi anche il campo 
IDAutore (vuoto per ora), il tutto dalla vecchia tabella. Chiama questa 
query per esempio "SQIdentificativo".
Nuovo modulo. Nuova sub. Questo esempio prevede un riferimento a DAO.
Public Sub AccodaIDAutore()
Dim RCS As Recordset, RCSAutori As Recordset, i As Integer, ii As Integer
Dim MiaStringa As String
Set RCS = CurrentDb.OpenRecordset("SQIdentificativo")
Set RCSAutori = CurrentDb.OpenRecordset("Autori")
RCSAutori.MoveLast
RCSAutori.MoveFirst
For ii = 1 To RCSAutori.RecordCount
Do While True
    RCS.MoveLast
    With RCS
        For i = 1 To RCS.RecordCount
        MiaStringa = RCSAutori!Cognome & " " & RCSAutori![NomeAutore] & " " 
& RCSAutori!Nazione
        .FindFirst "Identificativo = '" & MiaStringa & "'" & " And 
Isnull([IDAutore])"
            If .NoMatch Then
            Exit Do
            End If
        .Edit
        !IDAutore = RCSAutori!ID
        .Update
        RCS.MoveNext
        Next i
    End With
    Exit Do
Loop
  RCSAutori.MoveNext
Next ii
RCSAutori.Close
RCS.Close
End Sub
Probabilmente dovrai cambiare qualche nome...ora tocca a te.
Ciao, Carlo