Importazione tabella Excel con rielaborazione e completamento dati in tabella Access

di il
8 risposte

Importazione tabella Excel con rielaborazione e completamento dati in tabella Access

Buongiorno,
ho una tabella excel che mi invia un fornitore con le seguenti colonne e relativi dati:
Attualmente contiene circa 2000 righe

una tabella access (Registro Rifornimenti) con i seguenti campi:
Nel database access ho le seguenti tabelle
Anagrafica Mezzi con i seguenti campi (IDMezzo – Targa – IDAutista – IDTessera)
Anagrafica Cisterne con i seguenti campi (IDCisterna – Codice Cisterna)
Anagrafica Tessere con i seguenti campi (IDTessera – Numero Tessera)

Il database ha lo scopo di realizzare un report basato sulla tabella Registro Rifornimenti
Quello che voglio fare è importare i dati della tabella excel sostituendoli/integrandoli con quelli di access.
Di seguito uno schema delle corrispondenze dei dati tra tabella EXCEL e gli stessi identici dati nelle TABELLE ACCESS
Il Numero Tessera è legato con IDTessera nell’anagrafica Tessere che a sua volta ha relzione con la tabella Anagrafica Mezzi in cui è presente l’IDMezzo, l’IDAutista
Mentre il Codice Cisterna è legato all’ IDCisterna
Vorrei che durante l’importazione o con successiva lavorazione ottenere il risultato come da seguente esempio

Ho cercato in rete, ma non ho trovato, probabilmente a causa della scarsa conoscenza della terminologia
Potete darmi qualche suggerimento?

