Visual Basic - EOF no detecta fin de archivo

Life is soft - evento anual de software empresarial
 
Vista:

EOF no detecta fin de archivo

Publicado por Rubén González (7 intervenciones) el 27/06/2016 15:36:32
Buen día.

Tengo que leer los datos de un archivo y grabarlos en una tabla de una base de datos, pero el EOF no me detecta el fin del archivo que contiene los datos a subir, y por ende me da error y se detiene.
A continuación el código simplificado para mostrar el error:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub cmdPrecios_Click()
 On Error GoTo mensaje
 Open txtArchivo For Input As #1
 
 Input #1, VKORG, VTWEG, VKBUR, PLTYP, matnr, DATAB, DATBI, KBETR, KPEIN, KMEIN
 While Not EOF(1)
    lblProducto = matnr
    Input #1, VKORG, VTWEG, VKBUR, PLTYP, matnr, DATAB, DATBI, KBETR, KPEIN, KMEIN
 Wend
 
 Close #1
mensaje:
   MsgBox "No se actualizaran los precios. " & vbCrLf & Err.Description, vbInformation + vbOKOnly, "Mensaje"
End Sub

Se cambió el contenido real para mostrar en una etiqueta los datos leídos. Con todo y de esta manera aún da el error que coloqué en mi código, más: "La entrada de datos ha sobrepasado el final del archivo".
He colocado el ciclo de diferentes maneras y sigue dando el error.
Agradezco la ayuda que me puedan brindar.

Rubén Darío.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Andres Leonardo
Val: 3.117
Oro
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

EOF no detecta fin de archivo

Publicado por Andres Leonardo (1798 intervenciones) el 28/06/2016 00:26:09
Solo una consulta deseas leer el archivo o deseas Recoger datos'??
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

EOF no detecta fin de archivo

Publicado por Ruben Gonzalez (7 intervenciones) el 28/06/2016 01:11:37
Deseo leer el contenido del archivo para introducir los datos que contiene en una tabla de la base de datos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Andres Leonardo
Val: 3.117
Oro
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

EOF no detecta fin de archivo

Publicado por Andres Leonardo (1798 intervenciones) el 28/06/2016 15:55:31
1
2
3
4
5
6
7
8
Open Archivo For Input As f
 
                While Not EOF(f)
                    Line Input #f, Linea
                    TEXTO = mid(Linea,1,10)
                    'aqui tengo el valor de texto los primeros 10 caracteres de la linea aqui deberias reunir las variables para enviar a la tabla
                Wend
             Close f

Seria importante pasaras el archivo texto como ejemplo para verlo mejor. si es separado por comas podrias hacer otro bucle para separar los campos con Split.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

EOF no detecta fin de archivo

Publicado por Ruben Gonzalez (7 intervenciones) el 28/06/2016 16:14:46
Buen día.

El problema no es la forma como leo el archivo, porque el ejemplo que puse lee bien los datos, de hecho me muestra en la etiqueta los valores que va leyendo correctamente, el problema es solamente que no detecta el fin del archivo.
Este es parte del archivo:

