Power Builder - Manejo de carpetas y archivos (para Geovanet)

 
Vista:

Manejo de carpetas y archivos (para Geovanet)

Publicado por Oscar (1178 intervenciones) el 19/12/2003 23:06:36
Hola Geovanni:
Respondiendo a tu anterior post, por el momento te mando la primera de tus interrogantes, que consiste en explorar todas las subcarpetas de BATCHISO, y luego mostrar la ruta de todos los archivos en un lb_3.

Por facilidad, mi ejemplo tiene el siguiente árbol:

C:\Micarpeta
Dentro de esa Micarpeta, se hallan:
subcarpeta1
..archivo1.txt
..archivo2.bmp
subcarpeta2
..archivo5.doc
..archivo7.xls
..archivo10.doc
subcarpeta3
..archivo5.jpg
subcarpeta 4
//En fin las carpetas y archivos que quieras.

1. En una ventana insertas tres controles listBox (lb_1, lb_2 y lb_3), dos botones: cb_MostrarCarpetas y cb_MostrarArchivos y un statictext llamado st_path (para ver la ruta).

2. Script del botón cb_MostrarCarpetas
//Se usa el código 16 para ver archivos y carpetas.
//Ve la ayuda de Dirlist
lb_1.DirList("C:\Micarpeta\*.*", 16, st_path)

3. Script del botón cb_MostrarArchivos
integer i,j
string ls_Item,ls_NombreCarpeta,ls_archivo

For i=1 to lb_1.TotalItems ( )
//Obtenemos el item del lb_1
ls_Item = lb_1.Text(i)
//Si es una subcarpeta
If ls_Item<>"[..]" then
//hacemos un Dirlist en lb_2. Pero primero quitamos los paréntesis
//cuadrados de por ejemplo[subcarpeta1] para tener sólo: subcarpeta1
ls_NombreCarpeta=Mid(ls_Item,2,Len(ls_item)-2)

//(CONTINUA...)
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

Manejo de carpetas y archivos (continuación)

Publicado por Oscar (1178 intervenciones) el 19/12/2003 23:10:13
//(CONTINUACIÓN...)
//Mostramos los archivos de esa subcarpeta en el lb_2.
//Se usa el parámetro 0 para ver sólo archivos
lb_2.DirList("C:\Micarpeta\"+ls_NombreCarpeta+"\*.*", 0, st_path)
for j=1 to lb_2.TotalItems()
ls_archivo=lb_2.text(j)
//Visualizamos todos los archivos en el lb_3
lb_3.AddItem(st_path.text+"\"+ls_archivo)
next
end if
Next

Retoques:
* El script del botón cb_mostrar carpetas, puedes colocarlo en el evento open de tu ventana.
* El lb_1 y lb_2, puedes tornarlo invisibles. Al fin y al cabo, sólo en el lb_3, se muestran las rutas completas de todos tus archivos, que están contenidas dentro las carpetas de BATCHISO. Una vez que tengas esas rutas, puedes hacer lo que quieras con esos archivos, abrirlos, visualizarlos, guardarlos en un BD, etc.
* Para que se dispare automáticamente el cb_MostrarArchivos, cada cierto tiempo, usas:
cb_MostrarArchivos.TriggerEvent(Clicked!)
Luego de programarlo por supuesto con el Timer (hay varios ejemplos del Timer en este mismo foro).

Nota: Una vez que ya tengas las rutas de los archivos, no entendí exactamente que deseas hacer con ellos?. Es confuso lo que dices:
"no deseo almacenar archivos en la BDD, si mas bien, extraer información de archivos y almacenarlos en una BDD"

Un saludo desde Sucre-Bolivia
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:Manejo de carpetas y archivos (continuación)

Publicado por GeovaNet (4 intervenciones) el 22/12/2003 17:14:48
Oscar.
Exelente tu idea.
Sobre tu ultima inquietud, te explico.
El objetivo de esta aplicacion es extraer información de diversos archivos de texto, para luego almacenarlos en una base de datos SYBASE.
Ahora la siguiente pregunta, es cuales son las sentencia para abrir, extraer, informacion de los archivos.
Te envio a tu Mail, un archivo de ejemplo.
Y una pregunta adicional, como controlo, para que el archivo de sea leido varias veces

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

RE:Copiar registros de archivo plano a BD

Publicado por Oscar (1178 intervenciones) el 24/12/2003 04:10:26
Abrir un archivo de texto no hay problema. Sólo insertas en tu ventana un control MultilineEdit con su propiedad VSCrollBar activada. En el botón Abrir pegas el siguiente script (permite leer inclusive, archivos mayores a 32765 bytes)

blob lbl_data
blob lbl_temp
long ll_file

ll_file=FileOpen("C:\mitexto.txt",streammode!)
Do While FileRead(ll_file,lbl_temp)>0
lbl_data+=lbl_temp
loop
FileClose(ll_file)

mle_1.Text=string(lbl_data)

El mayor problema, es copiar los registros del archivo a la BD. Por eso, expongo el problema; para que sugieran los amigos del foro: "varias cabezas piensan mejor que una".

En el archivo de texto, lor registros están separados por el símbolo arroba y los campos tienen la misma longitud. Es decir:
@ 123 0003 00005 000034
@ 234 0012 00034 000023
@ 345 0231 00231 000234

El asunto, es copiar estos registros a la BD (en cuatro campos diferentes). Primero resolvamos eso, ya veremos el otro punto, de evitar que los archivos se repitan.

Nota: Una idea, es realizar el proceso inverso de convertir un DW a texto (áun no sé cómo); ojalá existan otras sugerencias. Esperemos...
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:Manejo de carpetas y archivos (continuación)

Publicado por Jorge (900 intervenciones) el 24/12/2003 14:25:32
Hola, ..te refieres a una dw pasarla a un diseño de texto ??

Hasta ahora lo hago muy a mano. asi.

If value = 1 Then
Existe=FileExists(file)
IF Existe Then
Borra=MessageBox("Salvar", "Reemplaza el Archivo : " + file, &
Question!, YesNo! ,1)
End If
End If

// te fijas si agregas o sobreescribis

If borra = 1 Then
FileDelete(file)
Linea=FileOpen((file),LineMode!, Write!, LockWrite!, Append!)
else
Linea=FileOpen((file),LineMode!, Write!, LockWrite!, Append!)
End if

For n= 1 to (nro)
// leer la dw,
Todo_envio = (Banco_envio + Cajero_envio +Fecha_envio +Barra_envio)
FileWrite(linea,Todo_envio)
next

FileClose(Linea)

QUizas les sirva...

Suerte..
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