8 Risposte

  • Re: Importazione tabella Excel con rielaborazione e completamento dati in tabella Access

    Beh non puoi trovare una cosa simile in rete, ma di certo trovi tutto per poterlo fare, le istruzioni singole... ma serve avere l'idea di come metterle insieme, e questo è KNOWHOW.

    La tabella Mezzi, è assurdo tu abbia usato un IDMezzo come PK quando la Targa è già una Chiave Univoca...
    La tabella Tessere, se il Numero Tessera è UNIVOCO ed assegnato sempre alla stessa persona è assurdo tu abbia usato un IDTessera come PK quando il NumeroTessera ha già le caratteristriche di Chiave Univoca...
    La tabella Cisterna... stesse considerazioni.

    Il sospetto che viene è che tu abbia usato come PK dei campi Counter a prescindere... senza valutare poi l'impatto della CONVERSIONE tra le 2 fonti, quindi se fosse possibile fossi in te valuterei seriamente la reale necessità di avere Tabelle di conversione... senza le quali non avresti il problema.

    Quello che ti succede ora è che devi fare un reverse engineering da Codice Cliente a Chiave...!
    Puoi valutare di fare una serie di Query UPDATE, oppure via Codice, aprendo un RS su Query che sfrutta l'autolookup tra le tabelle in JOIN e poi va a scrivere, sostituendo il valore di scambio.
  • Re: Importazione tabella Excel con rielaborazione e completamento dati in tabella Access

    Considera che la tabella Excel se ne infischia delle regole di normalizzazione che invece Access pretende. Presupposto che tu abbia un database Access normalizzato, devi procedere secondo i seguenti (possibili) steps:
    1. Importi tabella Excel in una tabella di comodo (anche non normalizzata) in Access.
    2. A questo punto devi trovare uno "stratagemma" per riversare i tuoi dati nelle tabelle normalizzate. La prima volta lo fai manualmente. Ma siccome questa operazione prevedi di farla continuativamente, ti serve automatizzare tutto a suon di query di accodamento e codici VBA cercando di cogliere i passaggi strategici per ottenere sempre lo stesso risultato che avevi ottenuto manualmente.
  • Re: Importazione tabella Excel con rielaborazione e completamento dati in tabella Access

    Ciao Alex e grazie della risposta
    La tabella Mezzi, è assurdo tu abbia usato un IDMezzo come PK quando la Targa è già una Chiave Univoca...
    hai ragione, sostituisco la PK con la Targa
    La tabella Tessere, se il Numero Tessera è UNIVOCO ed assegnato sempre alla stessa persona è assurdo tu abbia usato un IDTessera come PK quando il NumeroTessera ha già le caratteristriche di Chiave Univoca
    In passato ho avuto fornitori diversi che avevano lo stesso numero tessera per questo ho preferito usare una PK in caso in futuro mi ricapiti
    La tabella Cisterna... stesse considerazioni
    Hai ragione, sostituisco la PK con il numero cisterna
    Il sospetto che viene è che tu abbia usato come PK dei campi Counter a prescindere... senza valutare poi l'impatto della CONVERSIONE tra le 2 fonti, quindi se fosse possibile fossi in te valuterei seriamente la reale necessità di avere Tabelle di conversione... senza le quali non avresti il problema.
    Scusami, qui non ho chiaro cosa intendi dire
    Puoi valutare di fare una serie di Query UPDATE, oppure via Codice, aprendo un RS su Query che sfrutta l'autolookup tra le tabelle in JOIN e poi va a scrivere, sostituendo il valore di scambio
    Non è molto che uso Access, perdonami ma non capisco. Query Update è una query di aggiornamento e vado a vedermi come si fa, RS su Query che sfrutta autolookup tra le tabelle in JOIN(relazione) e poi va a scrivere, sostituendo il valore di scambio, per me questo è arabo, riesci a spiegarmi più semplicemente?
  • Re: Importazione tabella Excel con rielaborazione e completamento dati in tabella Access

    Monster88 ha scritto:


    Non è molto che uso Access, perdonami ma non capisco. Query Update è una query di aggiornamento e vado a vedermi come si fa, RS su Query che sfrutta autolookup tra le tabelle in JOIN(relazione) e poi va a scrivere, sostituendo il valore di scambio, per me questo è arabo, riesci a spiegarmi più semplicemente?
    Hai un bel po' di cose da imparare. Si tratta di mettere insieme molti tasselli, nel tuo caso affatto semplici. Non so se può aiutarti, questo link spiega come usare i recordset di tabelle/query e manipolarne i suoi dati usando codice VBA
    forum.masterdrive.it/access-79/access-leggere-scrivere-dati-nelle-tabelle-tramite-vba-dao-13176-print/
  • Re: Importazione tabella Excel con rielaborazione e completamento dati in tabella Access

    Ciao OsvaldoLaviosa e grazie per la risposta
    1. Importi tabella Excel in una tabella di comodo (anche non normalizzata) in Access.
    fatto
    2. A questo punto devi trovare uno "stratagemma" per riversare i tuoi dati nelle tabelle normalizzate. La prima volta lo fai manualmente. Ma siccome questa operazione prevedi di farla continuativamente, ti serve automatizzare tutto a suon di query di accodamento e codici VBA cercando di cogliere i passaggi strategici per ottenere sempre lo stesso risultato che avevi ottenuto manualmente.
    Il codici VBA ho iniziato da poco a "studiarlo" quindi non saprei neanche da dove partire.
    Avevo pensato di creare una query ma quello che non so come fare è dirgli confronta la targa della tabella di "comodo" con quello della tabella anagrafica mezzi e mettimi gli IDAutista, IDMezzo e IDTessera in tre colonne.

    Spero di essere stato chiaro
  • Re: Importazione tabella Excel con rielaborazione e completamento dati in tabella Access

    OsvaldoLaviosa ha scritto:


    Monster88 ha scritto:


    Non è molto che uso Access, perdonami ma non capisco. Query Update è una query di aggiornamento e vado a vedermi come si fa, RS su Query che sfrutta autolookup tra le tabelle in JOIN(relazione) e poi va a scrivere, sostituendo il valore di scambio, per me questo è arabo, riesci a spiegarmi più semplicemente?
    Hai un bel po' di cose da imparare. Si tratta di mettere insieme molti tasselli, nel tuo caso affatto semplici. Non so se può aiutarti, questo link spiega come usare i recordset di tabelle/query e manipolarne i suoi dati usando codice VBA
    masterdrive.it/access-79/access-leggere-scrivere-dati-nelle-tabelle-tramite-vba-dao-13176-print/
    Intanto grazie mille.
    Parto studiandolo, cercando di capire e provando
  • Re: Importazione tabella Excel con rielaborazione e completamento dati in tabella Access

    Buona sera,
    ho letto l'articolo che mi ha suggerito OsvaldoLaviosa e ho pensato in termini logici come dovrebbe essere la procedura per fare quanto richiesto.
    La posto di seguito, ditemi cortesemente se ho scritto un mucchio di scemenze o se potrebbe funzionare.
    Nel secondo caso proverò a buttare giù un pò di codice

    1. Importa dati in tabella di comodo
    2. Apro il DBCorrente
    3. Apro la tabella di Anagrafica Mezzi
    4. Apro la tabella di comodo
    5. Apro la tabella Registro Rifornimenti
    6. Apro la tabella Anagraficha Cisterne
    7. Nella tabella di comodo leggo il primo record del campo Data
    8. Setto una variabile data con il valore della data della tabella di comodo
    9. Nella tabella di comodo leggo il primo dato del campo LitriInterni
    10. Setto una variabile Litri con il valore dei LitriInterni della tabella di comodo
    11. Nella tabella di comodo leggo il primo dato del campo Km
    12. Setto una variabile con il valore dei km della tabella di comodo
    13. Nella tabella di comodo leggo il primo dato del campo Tessera
    14. Setto una variabile Tessera con il valore del campo Tessera della tabella di comodo
    15. Cerco il valore della variabile Tessera all'interno del campo Tessera della tabella Anagrafica Mezzi
    16. Leggo il valore del campo IDAutista e IDMezzo
    17. Setto il valore dell'IDAutista nella variabile omonima e faccio altrettanto con il valore dell’IDMezzo
    18. Nella tabella di comodo leggo il primo record del campo Pompa
    19. Setto una variabile Cisterna con il valore della Pompa della tabella di comodo
    20. Cerco il valore della variabile Cisterna all'interno del campo Codice Cisterna della tabella Anagrafica Cisterna
    21. Leggo il valore del campo IDCisterna
    22. Setto il valore dell'IDCisterna nella variabile omonima
    23. Creo un nuovo record nella tabella Registro rifornimenti
    24. Imposto il valore della variabile Data nel campo Data
    25. Imposto i valori delle variabili IDMezzo, IDAutista, Tessera, Km, Litri, IDCisterna
    26. Salvo il record
    27. Mi sposto al record successivo della tabella di comodo e ripeto la procedura dal punto 7 al punto 26 fino a quanto non ci sono più record nella tabella di comodo
    28. Elimino i dati della tabella di comodo
    29. Chiudo le tabelle
    30. Chiudo il database
  • Re: Importazione tabella Excel con rielaborazione e completamento dati in tabella Access

    Quello che hai scritto devi tradurlo in VBA e testarlo. I passaggi sono molti e qua e là potrebbe sbagliare anche un programmatore blasonato.
Devi accedere o registrarti per scrivere nel forum
8 risposte