Newsgroup: it.comp.appl.access
Titolo: modifiche a file di testo

ho un file di testo che mi viene esportato dal gestionale delimitato con 
punti e virgola, se lo collego senza modificarlo access non lo riconosce (mi 
escono una serie di caratteri strani). questo file dopo tutti i dati ha una 
serie di spazi abbastanza corposi, se ne tolgo anche uno solo access me lo 
legge tranquillamente.
Se provo a farne una copia e modificarla, memorizzando lo schema "corretto", 
e  provo a collegare il file non modificato con lo stesso schema non mi 
legge la prima colonna.
Mi rendo conto che le informazioni sono insufficienti per risolvere il 
problema definitivamente, ma mi chiedo sarebbe possibile da access aprire il 
file di testo, cancellare l'ultimo carattere e salvarlo?
grazie e ciao
Max 

max ha scritto:

Uhmmm.... ho l'impressione che il tuo file di testo venga da un sistema 
Unix. Unix come termine riga non ha crlf ma solo uno dei due (non mi 
ricordo mai quale). Quando modifichi il file, con un qualsiasi editor mi 
immagino) al momento della riscittura il terminatore di record Unix 
viene sostituito dal terminatore Windows. Se da access cancelli l'ultimo 
carattere e riscrivi teo che non risolvi il problema.
--
ac

 ha scritto nel messaggio 
news:lHJtm.38717$Tq6....@tornado.fastwebnet.it...

non � un sistema Unix � un gestionale di m.... con finestre stile vecchio 
dos.
con access se tento di modificare un record mi d� l'errore aggiornamento 
dati non supportati da questo ISAM
ciao
Max 

 dati non supportati da questo ISAM
Questa e' ancora un altra storia. ISAM sta per Index Sequential Access 
Method e normalmente riguarda files che "non" sono sequenziali ma hanno 
una struttura dati un po' piu' complessa (tipo i file Btrieve e 
similari) e devono essere gestiti dall'apposito "driver". Comincio ad 
avere il dubbio che il tuo file non sia di tipo sequenziale delimitato.
--
ac

 ac
per quel che riguarda la provenienza penso che hai ragione, il mio 
riferimento all'iSAM era solo per specificare l'impossibilit� di fare la 
prova a cancellare l'ultimo carattere.
tornando al problema, visto che la semplice apertura e salvataggio del file 
corregge il problema come avevi previsto corregge il problema, non posso da 
codice aprire il file con notepad salvarlo e chiuderlo?
ciao
Max 

max ha scritto:


Ho avuto lo stesso problema con alcuni file. E' dovuto al fatto che nel
file sono presenti bytes con valore zero.
Dovresti eliminarli o sostituirli con degli spazi (codice 032).
1. Se vuoi ho un programmino DOS da riga di comando che avevo scritto
tempo fa per sostituire caratteri e stringhe all'interno di un file che
pu� farlo facilmente.
2. Altrimenti fai da VBA, apri il file mod. Binary, apri un secondo file
sempre Binary, leggi un carattere alla volta dal primo e lo scrivi sul
secondo se non � zero, in totale sono una decina di righe di codice.
3. Oppure importi il file da VBA, con Line Input lo leggi riga per riga e
estrai i valori che ti servono.
Consiglio una delle ultime due, cos� non ti serve portarti dietro
l'eseguibile se usi il db su altri PC.
Ciao.
-Marco-
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 ha scritto nel messaggio 
news:h9admj$81p$1...@news.newsland.it...

perdonami .... mi sapresti indicare un po di righe di codice per le 
soluzione 2 o 3?
ciao e grazie
max 

 max
Questo copia il file in un secondo file togliendo gli zeri, il secondo
file lo potrai importare senza problemi:
Dim ch As String * 1, f1 As Long, f2 As Long
f1 = FreeFile
Open "D:cartellafile_origine.txt" For Binary As f1
f2 = FreeFile
Open "D:cartellafile_nuovo.txt" For Binary As f2
    While Not EOF(f1)
        Get #f1, , ch
        If Asc(ch) <> 0 Then Put #f2, , ch
    Wend
Close f1: Close f2
E' abbastanza semplice, apri i due files (Open), leggi un carattere alla
volta dal primo (Get) e se � diverso da zero lo scrivi sul secondo (Put).
Alla fine chiudi i due files.
Ovviamente devi adattare percorso e nomi dei files.




Altra possibilit�:
Dim Testo as String
Dim NumeroFile as Integer
NumeroFile=FreeFile
Open "D:cartellafile_origine.txt" For Binary As NumeroFile
Testo = Space$(LOF(NumeroFile))
Get #NumeroFile, ,Testo
Close #NumeroFile
Testo=Replace(Testo,Chr$(0), "")
Ciao
Filippo

 ha scritto nel messaggio 
news:8ikjb5ts0a2rv27ka...@4ax.com...

quello di Marco funziona perfettamente quello di Filippo non mi cambia 
praticamente nulla non � che manca qualche riga?
ciao
Max 


Certo, manca che Testo lo devi scrivere in un file, anche lo stesso
file se credi
Open "D:cartellafile_origine.txt" For Binary As NumeroFile
 Put #NumeroFile, ,Testo
Close #NumeroFile
oppure
Open "D:cartellafile_origine.txt" For Output As NumeroFile
Print #NumeroFile, Testo
Close #NumeroFile
ciao
Filippo


Certo, manca che Testo lo devi scrivere in un file, anche lo stesso
file se credi
Open "D:cartellafile_origine.txt" For Binary As NumeroFile


 ha scritto nel messaggio 
news:5r5kb59ban0bssi19...@4ax.com...

grazie mille a tutti e due
ciao
Max