Newsgroup: it.comp.lang.visual-basic
Titolo: File Testo e mdb

Ciao a tutti,
ho scoperto che l'errore ISAM che avevo era dovuto al fatto di
configurazioni specifiche per il testo.
ora io devo importare unfile di testo di 6,3Mb circa con separatore la
tabulazione, in un file mdb
qualche consiglio ?
--
          Daniele Riccardo Noris

 ha scritto nel messaggio
news:8d6u61$mmn$1...@fe1.cs.interbusiness.it...

Usa Access se puoi, fai prima.
(E' poco sportivo come consiglio?)
--
 
federic...@planet.it
Eliminare NOSPAM dall'indirizzo! Delete NOSPAM from address!

qualche consiglio ?
In azienda abbiamo sviluppato un software che trasforma un file di testo in
un database.
Il file di testo in questione in realtà è un precedente archivio trasformato
da un software in un file di testo ?!
Struttura del file
BeginTable:Nominativo
ID_Paziente§Data§Nome§Cognome§Titolo§.........
41§22/03/00 21.00.20§'B'§'A'§''§''§'1544 MINO'§''§'INF'§''§'Registro;'§
....
....
....
EndTable
Poi a seguire le altre tabelle
In questo caso nella prima riga è specificato il nome della tabella nella
seconda riga l'elenco dei campi e poi a seguire tutti i record, EndTable
segna la fine dei record presenti nella tabella. Nel caso di un campo di
testo o memo dove sono presenti dei ritorni a capo ovviamente tutto il
record non sarà presente su di una sola riga
Es.
41§22/03/00 21.00.20§'BEN'§'ALM'§''§''§'1544 MINO'§''§'INF'§''§'Reg
istro ;'§
In questo caso utilizzando il delimitatore (§) è possibile ricostruire il
record. Avrai notato !? la presenza del segno di apice, in nel nostro caso
viene utilizzato per riconoscere i campi testo.
Spero di averti aiutato
A presto

grazie a tutti e due,
il problema in realtà è questo. il file in questione mi viene passato da un
fornitore (via mail o download diretto) ed è appunto in formato testo con i
campi delimitati da tabulazione. i campi sono di vario genere, testo,
numeri, prezzi, categorie ed addirittura descrizione del prodotto. il tutto
su una riga sola.
la necessità di caricare questi dati in un database mdb è quello
(logicamente) di avere un archivio più performante e sul quale poi dovrei
sfoltire alcuni prodotti  in base a prezzi e/o categorie.
Alla fine dovrei generare a mia volta un file di testo da rendere
disponibile sul mio sito (in txt perchè zippandolo sarà più leggero del
download).
Sono quindi obbligato a gestire il file sorgente in automatico (non posso
ogni volta (tutti i giorni o quasi) variare i tab con le virgole ad es.
Avete qualche idea ?
vi ringrazio
Daniele


Ribadisco il consiglio di importare il file di testo con Access,
specificando il tabulatore come separatore, fa praticamente tutto in
automatico.
Hai già provato e sto insistendo su una soluzione non praticabile? O la
parola 'automatico' sottintende che un programma dovrebbe fare tutto da solo
senza il tuo intervento?


 tabulazione, in un file mdb
La definizione del formato ISAM per il testo, prevede che
il primo record sia la definizione dei campi.
Se i campi non sono definiti, l'importazione automatica (da
codice, intendo) fallisce.

 senza il tuo intervento?
si'. in alternativa, non dovrebbe essere molto complesso (con dao) scrivere
qc che:
1. fa il parsing del txt scaricato e importa i campi nell'mdb. delim = "," o
"chr(9)" non dovrebbe essere molto diverso. l'importante e' che sia sempre
quello (tuttalpiu' fai un option nel form da scegliere prima
dell'importazione) e che, se e' virgola, non ci siano virgole nella
descrizione (un classico...).
con qualcosa tipo lineinput e un ciclo scandisci le linee del txt e per
ognuna aggiungi un record, compilandone i campi relativi.
se il txt che scarichi ha sempre lo stesso nome, lo puoi anche fare
completamente automatico.
2. lo sfoltimento del tuo mdb, in automatico, mi sembra piu' arduo, ma
suppongo lo sappia tu.
3. la generazione del txt o html dal tuo database e' ben piu' semplice del
punto 1.
ciao, a.

 ogni volta (tutti i giorni o quasi) variare i tab con le virgole ad es.
Credo che il sistema migliore sia allegare al file mdb il file txt. In
questo modo potrai ogni volta sovrascrivere il file vecchio con quello nuovo
senza apportare alcuna variazione al file mdb. Ogni volta che cambia il file
txt potresti, mediante query, query di comando, macro, vb... quello che vuoi
e che puoi, insomma, aggiornare una tabella (sulla quale farai le modifiche,
cancellazioni ed aggiunte necessarie) che ti servira' poi per creare il file
da pubblicare. Spero di essere riuscito a spiegarmi.
--
Ciao.
Maurizio

per effedipi, giovanni, pal, maurizio borrelli e jimi: grazie
per effedipi: si ho già provato ad importare in acces e non ho nessun
problema gestisco la tabella senza problemi. il mio "automatico" è che
vorrei che il mio programma tutto da solo si scaricasse il file da internet,
lo unzippi e ci lavori sopra x avere un archivio aggiornata (new o append
non cambia).
per Pal, ho provato anche a fare il caricamento diretto del *.txt
interpretando il carattere di separazione, però una variabile string (ah io
ho vb4pro) posso dimensionarla a 255 caratteri giusto? ogni linea è ben più
lunga però. Hai un modo per risolvere la cosa con questa modalità.
per Maurizio e Jimi, sono arrivato a questo e penso che sia la soluzione più
corretta, però per il modulo ISAM ho creato un file NomeApp.ini all'interno
della cartella del mio progetto dove vado a specificare (secondo le
indicazioni dell'help) le caratteristiche del file testo, il tipo di
separat., i campi , se la prima linea ha il nome del campo etc etc.
attribuisco al dbengine i parametri.
facendo partire il prg mi dà un errore sul riconoscimento di una porzione
della primariga. Dall'help non sono riuscito a capire se questo file .ini
deve essere nella dir di windows o che cosa ?
qualche idea ?
grazie
Daniele

 lunga però. Hai un modo per risolvere la cosa con questa modalità.
in questo momento non ci giurerei, ma facendo
    dim cicciotxt ' cioe' as variant
o
    dim cicciotxt as string
non mi sembra ci siano limiti insostenibili.
controlla meglio, ho guardato adesso molto in fretta (f1 -> dim statement),
ma direi che se non la fai fissa una var string tiene 63k.
ciao, a.


se vuoi realizzare un programmino che importi il tuo file di testo puo
utilizzare la funzione di vb che si chiama split.
devi caricare il file e con il lineinput passare riga per riga alla funz.
split che la dividera' in tante stringhe, che potrai successivamente
inserire nel db.
ciao da massimo ghiani