Newsgroup: it.comp.appl.access
Titolo: importare file txt

'ciao a tutti, scusate se ogni tanto ritorno a porre la stessa
questione ma
'sono sempre alle pree con l'importazione di un file txt
'i campi sono separati da pipe e il loro contenuto puo variare da null
fino al valore massimo ammesso dal traciato record
'ho giò avuto il vostro aiuto in precedenza, ma il tracciato è
estramamente complicato e mi riserva sempre delle sorprese
H931| |1885119|1|2| |0002|00061|0|0007||
H931| |1885121|1|2| |0002|00064|0| || |0002|00065|0| ||
H931| |1885122|1|2| |0002|00072|0| || |0002|00073|0| || |0002|00074|0|
||
'fino al 5° pipe il record si ripete e costituisce la chiave
' tra il 6° e 7° pipe è indicato un progressivo
'dal 7° all'11° ci sono delle informazioni che in alcuni casi si
ripetono ogni 6 pipe fino al massimo di 65
'ho operato in questo modo,
Dim rigaTXT As String
Dim numero_pipe As String
Dim stringa_fissa As String
Dim vNumFile As Integer
Dim lungh_stringa As String
Dim progressivo As String
Open "c:\file.txt" For Input As #1
Do While Not EOF(1)
'recupero la stringa fissa
stringa fissa = Left(rigaTXT, 15)
'H931| |1885122|1|
Dim progressivo = 0
Line Input #1, rigaTXT
'Debug.Print rigaTXT
vNumFile = FreeFile
'conto i pipe
numero_pipe = Len(rigaTXT) - Len(Replace(rigaTXT, "|", ""))
Debug.Print numero_pipe
Loop
Close #1
End Sub
'Il risultato finale che devo ottenere è quello riportato di sotto
'dal 1° al 17° pipe il tutto resta cosi com'è
'se supero il 17° fino al 23° il record deve andare a capo una volta e
deve aggiungersi alla stringa fissa
'se supero il 23° fino al 29° il record deve andare a capo la seconda
volta e deve aggiungersi alla stringa fissa e cosi via
'per tenere memoria dell'operazione di "aggiunta" il campo previsto
tra i pipe 6 e 7 deve avere valore 0
H931| |1885119|1|2| |0002|00061|0|0007||
H931| |1885121|1|2| |0002|00064|0| |
H931| |1885121|0|2| |0002|00065|0| ||
H931| |1885122|1|2| |0002|00072|0| ||
H931| |1885122|0|2| |0002|00073|0| ||
H931| |1885122|0|2| |0002|00074|0| ||
'Non riesco a capire come posso estrarre le stringa variabile che è
riportata dopo la chiave ed operare poi come di seguito:
If lungh_stringa = "17" Then
'===================
Open "c:\file.txt" For Append As #vNumFile
Print #vNumFile, stringa_fissa &  stringa_variabile
Close #vNumFile
'=====================
ElseIf lungh_stringa = "23" Then
'=======================
Open "c:\file.txt" For Append As #vNumFile
Print #vNumFile, stringa_fissa & progressivo & stringa_variabile1
Print #vNumFile, stringa_fissa & progressivo & stringa_variabile2
Close #vNumFile
'=====================
 e cosi via
grazie
massimo

 ha scritto nel messaggio 
news:80184830-e7d5-4014...@v19g2000yqn.googlegroups.com...
'ciao a tutti, scusate se ogni tanto ritorno a porre la stessa
questione ma
'sono sempre alle pree con l'importazione di un file txt
'i campi sono separati da pipe e il loro contenuto puo variare da null
fino al valore massimo ammesso dal traciato record
'ho giņ avuto il vostro aiuto in precedenza, ma il tracciato č
estramamente complicato e mi riserva sempre delle sorprese
usa variabili matrici... ti importi la stringa intera, la scomponi usando il 
pipe come separatore, e poi vai di indice per trovare il tutto e farne ciņ 
che meglio credi...
-- 
---
Ciao
Pablitomf
FORZA NAPOLI - - - SEMPRE!
Tifosi Napoletani, gente fantastica
http://it.youtube.com/watch?v=gUqFHOXrK-M&feature=related
 

 Tifosi Napoletani, gente fantasticahttp://
it.youtube.com/watch?v=gUqFHOXrK-M&feature=related
Puoi darmi qualche dritta in più
Non sono un programmatore
Mi occupo di cartografia.
Grazie
Massimo

Puoi darmi qualche dritta in più
Non sono un programmatore
Mi occupo di cartografia.
Grazie
Massimo
-------------
in una form inserisci questo codice :
Private Sub GestisciRiga(tuaStringaDelFileTXT As String)
Dim MyArray()        As String
Dim ValMin           As Long
Dim ValMax           As Long
MyArray = Split(tuaStringaDelFileTXT, "|")
ValMin = LBound(MyArray) ' Indice minore
ValMax = UBound(MyArray) ' Indice maggiore (numero Pipe)
MsgBox "Numero Pipe (per cui numero campi) : " & ValMax, , "INFO"
'Crea un indice contatore da passare all'arrey
'che parte dal valore minimo fino al valore massimo
'per ciclare tutti i campi e verificarne il valore
For ValMin = 0 To ValMax
    MsgBox MyArray(ValMin), , "Campo n. " & ValMin & " di " & ValMax
Next ValMin
End Sub
nella stessa form metti sull'evento clic di un pulsante questo codice :
    Call GestisciRiga("H931| |1885122|1|2| |0002|00072|0| || |0002|00073|0| 
|| |0002|00074|0|")
salva tutto...
apri il form... clicca sul pulsante e vedi cosa fa...
adattalo alla tua esigenza...
;)
Se hai problemi fa un fischio
