Newsgroup: it.comp.www.asp
Titolo: connessione a file .csv, ci sono riuscito, ecco come

ringrazio tutti per i consigli ed in particolare Marcon per i due
utili link.
Daniele, se pensi che ne puoi fare una faq per aspitalia fai pure.
visto che raggiungere la soluzione è stato non del tutto indolore,
forse può interessare qualche dettaglio.
per prima cosa la connessione:
cnDisp.open 	"DRIVER={Microsoft Text Driver (*.txt; *.csv)}; " & _
		"DBQ=C:\percorso\ "
la cosa che può disorientare è che bisogna indicare solo il percorso
che contiene il file di testo.  al file stesso si farà riferimento in
seguito nella query sql, come se fosse il nome di una tabella.
il percorso dev'essere quello fisico, eventualmente usate
server.mappath per determinarlo.
altra cosa importante è settare un file Schema.ini, che *deve*
chiamarsi così e *deve* trovarsi nella stessa directory del file da
leggere.  
un esempio di questo file può essere:
[disponibilita.csv]
Format=Delimited(,) 
DecimalSymbol=.
ColNameHeader=True
MaxScanRows=0
Col1="Codice Interno" Text
Col2="Id Descrizione" Text
Col3="Disponibilita" Integer
ecco qualche spiegazione riga per riga.
[disponibilita.csv]
indica il nome del file, che dev'essere sempre messo tra parentesi
quadre.
Format=Delimited(,) 
indica se il file è delimitato o a spaziatura fissa, nel primo caso si
può indicare tra parentesi il carattere delimitatore
DecimalSymbol=.
indica il carattere da considerare come separatore dei decimali.  nel
file che dovevo trattare i campi erano separati da virgola, ma la
virgola è anche il carattere di default per la separazione dei
decimali, sicché ne ho dovuto specificare un altro, e ho scelto il
punto. 
ColNameHeader=True
indica che la prima riga del file contiene i nomi dei campi, anche
loro separati come il resto dei valori.
per altri dettagli vedete il link:
MaxScanRows=0
la quinta riga indica che bisogna scorrere tutto il file per
"indovinare" il tipo dati dei campi.  vi sarà capitato, ad es.
importando un file excel in access o viceversa, che venga assegnato ad
un campo un tipo dati sbagliato, magari i primi dieci valori di un
campo di tipo testo sono numeri di telefono o assomigliano a date e
viene assegnato a quel campo un tipo dati numerico o data.
in effetti nel mio caso quella riga è superflua, perché più sotto
definisco i nomi e il tipo dati dei campi, premettendo loro Coln dove
n è il numero della colonna.  se il nome contiene spazi va messo tra
virgolette, subito dopo si può specificare il tipo dati e la sua
lunghezza, in caso si usi un file a spaziatura fissa (nel mio caso
no):
Col1="Codice Interno" Text
Col2="Id Descrizione" Text
Col3="Disponibilita" Integer
l'ordine non dev'essere necessariamente quello che ho usato io e ci
sono mooolte altre opzioni e possibilità, elencate in questo link
segnalatomi da Giulio Marcon:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/odbc/htm/odbcjetschema_ini_file.asp
se occorre leggere più file dalla stessa directory si possono scrivere
di seguito i parametri nel file Schema.ini, iniziando sempre col nome
del file tra parentesi quadre, ad es.:
[disponibilita.csv]
Format=Delimited(,) 
[...]
[pippo.csv]
Format=Delimited(,) 
[...]
[pluto.csv]
Format=Delimited(,) 
[...]
la query sql che ho usato per settare un recordset è:
ssql = "SELECT [Id Descrizione] FROM disponibilita.csv WHERE
Disponibilita < 1 ORDER BY [Id Descrizione]"
come vedete tratto il nome del file come se fosse una tabella.
da qui in poi si setta normalmente un recordset e non c'è più niente
di speciale...
-- 
ben fatto, in fretta, economico: scegline due.

 "DBQ=C:\percorso\ "
Non ho capito il vantaggio....le prestazioni?
Saluti.
Luciano

Non ho capito il vantaggio....le prestazioni?
assolutamente nessuno in termini di prestazioni, si tratta di
collegarsi ad un file csv che viene scaricato ogni tot minuti da un
altro host su cui non ho accesso che riporta la disponibilità o meno
di alcuni prodotti...
