Avrei la necessità di leggere un file di testo ed esportare i valori in esso contenuti in una tabella di un database di access come nuovo record. Il tutto da un file .vbs che posso lanciare da windows.
Vi prego aiutatemi!!!!![]()
Avrei la necessità di leggere un file di testo ed esportare i valori in esso contenuti in una tabella di un database di access come nuovo record. Il tutto da un file .vbs che posso lanciare da windows.
Vi prego aiutatemi!!!!![]()
Ciao abisoftware,
come sono i dati nel file di testo? Come è la tabella di access?
Il file di testo lo posso creare come vuoi, la tabella in access è una tabella semplicissima con un campo "contatore" e una decina di campi numerici o testo.
allora...
facciamo che il file di testo si chiama dati.txt ed è fatto così:
la prima riga è il nome del campo e i campi sono separati dal TAB
e si trova nella cartella c:\txt\ dove devi mettere un file schema.ini fatto cosìcodice:"Nome" "Colore" "Numero" "willy" "verde" 1 "pippo" "rosso" 36 "pluto" "giallo" 18
l'mdb lo mettiamo in c:\dati.mdb ed ha una tabella che si chiama NomeTabella con gli stessi campi del txt e in più il contatore.codice:[dati.txt] ColNameHeader=True Format=TabDelimited MaxScanRows=50000
il vbs si trova in c:\importa.vbs ed è fatto così
codice:strAccessDB = "c:\dati.mdb" Set Conn = CreateObject("ADODB.Connection") strCon = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & strAccessDB Conn.Open strCon DirectoryTxt = "c:\txt\" strConn = "Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=" & DirectoryTxt & ";Extensions=asc,csv,tab,txt" Set ConnTxt = CreateObject("ADODB.Connection") ConnTxt.Open strConn query = "SELECT * FROM dati.txt" set rs = CreateObject("ADODB.Recordset") rs.Open query,ConnTxt,3,3 do while not rs.EOF sql = "INSERT INTO NomeTabella (Nome,Colore,Numero) VALUES ('" & replace(rs("Nome"),"'","''") & "','" & replace(rs("Colore"),"'","''") & "'," & rs("Numero") & ")" Conn.Execute sql rs.MoveNext loop rs.Close set rs = Nothing ConnTxt.Close set ConnTxt = Nothing Conn.Close set Conn = Nothing![]()
Ho fatto come mi hai spiegato e sarebbe perfettamente quello di cui ho bisogno... ma mi da il seguente errore:
Script: C:\importa.vbs
Riga: 4
Carattere: 1
Errore: [Microsoft][Driver Manager ODBC] Nome origine dati non trovato e driver predefinito non specificato
Codice: 80004005
Origine: Microsoft OLE DB Provider for ODBC Drivers
![]()
che strano :master: mi posti le prime 4 righe del tuo vbs?
strAccessDB = "c:\dati.mdb"
Set Conn = CreateObject("ADODB.Connection")
strCon = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & strAccessDB
Conn.Open strCon
DirectoryTxt = "c:\txt\"
Devo per caso definire qualche ODBC sul PC?
ma che sistema operativo hai?
Controlla in Origine dati (ODBC) che trovi nel pannello di controllo se ci sono i driver per access
Win 2000 ... ma...il PC su cui avevo provato ha l'origine dati "sgarruppato"... ora ho provato su un altro PC e l'errore è alla riga 13:
sql = "INSERT INTO Tabella1 (Nome,Colore,Numero) VALUES ('" & replace(rs("Nome"),"'","''") & "','" & replace(rs("Colore"),"'","''") & "'," & rs("Numero") & ")"
e come errore è il seguente:
Errore: Impossibile trovare l'oggetto nell'insieme corrispondente al nome o al numero richiesto
Origine: ADODB.Recordset
prova a mettere dopo questo
questocodice:query = "SELECT * FROM dati.txt" set rs = CreateObject("ADODB.Recordset") rs.Open query,ConnTxt,3,3
codice:campi="" for each field in rs.fields campi = campi & field.name & ", " next msgbox campi