Precedente :: Successivo |
Autore |
Messaggio |
Crono Semidio
Registrato: 24/03/05 14:12 Messaggi: 224 Residenza: Trieste
|
Inviato: 09 Set 2005 12:52 Oggetto: * Collegare tabelle in un database Access |
|
|
Mi hanno dato un file mdb contenete diverse tabelle, ogni tabella contiene i nomi delle vie, piazze, ecc. di una città e mi hanno chiesto di creare un ulteriore tabella che contenga degli indirizzi in cui i nomi delle vie siano prelevati dalle tabelle esistenti, si può fare ?
E se si come ? |
|
Top |
|
|
SverX Supervisor Macchinisti
Registrato: 25/03/02 11:16 Messaggi: 11559 Residenza: Tokelau
|
Inviato: 09 Set 2005 13:07 Oggetto: |
|
|
aggiungi un campo chiave identity sulla tabella delle vie e metti un campo che contenga (che punti alla...) la chiave suddetta nella tabella degli indirizzi...
... se ho capito bene la domanda |
|
Top |
|
|
Gateo Dio maturo
Registrato: 17/11/03 18:16 Messaggi: 12379
|
Inviato: 09 Set 2005 13:33 Oggetto: |
|
|
Mi pare che tu debba fare una query, piu' che una tabella, visto che parli di "diverse tabelle con indirizzi" da cui ottenerne un'altra.
Pero' bisogna capire il criterio di scelta per tali indirizzi. |
|
Top |
|
|
Lorenzo Eroe in grazia degli dei
Registrato: 25/08/05 11:53 Messaggi: 105
|
Inviato: 09 Set 2005 13:35 Oggetto: |
|
|
Se la domanda è: la nuova tabella deve contenere gli indirizzi che siano SOLO quelli della tabella con gli indirizzi già scritti, allora puoi fare una maschera di inserimento (c'è la funzione guidata) e nel campo da compilare con l'indirizzo gli dici che l'origine dei dati è la tabella con gli indirizzi già scritti e in più vincoli la scelta del menù a tendina con il blocco "SOLO IN ELENCO" o qualcosa di simile.
Avrai una tabella compilata tramite la maschera con riportati solo gli indirizzi contenuti nella tabella esistente.
Ciao |
|
Top |
|
|
Lorenzo Eroe in grazia degli dei
Registrato: 25/08/05 11:53 Messaggi: 105
|
Inviato: 09 Set 2005 13:36 Oggetto: |
|
|
Che è poi la query suggerita da Gateo e che mi ha "battuto in velocità" nella risposta....
Ciao |
|
Top |
|
|
ulisse Dio maturo
Registrato: 02/03/05 01:09 Messaggi: 1531 Residenza: Bagnone (MS)
|
Inviato: 09 Set 2005 17:25 Oggetto: Re: Collegare tabelle in un database Access |
|
|
Crono ha scritto: | Mi hanno dato un file mdb contenete diverse tabelle, ogni tabella contiene i nomi delle vie, piazze, ecc. di una città e mi hanno chiesto di creare un ulteriore tabella che contenga degli indirizzi in cui i nomi delle vie siano prelevati dalle tabelle esistenti, si può fare ?
E se si come ? |
Prendendo alla lettera la tua richiesta l'operazione che chiedi deve essere eseguita una sola volta per popolare una tabella che potrebbe essere, che so, un'anagrafica clienti (così la chiamerò nel seguito per intenderci meglio).
Questo comporta velocità di estrazione dei dati (tutti i dati necessari sono già memorizzati nell'anagrafica) ma ridondanza di dati (lo stesso nome di via è ripetuto in chissà quanti record) e difficoltà di mantenimento.
Solitamente è una tecnica fortemente sconsigliata da tutti.
La soluzione comunemente adottata è quella di mettere in relazione (come ti è stato suggerito nelle precedenti risposte) l'anagrafica clienti con la tabella degli indirizzi.
E' già stato notato, però, che tu hai a disposizione una tabella di indirizzi per ogni città.
Per superare la difficoltà puoi agire in almeno tre modi.
In tutti e tre i casi, però è necessario che le tabelle con gli indirizzi abbiano struttura identica per cui, se ciò non è, ti conviene omogeneizzare il tutto (a manina) prima di procedere oltre.
Il primo modo consiste nel creare una nuova tabella di indirizzi che popolerai accodando tutti i record provenienti da tutte le tabelle contenenti gli indirizzi. (ricordati di aggiungere un campo che specifichi la città alla quale la via appartiene altrimenti è un casino!)
Dopodichè puoi creare la relazione seguendo le indicazioni già fornite.
Il limite di questa soluzione risiede nel numero di record che questa nuova tabella conterrà dopo l'operazione di unificazione.
Oppure puoi creare una query di unione e poi metti in relazione l'anagrafica clienti con la query. (la differenza col metodo precedente sta nel fatto che nel primo caso gli indirizzi unificati sono memorizzati in una tabella mentre nel secondo caso l'unificazione viene eseguita ogni volta che cerchi di decodificare il codice della via e il risultato parcheggiato temporaneamente in memoria).
Il limite di questa operazione risiede nel tempo speso per eseguire la query ogni volta che devi decodificare un indirizzo.
La terza soluzione richiede la scrittura di un po' di codice. Con qualche istruzione SQL puoi fare in modo che la decodifica dell'indirizzo vada a puntare su una tabella indirizzi diversa a seconda della città in esame.
Questo tra l'altro implica che l'anagrafica clienti contenga non solo il campo in cui memorizzare il codice della via ma anche il codice della città (altrimenti il programma non sa in quale tabella cercare la decodifica dell'indirizzo).
Personalmente io userei la prima soluzione.
Devi fare un po' di sbattimento per razionalizzare il database ma poi avrai più ordine e, quando si tratterà di visualizzare i dati in un report o in una maschera ne guadagnerai in prestazioni.
Che io sappia uno stradario nazionale non è così drammaticamente grande e access se lo sa gestire adeguatamente. |
|
Top |
|
|
holifay Dio maturo
Registrato: 08/03/05 09:48 Messaggi: 2912 Residenza: Milano
|
Inviato: 09 Set 2005 21:25 Oggetto: |
|
|
Segui le istruzioni che ti hanno dato. Ti allego qualche foto esplicativa che ti aiuti a capire.
Qui sono le ipotetiche 2 tabelle (vie e indirizzi) in mdalità struttura. La seconda la puoi già collegare alla prima andando sulla vista "Ricerca"
Poi inserisci i nomi delle vie nella tabella "vie" ed apri la tabella "indirizzi" in modalità normale il risultato è quello che vedi:
|
|
Top |
|
|
|