Power Builder - Manejo de Carpetas y Archivos en Power Builder 8.0

 
Vista:

Manejo de Carpetas y Archivos en Power Builder 8.0

Publicado por GeovaNet (4 intervenciones) el 16/12/2003 23:55:14
Necesito leer archivos de Texto, y luego almacenarlos en una Base de datos.
Automaticamente debe leer una estructura jerarquica de carpetas, y dentro de cada carpeta un archivo del cual debo extraer los datos.
Existe alguna manera en Power Builder de explorar carpetas y abrir archivos para extraer la información y almacenar en la Base de Datos Sybase
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:Manejo de Carpetas y Archivos en Power Builder

Publicado por Ricardo (1957 intervenciones) el 17/12/2003 17:11:17
Hola que tal:

La forma de explorar carpetas lo puedes realizar con GetFileOpenName para obtener el nombre y ruta del archivo, ya para almacenar en tu db, debes de crear una tabla que te permita el control de dicho almacenamiento.

Tienes que ver:

1. Te interesa saber el origen del archivo
2. Te interesa conocer el niverl jerarquico del archivo

Ya con esto puedes diseñar un bosquejo de tu tabla para determinar los campos

(Continua)
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 en Power Builder

Publicado por Ricardo (1957 intervenciones) el 17/12/2003 18:09:28
Por ejemplo:

llave
ruta
nivel
archivo
contenido

Algo asi, tambien puedes utilizar algunas apis para la exploracion.

Espero alguien mas aporte a tu problema

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

RE: Guardar archivos en una BD (1)

Publicado por Oscar (1178 intervenciones) el 18/12/2003 16:18:30
Acá va el aporte para guardar archivos en una BD. Este código se publicó hace un tiempo atrás. Ahora está corregido y aumentado. Te sugiero que crees el ejemplo con los mismos nombres y tipos de datos que te propongo. El ejemplo es para SQL Server y PB8 (se supone que adaptarás a Sybase).

Este ejemplo permite buscar cualquier tipo de archivo (word, excel, bmp, PowerPoint, web, etc.), guardarlo en la BD, y por supuesto recuperarlo en su programa correspondiente cuando se da doble clic. Utiliza OLE.

1. Creas una tabla llamada mitabla, en SQL Server:
id.................(int) Clave principal (si quieres identity)
nombre.........(var)
archivo....(IMAGE) .Que acepte Null
Nota: En SQL server se elige IMAGE, en ASA Long Binary, para cualquier tipo y tamaño de archivo.

2. Creas tu objeto DW (tipo FreeForm o Tabular); incluyes los campos id y nombre (no podrás incluir el campo archivo. No te preocupes).

3.En una ventana incluyes los siguientes elementos:
* Un control DataWindow (que está relacionado con tu objeto DataWindow).
* Fuera de los botones clásicos (Anterior, Siguiente, Nuevo registro y Guardar Registro), incluyes dos botones extras: EXAMINAR OLE y GUARDAR OLE.
* Insertas un OLE Control encima el control DW, en la Ficha Create New, eliges "Documento de Microsoft Word" (Reduces, su tamaño. Este OLE control, se llamará: ole_archivo y en su propiedad DisplayType, es importante que cambies, displascontent! por displayasicon!)
//(CONTINUA...)
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: Guardar archivos en una BD (2)

Publicado por Oscar (1178 intervenciones) el 18/12/2003 16:21:24
//(CONTINUACIÓN...)
4. Los scripts de los botones son:
* Script del Botón EXAMINAR OLE
/********************/
//abres y muestras en el OLE el archivo seleccionado
string ls_ruta, ls_NombreArchivo, ls_filtro

//asignas el filtro de extension para los archivos
ls_filtro = "DOC Files (*.doc),*.doc," + "Excel Files (*.xls),*.xls,"+"All Files (*.*),*.*,"

GetFileOpenName ( "Archivos", ls_ruta, ls_NombreArchivo , "doc", ls_filtro)

//Verificas si en la inserción del OLE existe error
IF ole_archivo.insertfile(ls_ruta)=-1 THEN
MessageBox("Error", "Error al procesar la tarea de apertura de archivo, verifique")
end if
/********************/
* Script del botón GUARDAR OLE
/********************/
//declaracion de la variable local tipo blob
blob lblb_archivo
Long ll_codigo

//Lees el codigo de la fila actual
ll_codigo=dw_1.GetItemNumber(dw_1.GetRow(),"num_cod")

//obtienes desde el control los datos del archivo
lblb_archivo=ole_archivo.objectdata

