Condividi tramite

importazone file csv

Anonimo
2021-04-27T18:27:07+00:00

Buongiorno, dovrei importare in access i dati contenuti in file csv, generati ogni settimana da un sistema operativo.

I dati andrebbero in una tabella ed ad ogni aggiornamento non devo re importare record già presenti nella tabella.

Potete darmi un aiuto

grazie mille

Antonio

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

31 risposte

Ordina per: Più utili
  1. domenico laurenza 9,900 Punti di reputazione Moderatore volontario
    2021-04-28T10:44:05+00:00

    Ciao,

    prova in questo modo:

    1) effettua una importazione manuale di un file Csv salvando le specifiche di importazione.

    Nel mio esempio le ho denominate "Specifica di importazione" come vedrai in seguito nel codice Vba.

    2) Crea un modulo incollando il seguente codice Vba:

    Option Compare Database

    Option Explicit

    Function fImportaFile()

       Dim fDialog As Office.FileDialog

       Dim varFile As Variant

       Dim nomeFile As String

       Set fDialog = Application.FileDialog(msoFileDialogFilePicker)

       With fDialog

          .AllowMultiSelect = False

          .Title = "Selezionare il file da importare"

          .Filters.Clear

          .Filters.Add "CSV", "*.CSV"

          .Filters.Add "Tutti i files", "*.*"

          If .Show = True Then

              For Each varFile In .SelectedItems

                  nomeFile = varFile

              Next

          End If

       End With

       ' Elimino la tabella temporanea prima di importare il file csv 

       DoCmd.RunSQL "Drop Table Importato

       DoCmd.TransferText acImportDelim, "Specifica di importazione", "Importato", nomeFile, False

       DoCmd.SetWarnings False

       DoCmd.OpenQuery "qryAccodaImportato", acViewNormal

       DoCmd.SetWarnings True

    End Function

    Il codice ti consente di selezionare il file da importare. Utilizzando le specifiche di importazione di cui al punto 1 carica la tabella temporanea denominata Importato preventivamente eliminata.

    3) Crea una query d i accodamento del tipo seguente:

    INSERT INTO MOVCON ( Protocollo, ANNREG, NUMREG, SOCIETA, SIGLA, ANNO, Incassi, Uscite, [DESC], Data, DATREG, ANNOCOMPETENZA, CAUSALE )

    SELECT Importato.Campo1, Importato.Campo2, Importato.Campo3, Importato.Campo4, Importato.Campo5, Importato.Campo6, Importato.Campo7, Importato.Campo8, Importato.Campo9, Importato.Campo10, Importato.Campo11, Importato.Campo12, Importato.Campo13

    FROM Importato LEFT JOIN MOVCON ON Importato.Campo1 = MOVCON.Protocollo

    WHERE (((MOVCON.Protocollo) Is Null));

    Dal codice puoi vedere che ho chiamato la queryqryAccodaImportato

    Facci sapere se hai problemi e se ho dimenticato io qualcosa :-)

    Ciao Mimmo

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2021-04-28T06:17:04+00:00

    Grazie per la risposta, è quello che avrei già fatto ma sarebbe il mio piano B.

    Sai darmi dei suggerimenti per una routine in VBA che punta a directory e seleziona di volta in volta il file csv che voglio importare?

    La risposta è stata utile?

    0 commenti Nessun commento
  3. domenico laurenza 9,900 Punti di reputazione Moderatore volontario
    2021-04-27T20:06:41+00:00

    Io importerei in una tabella temporanea il file e quindi con una query accoderei alla tabella.

    La query deve essere del tipo outer join Cioè che seleziina i protocolli assenti nella tabella finale.

    Mimmo

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2021-04-27T19:36:34+00:00

    Si ho inserito un campo chiave che ho chiamato protocollo ed è univoco

    La risposta è stata utile?

    0 commenti Nessun commento
  5. domenico laurenza 9,900 Punti di reputazione Moderatore volontario
    2021-04-27T19:17:08+00:00

    Ciao,

    hai campi chiave che identificano i record già caricati?

    Mimmo

    La risposta è stata utile?

    0 commenti Nessun commento