leer archivo
Publicado por luis (50 intervenciones) el 18/11/2006 00:30:03
Hola a todos tengo este inconveniente para ver si me ayudan
Tengo un control lisbox que me selecciona de un directorio unos archivos de texto que me genera otro sistema, y que ademas estos los inserto a una tabla en mi BD. he podido filtrar aquellos archivos vacios cuyo contenido no trae nada y aquellos cuyo tamaño en caracteres no sobrepasan los 60 caracteres,
mis archivos para poderlos insertar a la tabla definitiva las inserto a una tabla temporal primeramente
mis archivos buenos tienen esta estructura
0, 11, 14821, 400, 5055, 11204, 10765, 2001375182, 3, 4, 11708,MSC00256, 0, 1, 14821
15 columnas y los archivos de texto estan delimitados por comas
ahora bien me he encontrado que otros archivos traen 13 columnas ejemplo
14821, 400, 5055, 11204, 10765, 2001375182, 3, 4, 11708,MSC00256, 0, 1, 14821
lo que necesito es generar este mismo procedimiento
For i=1 to li_Total
A[i]=i
ls_Texto = lb_1.Text(i)
// inicio de procedimiento
integer li_FileNum
string ls_Emp_Input
long ll_FLength
string valor
ll_FLength = FileLength64("C:\ubicacion de mi archivo\"+ls_texto)
li_FileNum = FileOpen("C:\ubicacion de mi archivo"+ls_texto, &
LineMode!)
IF ll_FLength <= 60 THEN // aqui filtro aquellos que son menores a 60 caracteres
FileRead(li_FileNum, ls_Emp_Input)
valor = string(li_FileNum)+", "+string(ls_Emp_Input)+" ,"+ls_texto
insert into tmp.no_procesados (descripcion,fecha)
values(:valor,:fecha)
using sqlca;
FileClose(li_FileNum) // cierra archivo
RUN("C:\eliminar.bat "+ ls_texto) // elimina archivo.
END IF
IF ll_FLength >= 61 THEN //
FileRead(li_FileNum, ls_Emp_Input)
valor = string(li_FileNum)+", "+string(ls_Emp_Input)+" ,"+ls_texto
insert into tmp.procesados (descripcion,fecha)
values(:valor,:fecha)
using sqlca;
end if
next
end if
Como puedo aplicar el fileopen, fileread, fileclose para cuando abra el archivo me pueda contar las comas que tengo dentro de mi archivo y con eso mandarle un nuevo filtro.
Tengo un control lisbox que me selecciona de un directorio unos archivos de texto que me genera otro sistema, y que ademas estos los inserto a una tabla en mi BD. he podido filtrar aquellos archivos vacios cuyo contenido no trae nada y aquellos cuyo tamaño en caracteres no sobrepasan los 60 caracteres,
mis archivos para poderlos insertar a la tabla definitiva las inserto a una tabla temporal primeramente
mis archivos buenos tienen esta estructura
0, 11, 14821, 400, 5055, 11204, 10765, 2001375182, 3, 4, 11708,MSC00256, 0, 1, 14821
15 columnas y los archivos de texto estan delimitados por comas
ahora bien me he encontrado que otros archivos traen 13 columnas ejemplo
14821, 400, 5055, 11204, 10765, 2001375182, 3, 4, 11708,MSC00256, 0, 1, 14821
lo que necesito es generar este mismo procedimiento
For i=1 to li_Total
A[i]=i
ls_Texto = lb_1.Text(i)
// inicio de procedimiento
integer li_FileNum
string ls_Emp_Input
long ll_FLength
string valor
ll_FLength = FileLength64("C:\ubicacion de mi archivo\"+ls_texto)
li_FileNum = FileOpen("C:\ubicacion de mi archivo"+ls_texto, &
LineMode!)
IF ll_FLength <= 60 THEN // aqui filtro aquellos que son menores a 60 caracteres
FileRead(li_FileNum, ls_Emp_Input)
valor = string(li_FileNum)+", "+string(ls_Emp_Input)+" ,"+ls_texto
insert into tmp.no_procesados (descripcion,fecha)
values(:valor,:fecha)
using sqlca;
FileClose(li_FileNum) // cierra archivo
RUN("C:\eliminar.bat "+ ls_texto) // elimina archivo.
END IF
IF ll_FLength >= 61 THEN //
FileRead(li_FileNum, ls_Emp_Input)
valor = string(li_FileNum)+", "+string(ls_Emp_Input)+" ,"+ls_texto
insert into tmp.procesados (descripcion,fecha)
values(:valor,:fecha)
using sqlca;
end if
next
end if
Como puedo aplicar el fileopen, fileread, fileclose para cuando abra el archivo me pueda contar las comas que tengo dentro de mi archivo y con eso mandarle un nuevo filtro.
Valora esta pregunta
0