Saltare le prime tre righe del file CSV (utilizzando DoCmd?) in MS Access

Ho bisogno di saltare le prime tre righe di un file CSV in caso di caricamento in MS Access. L’impostazione predefinita di importazione CSV di non rilasciare le prime tre righe. Sto pensando di scrivere una macro per ignorare le prime tre righe.

La mia ricerca ha indicato l’oggetto DoCmd ma i suoi metodi non si rivolgono a cadere le prime righe di x.

Ogni pensiero?

 

3 Replies
  1. 6

    Il DoCmd.Trasferiscitesto metodo prende un SpecificationName come uno dei suoi argomenti. Seguire le istruzioni a Come Creare una Specifica di Importazione per creare e salvare una specifica di importazione.

    Ora vai in Opzioni di Accesso, Opzioni di Navigazione e mostrare nascosti/di sistema di oggetti. Si dovrebbe ora essere in grado di aprire una tabella denominata ‘mSysIMEXSpecs’. Trovare l’importazione spec creato in precedenza basato sul SpecName colonna. Modificare il ‘StartRow’ colonna per l’importazione di spec 3 (il StartRow è a base zero).

    Ora si dovrebbe essere in grado di utilizzare il DoCmd.Metodo TransferText passando il nome di importazione spec creato e salterà le prime tre righe.

    • +1 Subdolo! È sicuramente una buona idea per documento nel codice, se si decide di utilizzare questa tecnica, altrimenti la prossima povera anima che lavori nel database potrebbe impazzire cercando di capire perché le righe iniziali, vengono saltati. Comunque, grazie per la condivisione!
    • Un buon punto. In realtà ho scritto un modulo di classe che gestisce i miei specifiche di importazione/esportazione a livello di programmazione, perché mi sono stancato di caccia esistenti specifiche quando si tenta di eseguire il debug di problemi. Ma un intero post sul blog, che non ho voglia di entrare qui!
    • Ho appena fatto questo e funziona grazie. Volevo solo sottolineare che il StartRow è 0 base. nel mio caso ho voluto saltare 2 righe e ho inserito 2 in StartRow, quindi, per questo esempio dovrebbe entrare in 3 in StartRow. se si entrasse in 4 avrebbe perso una riga di dati.
    • Risolto. Bella cattura @mendel. Grazie.
  2. 1

    In Access VBA vorrei utilizzare due TextStream oggetti, uno per .ReadLine originale CSV file riga per riga e l’altra per .WriteLine in un file temporaneo, saltando le prime tre righe del file di input. Fare alcune ricerche web Scripting.FileSystemObject e sono sicuro che troverai qualche esempio di codice per questo.

    Quindi vorrei utilizzare DoCmd.TransferText acImportDelim per importare il file temporaneo in Access.

    • +1 Questo approccio è stato il mio primo pensiero. La gestione dei file temp porta il suo proprio set di sovraccarico, ma l’intenzione del programmatore vorresti essere più esplicito, senza bisogno di commenti. Sei e mezza dozzina il modo di vedere.
  3. 1

    Docmd.Metodo TransferText è una buona opzione per andare con, ma come alternativa alla modifica di importazione spec, si potrebbe considerare la possibilità di importare tutto e facendo un po ‘ di convalida dopo l’importazione.

    Così si potrebbe, importare l’intero file e quindi utilizzare una query di eliminazione per eliminare i dati dalla tabella.

    Come detto in un commento precedente, modificando la spec tramite una tabella di sistema potrebbe essere difficile per qualcun altro per trovare dove-come una query di eliminazione con un bel po ‘ di commento nel codice potrebbe funzionare a meraviglia. Se necessario, utilizzare, se non potrebbe essere commentato.

Lascia un commento