Caricare dati da Excel

di il
14 risposte

Caricare dati da Excel

Io ho una tabella chiamata Clienti. E dovrei implementare una maschera che mi faccia caricare un file excel in un'altra tabella chiamata Clienti attivi con campo Filiale e Cliente, questa tabella verrà aggiornata tutti mesi e che successivamente mi servirà per estrapolare informazioni dalla tabella Clienti solo dei clienti attivi in un determinato mese.
Cosa mi consigliate?
Vi ringrazio in anticipo per le risposto.

14 Risposte

  • Re: Caricare dati da Excel

    Puoi spiegare cosa intendi per "Clienti attivi"? Immagino che servirebbe acquisire informazioni da una eventuale tabella figlia...ma dovresti raccontare tutto più dettagliatamente.
  • Re: Caricare dati da Excel

    Praticamente ho questo database che contiene una serie di informazioni legate a tutti i clienti, quindi sia quelli cessati che quelli attivi. Ho bisogno di vedere solamente i clienti attivi. Il problema è che l'elenco dei clienti attivi si trova in un file excel che ha due colonne la Filiale e il Nome cliente che viene aggiornato tutti i mesi. Io presumo che dovrò creare una Tabella Clienti attivi che ha i campi Filale e Nome Cliente, nella quale tutti i mesi andrò caricare il contenuto del file excel. Io volevo capire come posso caricare il contenuto di un file excel in una tabella da una maschera? E poi il mese successivo quando vado a ricaricare il file mi sostituisca tutto il contenuto precedente quindi cancellando tutto del mese precedente.
  • Re: Caricare dati da Excel

    gur89 ha scritto:


    Praticamente ho questo database che contiene una serie di informazioni legate a tutti i clienti, quindi sia quelli cessati che quelli attivi.
    Dovresti spiegare questa cosa in termini di tabelle e campi: io non lo posso capire.

    Riguardo il file Excel, mi sembra che hai detto le stesse cose di prima, ma non ci fai capire quello che deve essere fatto in Access.
  • Re: Caricare dati da Excel

    Ho risolto creando una tabella collegata
  • Re: Caricare dati da Excel

    gur89 ha scritto:


    Io ho una tabella chiamata Clienti. E dovrei implementare una maschera che mi faccia caricare un file excel in un'altra tabella chiamata Clienti attivi con campo Filiale e Cliente, questa tabella verrà aggiornata tutti mesi e che successivamente mi servirà per estrapolare informazioni dalla tabella Clienti solo dei clienti attivi in un determinato mese.
    Cosa mi consigliate?
    Vi ringrazio in anticipo per le risposto.
    Tecnica giusta, ma concetto applicato errato.
    Va bene se importi in una TEMP_TABLE i ClientiAttivi... ma poi devi prima di tutto RAZIONALIZZARE la Tabella Clienti implementandola del Campo Attivo, quindi ogni volta che importi la Tabella da Excel, resetti tutti gli stati ATTIVI, poi leggi i Clienti nella Tabella Temporanea, ed aggiorni il Campo attivo della Tabella Clienti.

    Questo è il modo giusto che ti risolverà i problemi successivi...!
  • Re: Caricare dati da Excel

    Pardon non avevo letto questo post! Innanzitutto mile grazie per la risposta!
    Scusami sono un po ignorante, mi riesci spiegare in dettaglio come faccio aggiornare il campo attivo della tabella clienti?
    Grazie ancora!:)
  • Re: Caricare dati da Excel

    Ma la tabella importata da Excel--->in TEMP_TABLE_ClientiAttivi ha gli stessi IDCliente?
    Se sì il tutto è semplice, basta una query con le tabelle Clienti e ClientiAttivi e un join su IDCliente. Oppure potresti sfruttare il campo CodiceFiscale.
    Se non hai un campo univoco che possa fare questa verifica...me la vedo dura una procedura che deve controllare Cognome, Nome e forse qualche altro campo a catena...servirà un codice VBA ad hoc.
  • Re: Caricare dati da Excel

    gur89 ha scritto:


    Pardon non avevo letto questo post! Innanzitutto mile grazie per la risposta!
    Scusami sono un po ignorante, mi riesci spiegare in dettaglio come faccio aggiornare il campo attivo della tabella clienti?
    Grazie ancora!:)
    Dal punto di vista logico funzionale io ti posso dare dei concetti... poi tu devi sviluppare il processo attorno se condividi i concetti magari provando a buttare giù un po di codice.

    Quando si lavora con Excel il problema principale è che la fonte non ha dati compatibili con la Relazionalità di un Database, non ha Chiavi Primarie nè Indici.
    Ovvio è che se importi una Tabella di Excel in Access il contenuto è consistente ma NON è detto sia confrontabile.
    Ne consegue che le Tabelle temporanee di Importazione da Excel vanno pensate e va pensato l'utilizzo che ne viene fatto.
    Nel tuo caso a mio avviso NON DEVI ASSOLUTAMENTE usarle per fare query o JOIN, andresti a penalizzare fortemente le prestazioni delle Query, sempre dando per scontato che esista un campo UNIVOCO che trova corrispondenza nelle Colonne di Excel e nella Tabella di Access.

    Detto ciò, ribadisco che la Soluzione al tuo caso specifico è quella che ti ho esposto, aggiungi un campo ATTIVO nella tabella di Access.

    Quindi una volta importata la tabella da Excel via Codice(si usa la Funzione TransfertSpreadSheet) prima RESETTI tutti i campi attivi con 1 QueryAction di tipo UPDATE
    
    UPDATE Clienti SET Attivo=False
    Poi esegui un'altra Query UPDATE per Forzare a TRUE quei Clienti che sono presenti in Tabella TEMP
    
    UPDATE Clienti, ClientiAttivi 
    SET Attivi= True
    WHERE Clienti.PKCliente = ClientiAttivi.PKCliente
    Oppure dovrebbe funzionare anche così
    
    UPDATE Clienti
    SET Attivi= True
    WHERE PKCliente IN (SELECT PKCliente FROM ClientiAttivi)
    Finito...!

    Da li poi è tutto semplice...
  • Re: Caricare dati da Excel

    Funziona perfettamente Grazie mille!
    Ho aggiunto un'altro campo Filiale in entrambe le tabelle, nella condizione ci devo mettere anche il campo Filiale. Quindi deve aggiornare il campo Attvo presente nella tabella Clienti solo per i clienti di quelle filiali che sono presenti nella tabella ClientiAttivi. Come devo modificare il codice?
    UPDATE Clienti, ClientiAttivi SET Clienti.Attivo = True
    WHERE (((Clienti.Cliente)=[ClientiAttivi].[Cliente]));
    
  • Re: Caricare dati da Excel

    Leggi questo:
  • Re: Caricare dati da Excel

    Grazie Alex. Gentilissimo come sempre!
    Stavo provando a comporre il codice ma mi dà Errore di sintassi nell'espressione della query ". Non capisco dove sia il problema.
    Il campo Filiale della tabella Clienti consente di memorizzare più di un valore questo potrebbe complicare le cose?
    UPDATE Clienti, ClientiAttivi SET Clienti.Attivo = True
    WHERE (((Clienti.Filiale.Value)=[ClientiAttivi]![Filiale]) AND ((Clienti.Cliente)=[ClientiAttivi]![Cliente]));
  • Re: Caricare dati da Excel

    Non sto seguendo il discorso...ma non è che l'errore di sintassi sta perchè hai usato il punto esclamativo (!)?
    UPDATE Clienti, ClientiAttivi SET Clienti.Attivo = True
    WHERE (((Clienti.Filiale.Value)=[ClientiAttivi].[Filiale]) AND ((Clienti.Cliente)=[ClientiAttivi].[Cliente]));
  • Re: Caricare dati da Excel

    OsvaldoLaviosa ha scritto:


    Non sto seguendo il discorso...ma non è che l'errore di sintassi sta perchè hai usato il punto esclamativo (!)?
    UPDATE Clienti, ClientiAttivi SET Clienti.Attivo = True
    WHERE (((Clienti.Filiale.Value)=[ClientiAttivi].[Filiale]) AND ((Clienti.Cliente)=[ClientiAttivi].[Cliente]));
    Mi dà lo stesso errore anche con il (.)
  • Re: Caricare dati da Excel

    gur89 ha scritto:


    OsvaldoLaviosa ha scritto:


    Non sto seguendo il discorso...ma non è che l'errore di sintassi sta perchè hai usato il punto esclamativo (!)?
    UPDATE Clienti, ClientiAttivi SET Clienti.Attivo = True
    WHERE (((Clienti.Filiale.Value)=[ClientiAttivi].[Filiale]) AND ((Clienti.Cliente)=[ClientiAttivi].[Cliente]));
    Mi dà lo stesso errore anche con il (.)

    [Value] non è riconosciuto in SQL per il semplice fatto che i campi non hanno Value...!
Devi accedere o registrarti per scrivere nel forum
14 risposte