Condividi tramite

Importare in una tabella di Acces dei dati di un file TXT

Anonimo
2016-03-24T15:17:29+00:00

Buon pomeriggio a tutti, sto elaborando  una procedura che mi deve importare in una tabella dei dati da più file di testo salvati in c:\prova e che si chiamano con il nome che corrisponde ad un campo della tblIban e che si chiama Matricola.

Mi spiego meglio.

  • Ho una tabella che oltre al campo Matricola contiene altri campi - Grado; Cognome;Nome;Ruolo e Iban.
  • Il campo Matricola contiene 5200 dati tipo testo, chiave primaria tipo A112233;X223344  e cosi via e tutti gli altri campi sono vuoti.

 desidererei ottenere questo con il vostro aiuto:

  1. scorrere i record della tblIban per quanto concerne il campo Matricola;
  2. controllare se esiste il file di testo in c:\prova che si chiama come la matricola  da controllare es. A112233 e importare nella tabella gli altri dati in progressione nei campi Grado; Cognome;Nome;Ruolo e Iban che nel file di testo sono rispettivamenet alle seguenti coordinate.

**Grado:**linea 7 colonna 2 ( per 5 caratteri a destra)

Cognome: linea 7 colonna 17 (per 15 caratteri a destra)

Nome: linea 7 colonna 48 (per 30 caratteri a destra)

Ruolo: linea 7 colonna 28 (per 5 caratteri a destra)

Iban: **linea 7 colonna 2 (**per 27 caratteri a destra)

  1. Alla fine della procedura eseguire una query che mi visualizzi tutte le matricole che non ha trovato come corripondenza nei file di testo in c:\prova.

Non mi dilungo per non creare confusione, ringrazio chi mi aiuta in questo.

Posto quello che sono riuscito da solo a mettere su ma mi importa i dati errati, non incolonnati ecc.

Ho bisogno del vostro aiuto e delle vostre spiegazione per poter riuscire a capire dove sbaglio e cos'altro devo aggiungere per l'obiettivo da raggiungere.

Private Sub Comando60_Click()

Dim StrTesto As String

Open "C:\prova\nicola.txt" For Input As #1

Do Until EOF(1)

       Input #1, StrTesto

       CurrentDb.Execute "INSERT INTO tIbanBari (MATRICOLA) SELECT  '" & StrTesto & "'"

Loop

Close #1

End Sub

Ciao Nicola.

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

Risposta accettata dall'autore della domanda

Anonimo
2016-03-25T13:20:46+00:00

Ciao Nicola ho rivisto il codice, dimmi come và con questo:

Option Compare Database

Option Explicit

Private Sub Comando60_Click()

Dim myTb As Recordset

Dim StrTesto As String

Dim i As Integer

Set myTb = CurrentDb.OpenRecordset("tblIban")

myTb.MoveFirst

On Error Resume Next

Do While Not myTb.EOF

   If Len(Dir("C:\prova" & myTb("Matricola") & ".txt")) = 0 Then GoTo Leggi

   Open "C:\prova" & myTb("Matricola") & ".txt" For Input As #1 Len = 80

   Input #1, StrTesto

   Input #1, StrTesto

   Input #1, StrTesto

   Input #1, StrTesto

   Input #1, StrTesto

   Input #1, StrTesto

   Input #1, StrTesto

   myTb.Edit

       myTb("Cognome") = Mid(StrTesto, 16, 30)

       myTb("Nome") = Mid(StrTesto, 48, 30)

       Input #1, StrTesto

       myTb("Grado") = Mid(StrTesto, 1, 25)

       myTb("Ruolo") = Mid(StrTesto, 27, 5)

       Input #1, StrTesto

       Input #1, StrTesto

       Input #1, StrTesto

       Input #1, StrTesto

       myTb("Iban") = Mid(StrTesto, 25, 27)

   myTb.Update

       Close #1

Leggi:

    myTb.MoveNext

Loop

myTb.Close

Set myTb = Nothing

End Sub

Ciao Mimmo

La risposta è stata utile?

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2016-03-25T12:27:20+00:00

<citazione>........ non  mi dilungo per non creare confusione. ......</citazione>

Fai bene perché io non ci capisco già più nulla

ho letto solamente il 1° post e l'ultimo solo in parte

Non mi e pero chiaro quali settori del .txt vuoi importare tu parli sempre della 7° linea

ma vedo che le file si accavallano 

con quanto sotto riesci a rilevare se il tuo .txt esiste nella tua cartella

[code]

Public Sub Sub01()

Dim strPerc As String

strPerc = "C:\Tuo\Percorso"

Dim Dbx As DAO.Database

Set Dbx = DBEngine(0)(0)

Dim Rsx As DAO.Recordset

Set Rsx = Dbx.OpenRecordset("SELECT tblIban.Matricola FROM tblIban;", dbOpenDynaset)

Rsx.MoveFirst

Do Until Rsx.EOF

    If Len((Dir(strPerc & Rsx.Fields("Matricola").Value & ".txt")) & "") = 0 Then

        MsgBox Rsx.Fields("Matricola").Value & "        File Assente"

        ' qui non devi fare nulla perche ti manca il file .txt

    Else

        MsgBox Rsx.Fields("Matricola").Value & "  File Presente"

        ' qui devi aggiungere il codice di lettura del .txt e di inserimento nel record attuale

        ' magari diventa piu pulito e leggibile se rimandi a una seconda funzioncina

        ' che prenda come parametro il valore di  Rsx.Fields("Matricola").Value

    End If

    Rsx.MoveNext

Loop

Rsx.Close

Dbx.Close

Set Rsx = Nothing

Set Dbx = Nothing

End Sub

[/code]

.

La risposta è stata utile?

0 commenti Nessun commento

21 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2016-03-24T20:05:09+00:00

    ciao Nicola,

    potresti collegare il file di testo anziché importarlo o con il wizard o  creando un file schema.ini e collegare il file di testo via codice per utilizzarlo come una tabella collegata.

    in questo modo byPassi il problema dell'importazione.

    il file schema.ini è da creare per "ingannare" il driver isam e creare il collegamento in modo corretto.

    ci mostri un esempio anche della prima camuffando i dati di come il di testo è formato?

    Ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2016-03-24T19:37:15+00:00

    Ciao Mimmo,innanzitutto grazie per il tuo cortese riscontroNon posso seguire la procedura guidata perché devo crear un ciclo for che  mi trova  il file con uguale nome della matricola e mi copi i dati nella tabella così come ho spiegato sopra. Sono 5020 record che devo scorrere con il ciclo for e  di conseguenza importare i dati di 5020 file txt. Spero di essere stato chiaro Mimmo. Chiedo il vostro aiuto perché per me è complicato ciò che ho proposto. Se hai bisogno di ulteriori informazioni chiedimele pure. Ciao Nicola.

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2016-03-24T18:57:53+00:00

    Ciao Nicola,

    non potresti utilizzare la procedura guidata per l'importazione?

    Durante l'esecuzione manuale potresti salvare le specifiche di importazione per poterle utilizzare da codice VBA le volte successive.

    Mimmo

    La risposta è stata utile?

    0 commenti Nessun commento