Importare dati da Excel in tabelle con relazioni

di
Anonimizzato12012
il
30 risposte

Importare dati da Excel in tabelle con relazioni

Buongiono,

sono una newentry di access, ho la necessità di popolare le tabelle di un DB con dati provenienti da Excell.

attraversoi wizard di access è possibile importare i fogli di excell in tabelle di access, una volta imporati i dati all'interno di access ,dovrei, con una querry di accodamento e una di aggiornamento (che non riesco a fare) trasferire tutti i dati nuovi o modificati in una tabella strutturata con relazioni ad altre tabelle del DB.

premetto che quanto scritto sotto lo applicherò 'copia ed incolla su più campi del DB e su più tabelle costruite in modo analogo su cui mi si ripresnta lo stesso problema di importazioni dati.

saltando il passaggio dove faccio l'importazione periodica da Excell, vi spiego brevemente come sono 'composti' i dati:

esempio:
Tabella dati importati Xls (da cancellare e ri-scrivere periodicamente)
- ID(chiave primaria automatica di access);
- nome(testo);
- cognome(testo);
- codice interno (Testo chiave primaria proveniente da altro sistema);
- citta(testo)

tabella con relazioni (archivio permante seve per l'anagrafica del DB)
- ID(chiave primaria automatica di access);
- nome(testo);
- cognome(testo);
- codice interno (Testo chiave primaria proveniente da altro sistema);
- ID_citta(chiave esterna)

tabella Citta
- ID_Citta(chiave primaria)
- Citta(testo)

quello che vorrei fare con le due querry

(accodamento)
se nella tabella importata da xls nel campo [codice interno] compare il un valore non presente nella colonna [codice interno] della tabella di archivio tutta la riga deve essere aggiunta alla tabella archivio

(aggiornamento)
se nella tabella importata da xls nel campo [codice interno] compare il un valore uguale ad uno già presente nella tabella archivio, devo aggiornare tutti i campi che anno subito mutazioni.
(esempio: il signor rossi cambia nome)
aggiornare nella tabella archivio il valore corretto di ID_Citta(chiave estena) in base al valore presente nella tabella importata di xls citta(testo)


probabilmente non ho usato le parole giuste, perchè non sono riuscito a trovare casi analoghi, potete indicarmi casi in cui questo tipo di problema si è già presentato e come risolverlo.

Grazie in anticipo

30 Risposte

  • Re: Importare dati da Excel in tabelle con relazioni

    Ciao,

    Un primo consiglio che posso darti che non so se ti servira' e' di pensare se puo' convenirti invece di importare i fogli excel di collegarli.

    Collegandoli hai il vantaggio che ogni modifica che fai su excel te la ritrovi anche su access.

    Non so se puo' fare al caso tuo perche' ho letto velocemente il tuo problema... Fammi sapere
  • Re: Importare dati da Excel in tabelle con relazioni

    Grazie per la celere riposta

    purtroppo non il foglio collegato in xls non mi torna utile, perchè i dati li 'ottengo' da un altro sistema e devo importare solo i cambiamenti e i record nuovi.

    la scelta di usare access è data dalla necessità di 'conservare in modo integrale' i dati rendendoli uniformi e possibilmente più solidi.

    se uso un xls sono sicuro che qualcuno mi scriverà ad esempio: nome mario, cognome rossi, citta: 'vive a diceci chilometri a sud di roma in un maniero abbandonato' XD

    inoltre sarei costretto a fare cercaverticale tra un XLS di archivio e i nuovi file con aggiornamenti
    perdendo il 'vantaggio' delle tabelle con relazioni esterne
    e nel caso di uso condiviso e/o trasferimenti del DB può dare parecchi problemi
  • Re: Importare dati da Excel in tabelle con relazioni

    Ok

    Quindi tu cosa non riesci a fare le 2 query di aggiornamento e inserimento? Ma non ti funzionano o non sai come impostarle?
  • Re: Importare dati da Excel in tabelle con relazioni

    Non mi funzionano perchè non so come impostarle

    so che esistono le maschere guidate per fare le querry o che possso farle da 'visulizzazione struttura' o visulizzazione SQL

    ma poi sono come un albero in autunno

    non so in che ordine 'pescare' i parametri delle tabelle e non so impostare correttamente i criteri ne che operatori utilizzare = <> \ * !=
  • Re: Importare dati da Excel in tabelle con relazioni

    Mmm

    Ci sono sicuramenti vari modi per approcciare il problema. Uno potrebbe essere tramite codice vba ma poiche' hai detto che sei nuova lo eviterei.

    Potrei consigliarti di impostare il problema nel seguente modo :

    Come hai detto, hai una tabella temporanea che viene periodicamente sovrascritta con i nuovi dati e poi hai delle tabelle di storage permanenti.

    Ogni volta che ricevi nuovi dati (excel) dovresti pulire la tabella temporanea in access eliminando tutti i record che c'erano e inserire questi nuovi dati. I dati delle tabelle dovranno avere un campo ad esempio matricola che li accomunera.

    A questo punto nella tabella temporanea hai i nuovi dati, devi fare una query che per ogni dato della tabella temporanea va a vedere se tale dato e' presente nella tabella permanente verificando ad esempio se la matricola gia c'e'.

    Se, il nuovo record non dovesse essere presente, devi fare una query di "Accodamento"

    Insert into TabPermanente(...) nuovo record.

    Se la prima query ti ha fatto risaltare il fatto che il record gia era presente allora devi fare una seconda query

    Che va a verificare se a parita di matricola i dati sono diversi.

    Se sono diversi allora farai una query di "Aggiornamento" UPDATE TabPermanente set... where...

    Questo puo' essere un modo di agire...

    Scusami se mi sono dilungato un po... Ma e' piu breve a farsi che a scriverlo...

    Fammi sapere
  • Re: Importare dati da Excel in tabelle con relazioni

    Io non ho capito qualche passaggio nell'esposizione del problema.
    "Tabella dati importati Xls" rispecchia tale e quale la tabella di Excel e tu l'hai importata di sana pianta in Access e risulta come tabella in Access.
    "tabella con relazioni" e "tabella Città" sono 2 tabelle che vorresti ottenere come risultato finale.
    È questo quello che vuoi tu?
  • Re: Importare dati da Excel in tabelle con relazioni

    Ok siamo sulla stessa lunghezza d'onda

    codice interno e una chiave primaria del altro sistema quindi è univoca (equivale alla matricola del tuo esempio) ed è presente sia nella tabella di archivio che in quella importata volta su volta

    se voglio aggiornare di volta in volta il campo nome

    non capendo molto di query

    Pseudo codice ON:

    aggiorna: [tab_archivio].[nome]
    con: [tab_imp].[nome]
    se: [tab_Archivio].[codice_interno]=[tab_imp].[codice_interno]
    AND [tab_Archivio].[nome]<>[tab_imp].[nome]

    questo per il nome, se devo controllare anche il cognome nella stessa query ??

    è poi rimane il più difficile:

    confrontare il valore di [tab_imp].[città] con il valore a cui punta [tab_archivio].[ID_città]
    visto che uno è un dato Testo e il secondo è un dato numerico (ID)

    Pseudo codice OFF:

    per la querry di accodamento accetto suggerimenti .... tipo clicca qui, clica li scrivi così scrivi cosà

    Help
  • Re: Importare dati da Excel in tabelle con relazioni

    Esatto Osvaldo !

    la tabella importata da xls (cambia di volta in volta) alcuni record rimarranno identici
    ne compariranno di nuovi e alcuni potrebbero essere stati modificati

    vorrei capire come 'fabbricare' dalla tabella importata i nuovi record da aggiungere nelle due tabelle permanti [tab_archivio] e [tab_citta] che sono collegate con una relazione 1 a molti

    (una citta può corrispondere a molte persone della tabella tab archivio)

    il problema che mi separa dal risultato è che sono ignorante !

    Sensei istruiscimi
  • Re: Importare dati da Excel in tabelle con relazioni

    Allora,

    devi inanzitutto creare 2 query di check.

    La prima query di check andra' a vedere se nella tabella temporanea vi sono dei nuovi record non presenti nella tabella permanente.

    Tale query puoi impostarla cosi : tu hai : TabTemporanea e TabPermanente

    ha questo punto fai una query con LEFT JOIN per [codice interno] in questo modo ti verranno restituiti tutti i dati della TabTemporanea e solo quelli della TabPermanente che matchano. Cosi avrai la palese evidenza dei record nuovi. Dei campi di TabTemporanea che non hai trovato corrispondenza nella tabella permanente fai una query di Accodamento nella tabella permanente... (o fai una query o li copi e incolli per capirci )
    A questo punto rilanci la query di check e non ci dovrebbero essere campi che non joinano.

    La seconda query di check che devi implementare dovrebbe essere cosi :
    tu hai : TabTemporanea e TabPermanente
    Fai un LEFT JOIN per TUTTI i campi delle 2 tabelle (che sono uguali)
    La query ti restituira tutti i record della tabella temporanea e solo quelli che sono identici nella tabella permanente. A questo punto hai l'evidenza dei record che sono mutati e di tali record farai una query di aggiornamento

    E il gioco e' fatto...
  • Re: Importare dati da Excel in tabelle con relazioni

    Ok adesso provo a fare qualche esperimento con gli esempi che trovo su internet per capire la sintassi di join

    rimango un po perplesso, in questo modo riesco a confrontare anche [ID_Citta] e [citta] delle 2 tabelle ???
  • Re: Importare dati da Excel in tabelle con relazioni

    Si ti consiglio di capire almeno di cosa parliamo... Pensavo conoscessi il join...

    Informati un po sul web poi se ti serve qualcosa chiedi pure

    Ciao
  • Re: Importare dati da Excel in tabelle con relazioni

    La risposta di Bomberdini dovrebbe funzionare. Però continuo a non capire a cosa ti serve la tabella di Excel e la tabella provvisoria una volta che hai fatto questo passaggio. Io continuerei a lavorare sempre e soltanto con le 2 tabelle permanenti.
  • Re: Importare dati da Excel in tabelle con relazioni

    Bene qualche progresso c'è

    per rispondere a Bomberdini
    diciamo che sono un utente che se installa Office Pro non si lamenta perchè access occupa spazzio su C:, per quanto rigurada il mio KowHow bhe non è difficile capire che non sono il proprio il primo.

    per OsvaldoLaviosa
    le due tabelle permanti servono perchè sono il database, quella provvisoria è solo un punto fisso per le query che mi dovranno popolare (periodiocamente) il database.

    (nota la tabella provvisoria contiene 1500 record, quella permante contiene già gli stessi dati)

    cmq

    ho modificato 1 cella di una colonna specifica(tabella provvisoria) per verificare il funzionamento delle query.


    ho fatto una prova con di LEFT JOIN su [codice interno] selezionado solo 1 colonna per tabella
    criterio: i parametri contenuti devono essere diversi

    !i nomi differiscono da quegli degli esempi precedenti, ma è quello su cui sto lavorando.

    codice [Querry1]:
    SELECT [Anagrafica-con relazioni].[Descrizione Articolo], Anagrafica.[Costo Ultimo Acquisto Per Magazzino], [Anagrafica-con relazioni].[Costo Ultimo Acquisto Per Magazzino]
    FROM Anagrafica LEFT JOIN [Anagrafica-con relazioni] ON Anagrafica.[Codice Interno Articolo] = [Anagrafica-con relazioni].[Codice Interno Articolo]
    WHERE ((([Anagrafica-con relazioni]![Costo Ultimo Acquisto Per Magazzino])<>[Anagrafica]![Costo Ultimo Acquisto Per Magazzino]));

    risultato: 1 record trovato (quello su cui ho manomesso il dato)
    più o meno visualizzo questo:
    -> descrizione articolo | dato provvisorio (manomesso) |da aggiornare

    ovviamente ho fatto anche la querry di aggiornamento che funziona
    codice [querry2]:

    UPDATE Query1
    SET Query1.[Anagrafica-con relazioni].[Costo Ultimo Acquisto Per Magazzino] = [Query1].Anagrafica![Costo Ultimo Acquisto Per Magazzino];

    adesso continuo gli esperimenti
  • Re: Importare dati da Excel in tabelle con relazioni

    Mons ha scritto:


    per quanto rigurada il mio KowHow bhe non è difficile capire che non sono il proprio il primo.
    Non è un problema, siamo stati tutti principianti e nessuno sapeva esprimersi correttamente-tecnicamente. Continua pure a usare un linguaggio il più consono ai tuoi sensi

    Mons ha scritto:


    le due tabelle permanti servono perchè sono il database, quella provvisoria è solo un punto fisso per le query che mi dovranno popolare (periodiocamente) il database.
    Non capisco perchè non vuoi/puoi operare direttamente sulle tabelle permanenti, dopo il primo passaggio. Perdona la mia mentalità spudoratamente Access-iana.
Devi accedere o registrarti per scrivere nel forum
30 risposte