Leer TXT con FSO.

08/08/2006 - 13:11 por fpmweb | Informe spam
Hola,

estoy leiendo un fichero txt con FileSystemObject, y me surge un problema.

El fichero dispone de varias lineas con infromación, por ejemplo:

AAADFSFSDFSD111111111Xasfas fasdfasdfdasfasd 00000002121213135afaasf
BBBDFSFSDFSD222222222asfas fasdfasd fdasfasd 00000002121213135afaasf
CCCDFSFSDSD222222222asfas fa sdfa fasdf asd d 00000002121213135afaasf

Ahora tengo que recorrer todo el txt, recuperar linea a linea y formatearlo.
En definitiva preparar los campos para realizar un insert en la base de datos.
Deberia quedar asi:

AAADFSFSDFSD
111111111
Xasfas fasdfasdfdasfasd
00000002121213135
afaasf


BBBDFSFSDFSD
222222222
asfas fasdfasd fdasfasd
00000002121213135
afaasf


CCCDFSFSDSD
etc

De esta forma recupero la linea, corto los trozos que necesito y voy
haciendo el insert en la BD para cada bloque (o linea). El problema surge que
no lo recupera correctamente.

Tengo el siguiente código:

Set fso = CreateObject("Scripting.FileSystemObject")
Set tso = fso.OpenTextFile ("C:\Inetpub\wwwrootssssp\eees\" & "xxxx.txt")
do until (tso.AtEndOfStream)
response.write Mid(tso.ReadLine, 1, 9) & "<br>"
loop
tso.close


Aquí el primer response.write Mid(tso.ReadLine, 1, 9) & "<br>" lo recupera
bien,
pero cuando trato de recuperar la segunda parte del campo no lo recupera bien


Set fso = CreateObject("Scripting.FileSystemObject")
Set tso = fso.OpenTextFile ("C:\Inetpub\wwwrootssssp\eees\" & "xxxx.txt")
do until (tso.AtEndOfStream)
response.write Mid(tso.ReadLine, 1, 9) & "<br>"
response.write Mid(tso.ReadLine, 10, 3) & "<br>"
loop
tso.close

En este caso no lo recupera bien, me aparecen menos registros.

¿¿¿¿ Alguna solución ???

¿Hay algún método movefirst, movelast...?

Gracias.
 

Leer las respuestas

#1 Nuno Santos
08/08/2006 - 13:42 | Informe spam
No puedes hacer el readline várias veces dentro del ciclo... aqui te evio un
ejemplo en vb que hice...

file txt: (conteúdo del file teste.txt)
12345ABC012CDEFGH1
54321CBA210HGFEDC2

<codigo>
Private Sub Command1_Click()

Dim fso As New FileSystemObject
Dim tso
Set tso = fso.OpenTextFile(Me.Text1.Text)

Do Until (tso.AtEndOfStream)
strAux = tso.ReadLine 'coloco el valor de la línea en una variavel

Me.Text2.Text = Me.Text2.Text & Mid(strAux, 1, 5) & vbCrLf
Me.Text2.Text = Me.Text2.Text & Mid(strAux, 6, 3) & vbCrLf
Me.Text2.Text = Me.Text2.Text & Mid(strAux, 9, 3) & vbCrLf
Me.Text2.Text = Me.Text2.Text & Mid(strAux, 12, 6) & vbCrLf
Me.Text2.Text = Me.Text2.Text & Mid(strAux, 18, 1) & vbCrLf & vbCrLf
Loop
tso.Close
Set fso = Nothing

End Sub

Private Sub Form_Load()
Me.Text1.Text = App.Path & "\teste.txt"
Me.Text2.Text = ""
End Sub
</codigo>
NS


Nuno Santos
nunos7[REMOVER]@hotmail.com

"fpmweb" wrote in message
news:
Hola,

estoy leiendo un fichero txt con FileSystemObject, y me surge un problema.

El fichero dispone de varias lineas con infromación, por ejemplo:

AAADFSFSDFSD111111111Xasfas fasdfasdfdasfasd 00000002121213135afaasf
BBBDFSFSDFSD222222222asfas fasdfasd fdasfasd
00000002121213135afaasf
CCCDFSFSDSD222222222asfas fa sdfa fasdf asd d
00000002121213135afaasf

Ahora tengo que recorrer todo el txt, recuperar linea a linea y
formatearlo.
En definitiva preparar los campos para realizar un insert en la base de
datos.
Deberia quedar asi:

AAADFSFSDFSD
111111111
Xasfas fasdfasdfdasfasd
00000002121213135
afaasf


BBBDFSFSDFSD
222222222
asfas fasdfasd fdasfasd
00000002121213135
afaasf


CCCDFSFSDSD
etc

De esta forma recupero la linea, corto los trozos que necesito y voy
haciendo el insert en la BD para cada bloque (o linea). El problema surge
que
no lo recupera correctamente.

Tengo el siguiente código:

Set fso = CreateObject("Scripting.FileSystemObject")
Set tso = fso.OpenTextFile ("C:\Inetpub\wwwrootssssp\eees\" &
"xxxx.txt")
do until (tso.AtEndOfStream)
response.write Mid(tso.ReadLine, 1, 9) & "<br>"
loop
tso.close


Aquí el primer response.write Mid(tso.ReadLine, 1, 9) & "<br>" lo recupera
bien,
pero cuando trato de recuperar la segunda parte del campo no lo recupera
bien


Set fso = CreateObject("Scripting.FileSystemObject")
Set tso = fso.OpenTextFile ("C:\Inetpub\wwwrootssssp\eees\" &
"xxxx.txt")
do until (tso.AtEndOfStream)
response.write Mid(tso.ReadLine, 1, 9) & "<br>"
response.write Mid(tso.ReadLine, 10, 3) & "<br>"
loop
tso.close

En este caso no lo recupera bien, me aparecen menos registros.

¿¿¿¿ Alguna solución ???

¿Hay algún método movefirst, movelast...?

Gracias.

Preguntas similares