Newsgroup: it.comp.appl.access
Titolo: Leggere TXT

Salve a tutti!
C'č qualcuno di voi che sa dirmi come posso leggere da VBA un file txt dove
ogni riga č un record costituito da piů campi separati da una pipe (|)?
N.B.
Non posso farlo tramite importazione di access!!
Vi ringrazio anticipatamente!


Dim strRiga as string
Open "tuofile.txt" For Input Access Read As #1
Line Input #1, strRiga
Do While Not EOF(1)
 Line Input #1, strRiga
 '
 'ad ogni ciclo 
 'a questo punto in strRiga hai tutto il record
 'e, ad esempio, puoi usare la funzione Token (Sito Comune Tips: Estrarre
l'n-mo elemento (token) da un elenco delimitato)
 'per estrarre tutti i campi o solo quelli che ti servono
 '
Loop
Close #1
guarda help la sintassi delle varie istruzioni
-- 
Federico
--------------------------------------
Sito Comune di it.comp.appl.access
http://members.xoom.it/it_db_access
mailto:
it_db_...@usa.net
--------------------------------------
Tutte le richieste che mi arrivano
in privato, vengono cestinate.
--------------------------------------
Rimuovi paperino. per e-mail
--------------------------------------

heheheh!! lo sapevo che qualcuno mi avrebbe risposto cosě nonostante il N.B:
:))
il file txt che mi passano č generato in un formato tale da far andare in
overflow l'importazione guidata di access 97 !!
Devo farlo per forza tramite codice!
In VB ci sono riuscito, ma in VBA no per il fatto che il VBA non mi
riconosce la funzione VB "SPLIT"
:) ciao! Rimango in attesa!

Perfetto vi ringrazio tanto!

Pensavo fosse perfetto!!!
Invece non funziona ed ho capito anche il perchè!
Ho scoperto che il mio file TXT non ha a fine riga né il carattere CHR(13)
che indica il ritorno a capo né la combinazione dei caratteri
CHR(13)+CHR(10)  che indicano ritorno a capo + avanzamento ma ha soltanto il
carattere CHR(10) cioè l'indicatore di avanzamento!!!
in VB ho utilizzato come interruzione di riga nella funzione Split la
costante VbLF = CHR(10) e infatti funziona correttamente!  Line Input prende
in considerazione solo i file txt che hanno a fine riga o l'indicatore
CHR(13) o la combinazione degli indicatori CHR(13)+CHR(10) dunque non
funziona........ cioè funziona ma nella varabile  strRiga va ad inserire
tutto il file TXT e non riga per riga. Ora capisco anche perchè
l'autocomposizione di Access mi dava errore di OVERFLOW !! Evidentemente
anche questa non fa il controllo solo sull'indicatore CHR(10)!!
La caccia dunque continua per la ricerca di nuove soluzioni!!
Vi ringrazio ancora per l'interesse!

 wrote in message
news:8ubooe$gh7$1...@nslave3.tin.it...


 tutto il file TXT e non riga per riga. Ora capisco anche perchč


 Vi ringrazio ancora per l'interesse!
il sistema suggeritoti da pappagone funziona, ma volevo cheiderti una cosa.
questo import lo devi fare una-tantum o deve essere eseguito spesso?
perche', nel primo caso ti conviene aprirlo con word e salvarlo cone testo con
interruzioni di riga e poi fare un sempile import da access.
-- 
Federico
--------------------------------------
Sito Comune di it.comp.appl.access
http://members.xoom.it/it_db_access
mailto:
it_db_...@usa.net
--------------------------------------
Tutte le richieste che mi arrivano
in privato, vengono cestinate.
--------------------------------------
Rimuovi paperino. per email
fluc...@paperino.libero.it
--------------------------------------


si il file deve essere importato con una frequenza settimanale e inoltre
tale procedura deve essere lanciata da un utente poco pratico...!! Meglio
rendergli la vita il meno complicata possibile :)))
Vi ringrazio ancora tutti  ..... Alla prossima!!

 Non serve correre, bisogna partire in tempo - Esopo
si proviene da un sistema UNIX ! :)


Infatti i file di testo cambiano il metodo di indicare la fine riga a
seconda del tipo di sistema su cui sono creati.
UNIX (e sui derivati: Linux, BSD, QNX, Solaris, ...), AmigaOs e BeOs
(su quest'ultimo non sono sicurissimo) usano il carattere LINEFEED
(10) per indicare la fine di una riga.
MacOs usa il carattere CARRIAGE RETURN (13) per indicare la fine di
una riga.
Microsoft nei suoi s.o. (Dal dos in poi) usa invece entrambi: LINEFEED
seguito da CARRIAGE RETURN.
Per trasferire un file di testo tra i vari sistemi bisogna quindi
cambiare il metodo di indicazione fine riga e spesso anche la mappa
caratteri 
I caratteri ASCII estesi, ossia dal 128 al 255 non coincidono
perfettamente tra i vari sistemi. Questo puo' dare problemi con le
vocali accentate e con i simboli grafici.
Ciao
Fabrizio