GeneXus - Problema al leer un TXT

 
Vista:

Problema al leer un TXT

Publicado por SHunkO (23 intervenciones) el 29/06/2007 15:52:28
Buenas gente! El problema es el siguiente.
Tengo una aplicación que levanta un archivo TXT para agregarla a una BD.

La aplicación funciona correctamente SALVO que no me leel el 1er registro..

Leo el código y la verdad no puedo encontrar nada.. Alguno me podría ayudar que me falta? o porque me lee a partir del 2do registro?

El archivo lo lee perfectamente, solo que el 1er registro no lo lee.

Este es el código (algunas cosas las saqué así se entiende mejor)

&FLAG2 = 'MAESGEN5'
&ruta = 'M2002.TXT'
&i= DFROpen(&ruta)

DO case
case &i = -1... //HACE LOS CASE DE ERRORES DEL DFROPEN()
EndCase

&resNext = DFRNext()
If &i = 0
DO case
case &resnext = -1.. //HACE LOS CASE DE ERRORES DEL DFRNEXT()
case &resnext = 0

Do while DFRNext() = 0
&FLAG = 'IMPORT'
&i = dfrgtxt(&TxtContenido)
&TxtContenido=StrReplace(&TxtContenido, '#', 'Ñ')
call(PIMPORTTODO ,&TxtContenido,'002',&FLAG2)
EndDo
Aviso.Caption = ' IMPORTADO CORRECTAMENTE '
EndCase
EndIf
&i=DFRClose()

El do while lo hace porque cuando ejecuto el procedimiento, me carga datos en la base de datos, pero omite el 1er registro. Si alguien me puede ayudar, agradesco de antemano.
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

RE:Problema al leer un TXT

Publicado por PabloF (275 intervenciones) el 29/06/2007 16:59:23
Es un error de logica. el DFRNext te hace ir al siguiente registro y te marca cuando llega al EOF, por lo que tiene que estar dentro del DO WHILE. Me tome la libertad de modificar tu rutina a como me parece que funcionaria, puede faltar algun retoque. saludos PF

DO case
case &i = -1... //HACE LOS CASE DE ERRORES DEL DFROPEN()
EndCase

Do while DFRNext() <>-4 //EOF
.............&resNext = DFRNext()
.............case &resnext = 0 // Operación satisfactoria
.............case &resnext = -1
..........................&mensaje = 'Error de Secuencia en Next'
..........................&resultado = 'F'
..........................return
.............case &resnext = -3
..........................&mensaje = 'Error de Lectura en Next'
..........................&resultado = 'F'
..........................return
.............case &resnext = -4
..........................&mensaje = 'Fin de Datos'
..........................&resultado = 'F'
..........................exit
.............endcase

.............&FLAG = 'IMPORT'
.............&i = dfrgtxt(&TxtContenido)
.............&TxtContenido=StrReplace(&TxtContenido, '#', 'Ñ')
.............call(PIMPORTTODO ,&TxtContenido,'002',&FLAG2)
EndDo

if &Resnext = -4
.............Aviso.Caption = ' IMPORTADO CORRECTAMENTE '
else
.............Aviso.Caption = ' ERROR!'
ENDIF

&i=DFRClose()
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

RE:Problema al leer un TXT

Publicado por SHunkO (23 intervenciones) el 29/06/2007 18:48:57
PabloF:
Revisando el programa (con ayuda de un compañero de trabajo) me di cuenta que había un error de lógica en el programa, como pusiste vos.. "Esto está hecho para el orto" fueron sus palabras..

y lo adapté al que pusiste vos corrigiendo el mío, y resulta que con el tuyo, me lee los registros pares, es decir, el 1ro no, el 2do si.. osea, k hace una doble lectura para una escritura. Lo modifiké de la siguiente forma:

Do while DFRNext() = 0//<>-4 //EOF
// &resNext = DFRNext() //ESTA LINEA LA COMENTÉ Y EL PROGRAMA HACÍA 1 LECTURA PARA UNA ESCRITURA
Do Case //AGREGUÉ ESTA LINEA PORQUE NO ESTABA.
case &resnext = 0 // Operación satisfactoria
case &resnext = -1
TXTMSJ.Caption += 'Error de Secu...

De todas maneras, MUCHAS GRACIAS!!!
Me fue MUY útil.
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

RE:Problema al leer un TXT

Publicado por PabloF (275 intervenciones) el 29/06/2007 19:36:04
jaja, me hiciste cagar de risa.
me alegro que te sirviera y estuvo buena tu correccion.
Buen fin de semana
Pablo
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