AndreaSartori ha scritto:
Ecco qui. Questa è una riga di file .csv che diverrà un record nella tabella Access
'Fattura tra privati';Fattura;121;27/02/2019;'10411170151';"000000000540,00";"000000000118,80";420698654;Fattura consegnata;28/02/2019
Se notate ogni campo è delimitato dal ; e il qualificatore testo da ' e ( per i campi numero ) da ".
Quello che vorrei è importare in una tabella già presente con 10 campi (Campo1, Campo2...Campo10)
Fattura tra privati andasse in Campo1 formato testo
Fattura andasse in Campo2 formato testo
121 andasse in Campo3 formato testo
27/02/2019 andasse in Campo4 formato data
10411170151 andasse in Campo5 formato testo
540,00 andasse in Campo6 formato numerico
118,80 andasse in Campo7 formato numerico
420698654 andasse in campo8 formato testo
Fattura consegnata andasse in Campo9 formato testo
28/02/2019 andasse in Campo10 formato data
per n righe del file .csv
Andrebbe bene fare tutto da codice… sarebbe molto più ordinato e carino…
Spero di essere chiaro adesso e scusatemi per la mia "sintassi...
Premesso che la soluzione ottimale è quella esposta da @Alex , questa potrebbe essere un pagliativo ma con limitazioni:
Se il file CSV ha sempre quelle caratteristiche
Se è una tabella temporanea che ogni volta puoi ricreare
potresti utilizzare l'importazione di access utilizzando come separatore di testo solo ' (apice)
i due campi compresi fra " (Doppio Apice) li lavori dopo aprendo la tabella creata
DoCmd.RunSavedImportExport "Importa-latuatabella"
Dim CampoDaModificare1, CampoDaModificare2
Dim Connessione As ADODB.Connection
Dim Tabella As ADODB.Recordset
Set Connessione = CurrentProject.Connection
Set Tabella = New ADODB.Recordset
'apro la TABELLA UTILIZZATA
Tabella.Open "latuatbella", Connessione, adOpenDynamic, adLockOptimistic
Do Until Tabella.EOF
CampoDaModificare1 = Tabella("Campo6")
CampoDaModificare2 = Tabella("Campo7")
CampoDaModificare1 = Qui puoi utilizzare il replace per togliere "
CampoDaModificare2 =Qui puoi utilizzare il replace per togliere "
With Tabella
.Fields("Campo6") = CampoDaModificare1
.Fields("Campo7") = CampoDaModificare2
.Update
End With
Tabella.MoveNext
Loop
Tabella.Close
Connessione.Close
Set Connessione = Nothing
Set Tabella = Nothing
finito di aggiornare i valori modifichi il tipo dei campi tabella come preferisci
'modifichi il tipo di campo da testo ... in questo caso a precisione doppia
CurrentDb.Execute "ALTER TABLE latuatabella ALTER COLUMN ilcampodamodificare Double"
CurrentDb.Execute "ALTER TABLE latuatabella ALTER COLUMN ilcampodamodificare Double"