COMO LEER ARCHIVOS DE LONGITUD FIJA EN VB 6

julio peña
06 de Noviembre del 2010
Hola buen dia si alguien pudiera ayudarme de favor a leer
un archivo de texto de longitud fija el archivo tiene la
siguiente forma

430001 CAÑADA VAZQUEZ, JOAQUIN 12111255B
430002 MENDEZ CUBILLO, LORENZO 58777000Ñ
430006 CONSTRUCCIONES EL BUENO, S.A. A33366684
430012 MENDIETA GARCÍA, FELIPE 06254000A
430015 CARRILLO CONTRERAS, ROSARIO 55666555Z

lo he leido pero me muestra un registro en una sola linea y lo que quiero es que me lo muestre como una tabla en un grid en vb6 es decir

Folio apell_paterno Apell_materno Nombre codigo
430001 CAÑADA VAZQUEZ, JOAQUIN 12111255B
430002 MENDEZ CUBILLO, LORENZO 58777000Ñ
430006 CONSTRUCCIONES EL BUENO, S.A. A33366684
430012 MENDIETA GARCÍA, FELIPE 06254000A
430015 CARRILLO CONTRERAS, ROSARIO 55666555Z

GUCESOFT
07 de Noviembre del 2010
Hola
Utiliza la funcion de vb "split"

...
dim Columnas as variant
dim Linea as string
...
Una vez tengas la linea...
...
Columnas = split(Linea," ",,vbTextCompare)
...
Es decir generas una matriz "Columnas", con los valores de la línea
que estes leyendo, si utilizamos como ejemplo la primera linea:

430001 CAÑADA VAZQUEZ, JOAQUIN 12111255B
FOLIO Columnas(0) = "430001"
APELL_PATERNO Columnas(1) = "CAÑADA"
APELL_MATERNO Columnas(2) = "VAZQUEZ"
NOMBRE Columnas(3) = "JOAQUIN"
CODIGO Columnas(4) = "12111255B"

Pero observo que no solo trabajas con personas físicas, tambien tienes
empresas y ademas podria ocurrir que tanto los apellidos como los nombres
podrian ser compuestos, con lo que utilizar como separador un espacio
en blanco para obtener las columnas no siempre te daria el resultado
que esperas.
Lo ideal seria que el archivo de texto viniera ya formateado con
un separador de columnas...

430001#CAÑADA#VAZQUEZ#JOAQUIN#12111255B
...
430006###CONSTRUCCIONES EL BUENO, S.A.#A33366684
...
498888#RUIZ DE QUESADA#SANTIAGO#JOSE ALBERTO#34567879H

De esta manera no tendrías problemas

Espero haberte ayudado.
Saludos.

julio peña
08 de Noviembre del 2010
HOLA GUCESOFT Antes que Gracias Hermano por interesarte en mi problema, te comento ya lo intente y no me queda me sigue saliendo la misma linea igual mira este es mi codigo que estoy usando.
Te lo envio de dos formas.
forma 1.
Private Sub Command1_Click()
Set rs = New ADODB.Recordset
Set con = New ADODB.Connection
'Cadena de conexión
con.Open "DRIVER={Microsoft Text Driver (*.txt; *.csv)};" & _
"DBQ=" & App.Path & ";", "", ""
'Ejecutamos el recordset pasandole el archivo de texto en la cláusula From
rs.Open "select * from [ejemplo#txt]", con, adOpenStatic, _
adLockReadOnly, adCmdText
i = 1
While (Not rs.EOF)
For j = 0 To 3
Datos = Split(rs.Fields(0), " ", vbTextCompare)
''split(Linea," ",,vbTextCompare
MSF1.TextMatrix(i, j) = Datos(0)
MSF1.TextMatrix(i, j) = Datos(1)

Next j
rs.MoveNext
MSF1.ColWidth(0) = 3000
i = i + 1
Wend
'eliminamos las variables
''Set Leer_Txt_con_Ado = rs
Set rs = Nothing
Set con = Nothing
'Le asignamos el Datasource del datagrid a la función que devuelve el recordset
''Set DataGrid1.DataSource = Leer_Txt_con_Ado
''Leer_Txt_con_Ado

End Sub

Esta es otra.
Public Sub LeerArchivo()
Open App.Path & "" & Trim(Text1.Text) & ".txt" For Input As #1
''Open "E:Examen TSYSExamenClientes.txt" For Input As #1
i = 1
MSF1.Rows = 2: MSF1.Cols = 4
While Not EOF(1)
Input #1, MDatos
MSF1.Rows = i + 1
For j = 0 To 3
Datos = Split(MDatos, vbTab, -1)
MSF1.TextMatrix(i, j) = Datos(j)
Next j
i = i + 1
Wend
Close #1
End Sub

******************
Bueno muchas gracias por tu apoyo, que tengas un lindo dia y que dios te bendiga, Salu2.