//ingresas el blob a la base de datos
//Ve la ayuda de UPDATEBLOB
UPDATEBLOB mitabla SET archivo = :lblb_archivo
WHERE num_cod=:ll_codigo;

IF sqlca.sqlcode=0 THEN
messagebox('','Ingreso existoso.')
ELSE
messagebox('','Error en el ingreso')
END IF

//(CONTINUA...)
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: Guardar archivos en una BD (3)

Publicado por Oscar (1178 intervenciones) el 18/12/2003 16:25:59
//(CONTINUACIÓN)
5. Cuando estés en un determinado registro, para recuperar tu objeto OLE (dando doble clic en ese icono). Debes incluir el siguiente script en el evento RowFocusChanged del Control dataWindow.
* Script en el evento RowFocusChanged del dw_1
/*****************************/
//asignacion de la variable local blob
blob lblb_archivo
Long ll_codigo

//Lees el codigo de la fila actual
ll_codigo=dw_1.GetItemNumber(dw_1.GetRow(),"num_cod")

SELECTBLOB archivo
INTO :lblb_archivo
FROM mitabla
WHERE num_cod =:ll_codigo;
//Donde num_cod es el argumento o criterio para rescatar desde la BD.

ole_archivo.objectdata=lblb_archivo

6. Finalmente, en el evento open de la ventana el script es:
dw_1.settransobject(sqlca)
dw_1.retrieve()

//Aumentá este script
dw_1.TriggerEvent(RowFocusChanged!)

Notas:
* Cada vez que edites el archivo OLE, debes actualizarlo, pulsando el botón GUARDAR OLE.
* Los archivos originales de las carpetas puedes borrarlos si quieres. Total ya están a salvo en la BD.

Si alguien sugiere qué se puede mejorar este código, para seguir en la lucha con los OLEs, bienvenido.
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: Guardar archivos en una BD (3)

Publicado por GeovaNet (4 intervenciones) el 18/12/2003 16:44:38
Amigos:
Ricardo, Oscar
Gracias por su inmediata atención, y por su ayuda incondicional.
Oscar, exactamente mi requerimiento no es almacenar archivos en la BDD, si mas bien, es extraer información de archivos y almacenarlos en una BDD, por favor si me puedes ayudar te agradecería.
Ricardo con GetFileOpenName puede abrir un archivo a la vez y manualmente, pero yo requiero que se explore automaticamente.
Te muestro a continuacion La estructura de información a explorar :
HEPS
.......BATCHISO
....................17088506
-------------00100000.BTT
-------------00200000.BTT
...................20030324
--------------00100000.BTT
...................20030901
--------------00200000.BTT
................
..................

Requiero explorar todas las supcarpetas de BATCHISO, y luego abrir los archivos que se encuentren bajo esta, donde obtengo la información la cual debe ser almacenda en la BDD, pero todo esto requiero que se haga de manera automática, cada cierto tiempo.

Por favor si me ayudas
Nuevamente Gracias
Saludos
Geovanni.
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

PROBLEMA Guardar archivos en una BD (3)

Publicado por Ismael (38 intervenciones) el 18/12/2003 16:47:59
Anteriormente probé esa técnica para guardar archivos en la base de datos, pero tuve problemas con los archivos de imagen JPG, estos archivos se guardan en la bd con un tamaño exponencialmente grande. Por ejemplo si el archivo era de 20 k, en la bd se guardaba con un tamaño de 2200 k.... como se puede evitar eso???
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 Guardar imágenes en una BD

Publicado por Oscar (1178 intervenciones) el 20/12/2003 01:30:55
Cuando se pretende mostrar imágenes en un DW, siempre se aconsejó utilizar un computed field con la función bitmap(). Más detalles en:

http://lawebdelprogramador.com/news/mostrar_new.php?id=73&texto=Power+Builder&n1=111546&n2=2&n3=0&n4=0&n5=0&n6=0&n7=0&n8=0&n9=0&n0=0

De esa manera no ocupan un espacio exagerado en la BD. Supongo que este problema se dá, ya que el formato JPG, en sí ya es un formato comprimido, y como se usa un tipo de dato Binario para guardarlo, supongo que se convierte en eso, con el consiguiente crecimiento en espacio.

Ese mismo problema existía en Access (no sé actualmente, con las nuevas versiones). Los archivos JPG y GIF, se convertían automáticamente a bmp (mapa de bits).

Quizá por ahí, exista una explicación más técnica; pero por el momento es mejor que desistas de guardar tus imágenes en la BD. Es mejor guadar sólo su ruta.
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 Hector

RE: Guardar archivos en una BD (3)

Publicado por Hector (1 intervención) el 10/07/2015 23:01:03
Gracias Oscar, vigente con PB 12.5
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