Spostamento campi e contenuto in tabelle collegate di Access

Anonimo
2020-02-07T14:37:30+00:00

Ciao a tutti. 

Ho trasformato per esigenze lavorative una serie di fogli Excel che venivano usati impropriamente per archiviare e gestire le anagrafiche cli/for in un DB Access. Ho così creato mediante procedura guidata un DB relazionale. Il lavoro di aggregazione dati purtroppo è lungi dall’essere finito, poiché a causa dell’utilizzo di Excel le relazioni molti-a-molti hanno per forza di cose generato una quantità assurda di record. 

P.es. un’azienda cliente che tratta più brand o che tratta diverse tipologie di prodotto era divisa su più righe di Excel, e quindi ciò ha aumentato a dismisura il numero di record anche una volta trasportato il tutto su Access. Forse non ho seguito il metodo migliore per portare tutto su Access, ma.. 

In ogni caso ora credo la struttura del DB sia corretta; sui dati abbiamo ancora molto da lavorare per ridurre e “accorpare” i record, ma questo è un lavoro manuale.

Il quesito che vi pongo è il seguente:

Su Excel il Nome, Cognome e Ruolo del contatto interno dell’azienda stava su una stessa riga insieme ai dati anagrafici dell’azienda. Più contatti esistevano, più si moltiplicavano le righe.

Ho creato la Tabella Contatti che contiene i contatti di ogni azienda, collegata alla Tabella Anagrafiche mediante una tabella di collegamento “TLAzContatti”. Avendo costruito un DB relazionale ho ora la necessità di spostare i campi “Nome”, Cognome”, “Ruolo_ID” e i relativi contenuti dalla Tabella “Anagrafiche” alla Tabella “Contatti”.

Immagino ciò si possa fare con una query di selezione, quindi di accodamento e quindi una di eliminazione, e in ultimo con l’eliminazione dei campi dalla Tabella Anagrafiche. Ho però qualche dubbio al riguardo.

Mi date qualche consiglio?

Grazie anticipatamente a tutti per l’attenzione

Alberto

Ecco il collegamento al DB

https://1drv.ms/u/s!AtZa5okJIOVOhuYHCoaA9HuU0rd-bw?e=Ti5BCC

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2020-02-20T15:36:09+00:00

Ciao,

tutte le query che sono servite alla normalizzazione non ti servono più e le puoi eliminare.

Mimmo

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2020-02-20T11:13:28+00:00

Non conoscendo i dati reali probabilmente credevo fosse un campo discriminante per essere utilizzato nella query QUpd_AnagCont come segue:

UPDATE Anagrafiche INNER JOIN Contatti ON (Anagrafiche.COGNOME = Contatti.COGNOME) AND (Anagrafiche.NOME = Contatti.NOME) AND (Anagrafiche.IdentLista_ID = Contatti.IdentLista_ID) SET Contatti.Id_Anagrafiche = [Anagrafiche].[ID_Anagrafiche];

e che Cognome e Nome potessero essere ripetuti quindi non discrimuìinanti, Non sapevo che i valori di IdentLista_Id fossero ripetuti così tanto.

Ciao e alla prossima, Mimmo.

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2020-02-19T20:25:22+00:00

Ciao,

A questo punto nella tabella Anagrafiche puoi eliminare i campi NOME COGNOME e RUOLO.

Nella tabella Contatti puoi eliminare il campo IdentLista_ID. 

Nelle relazioni puoi legare le tabelle Anagrafiche e Contatti sui campi Id_Anagrafiche. Il problema di aver definito le relazioni nasce dal fatto che dovevi ancora operare delle normalizzazioni.

Ho notato nella copia del tuo DB che hai impostato il flag di compattamento alla chiusura, sarebbe meglio non farlo ed operare il compattamento di tanto in tanto dopo aver operato modifiche consistenti.

Se vuoi realizzare maschera con sottomaschera, a prescindere dall'aver definito una relazione tra Anagrafica e Contatti, la gestisci con campo master e campo figlio nella sottomaschera.

Ti ricordo infine che il modo migliore di operare con Access è quello di dividere il DB in due. Il Back-end contenente le tabelle ed il Front-end con  tutti gli altri oggetti. Il Back-end viene posizionato su di un servente (server o pc) che lo condivide ed il Front-end su ciascuna postazione utente.

Questo ti permette di avere pochi problemi nel caso di nuove implementazioni (sempre che non interessino la struttura delle tabelle).

Ciao Mimmo

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2020-02-18T19:53:07+00:00

ciao Alberto,

ho ripercorso passo passo le indicazioni che ti avevo suggerito del 10.02 ore 10.19.10 e ottengo il risultato che trovi qui---> dbRelazionato.

Prova a valutare se rispecchia quanto richiedi in pochi secondi le queries vengono eseguite.

Ciao, Sandro.

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento

28 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2020-02-09T15:13:51+00:00

    Ciao Sandro,

    grazie della risposta come sempre!

    Mi sono reso conto che stavolta non sono riuscito a spiegarmi bene.

    Il supporto che vi chiedo non è nel lavoro di riduzione record della tabella Anagrafiche, che per forza di cose (a causa della qualità scadente dei dati di base in excel che non ho fatto in tempo a uniformare per bene, specialmente nei campi a inserimento "libero" quali p.es. la ragione sociale) deve essere ahimè manuale...

    Quello su cui vi chiedo aiuto è su come spostare dalla tabella Anagrafiche alla Contatti i seguenti campi con i relativi contenuti:

    • Nome
    • Cognome
    • Ruolo_ID

    Prendiamo come esempio i record 1 e 2 del DB in oggetto, di cui aggiorno il link qui sotto in fondo:

    Voglio mantenere nella Anagrafiche il record 1 (la Falkun ltd), mentre voglio spostare nella tabella Contatti, mantenendo la relazione tra Anagrafica e Contatto (cioè tra azienda e contatto), i campi Nome, Cognome, Ruolo_ID con i relativi contenuti

    Prendiamo ad esempio il record 1 e 2. Ossia i contatti dell'azienda Falkun ltd "Marc Luc" e "Roger Frais" e i loro attributi (nome, cognome e ruolo) devono essere spostati nella tabella Contatti.

    Lo stesso dicasi per i record 3 e 5 della tabella Anagrafiche

    Quindi alla fine degli spostamenti dovranno essere eliminati anche i campi stessi dalla tabella Anagrafiche (Nome, Cognome, Ruolo_ID).

    Credo si debba fare con una query di selezione, quindi di accodamento, quindi di eliminazione. Non ho però le idee chiarissime, anche perchè non so programmare componendo codice SQL o VBA.

    Spero ora di esser stato chiaro.

    Grazie per la pazienza!

    Ecco il link al DB:

    https://1drv.ms/u/s!AtZa5okJIOVOhuYIusJKzWYk0xyDiQ?e=IpFdCE

    La risposta è stata utile?

    1 persona ha trovato utile questa risposta.
    0 commenti Nessun commento