1400,12,140,J302105080,10267,,25.05.2016,31.12.9999, 8.189,60 ,,SC
1400,12,140,J075387341,10167,,23.05.2016,31.12.9999, 120,00 ,,KG
1400,12,140,J075387341,10168,,23.05.2016,31.12.9999, 5.281,00 ,,SC
1400,12,140,J075387341,10169,,23.05.2016,31.12.9999, 117,00 ,,KG
1400,12,140,J075387341,10170,,23.05.2016,31.12.9999, 5.152,00 ,,SC
1400,12,140,J075387341,10171,,23.05.2016,31.12.9999, 115,00 ,,KG
1400,12,140,J075387341,10172,,23.05.2016,31.12.9999, 4.960,00 ,,SC
1400,12,140,J075387341,10173,,23.05.2016,31.12.9999, 115,00 ,,KG
1400,12,140,J075387341,10174,,23.05.2016,31.12.9999, 4.960,00 ,,SC
1400,12,140,J075387341,10460,,23.05.2016,31.12.9999, 115,00 ,,KG
1400,12,140,J075387341,10461,,23.05.2016,31.12.9999, 4.960,00 ,,SC
1400,12,140,J075387341,10266,,25.05.2016,31.12.9999, 201,57 ,,KG
1400,12,140,J075387341,10267,,25.05.2016,31.12.9999, 8.189,60 ,,SC
1400,12,140,J075271068,10167,,23.05.2016,31.12.9999, 120,00 ,,KG
1400,12,140,J075271068,10168,,23.05.2016,31.12.9999, 5.281,00 ,,SC
1400,12,140,J075271068,10169,,23.05.2016,31.12.9999, 117,00 ,,KG
1400,12,140,J075271068,10170,,23.05.2016,31.12.9999, 5.152,00 ,,SC
1400,12,140,J075271068,10171,,23.05.2016,31.12.9999, 115,00 ,,KG
1400,12,140,J075271068,10172,,23.05.2016,31.12.9999, 4.960,00 ,,SC
1400,12,140,J075271068,10173,,23.05.2016,31.12.9999, 115,00 ,,KG
1400,12,140,J075271068,10174,,23.05.2016,31.12.9999, 4.960,00 ,,SC
1400,12,140,J075271068,10460,,23.05.2016,31.12.9999, 115,00 ,,KG
1400,12,140,J075271068,10461,,23.05.2016,31.12.9999, 4.960,00 ,,SC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 147
Ha disminuido 1 puesto en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

EOF no detecta fin de archivo

Publicado por Juan Gilberto (323 intervenciones) el 28/06/2016 16:30:12
Prueba a Utilizar lo siguiente :


1
2
3
4
5
6
Do Until EOF(1) = True
 
    Input #1, VKORG, VTWEG, VKBUR, PLTYP, matnr, DATAB, DATBI, KBETR, KPEIN, KMEIN
    lblProducto = matnr
 
Loop


y quita el INPUT #1 de afuera del loop
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

EOF no detecta fin de archivo

Publicado por Ruben Gonzalez (7 intervenciones) el 28/06/2016 16:35:46
Lo coloqué exactamente como me indicas y aún me presenta el mismo error.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Andres Leonardo
Val: 3.117
Oro
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

EOF no detecta fin de archivo

Publicado por Andres Leonardo (1798 intervenciones) el 28/06/2016 16:32:27
ok una cosa mira la codificacion del archivo con un editor avanzado como textpad o notepad++

la codificacion deberia ser ANSI ... cuando dice predeterminado no detecta el EOF
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

EOF no detecta fin de archivo

Publicado por Ruben Gonzalez (7 intervenciones) el 28/06/2016 17:09:38
Los datos me los están pasando en una hoja de cálculo, desde excel los grabo como csv y con cualquiera de las tres opciones que veo siempre queda con codificación UNICODE (UTF-8).
En el bloc de notas se ve bien el archivo luego de guardarlo con cualquiera de las tres opciones .csv
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Andres Leonardo
Val: 3.117
Oro
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

EOF no detecta fin de archivo

Publicado por Andres Leonardo (1798 intervenciones) el 28/06/2016 17:15:53
me parece que es por eso ... intenta guardarlo como ANSI y prueba tu codigo

Me parece que el problema en si no es el codigo si no la codificacion del archivo

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

EOF no detecta fin de archivo

Publicado por Ruben Gonzalez (7 intervenciones) el 28/06/2016 19:20:55
Descargué notepad++ para guardarlo con codificación ANSI, pero al guardarlo y volverlo a abrir siempre dice que está en codificación UTF-8.
De todas maneras el problema se resolvió y era que la cantidad de campos que tenía el archivo era superior al número de variables del INPUT, de hecho igualé las cantidades y funciona; si agrego un valor más al archivo en la última línea, da el error, si pongo la cantidad de valores iguales a la cantidad de variables, funciona correctamente.

Gracias por tu apoyo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Andres Leonardo
Val: 3.117
Oro
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

EOF no detecta fin de archivo

Publicado por Andres Leonardo (1798 intervenciones) el 28/06/2016 19:32:08
Me alegra que hayas encontrado la solucion

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar