Grabar y mostrar imagenes desde la base de datos

Temas/problemas relacionados con Power Builder.

Grabar y mostrar imagenes desde la base de datos

Notapor eduardompo » Lun Jun 25, 2007 5:02 pm

Hola con todos, podrian ayudarme porfavor con este pequeño programilla:

1. Creamos una tabla llamada 'alumnos_fotos' con 2 campos: 'cod_alumno' de tipo char(2) y foto_alumno de tipo image(16),
al campo cod_alumno lo ponemos como Clave Principal.
a esta tabla le agregamos 3 registros con los codigos: '01', '02', y '03'

2. Creamos una Window con los siguientes objetos:
un Picture Control, llamado 'p_foto'
dos Command Button, llamados 'cb_cargar_foto' y 'cb_ver_foto' y
un Single Line Edit, llamado 'sle_cod_alumno'

3. En el evento clicked de 'cb_cargar_foto' poner el siguiente codigo:



STRING ls_pathname, ls_filename, ls_filtro, ls_cod_alumno
LONG ll_File
BLOB lbl_data, lbl_temp

ls_filtro = "JPEG Files (*.jpg),*.jpg," + "GIFF Files (*.gif),*.gif,"
IF GetFileOpenName ( "Archivo de Imagen: ", ls_pathname, ls_filename , "jpg", ls_filtro) = 0 THEN RETURN

p_foto.picturename = ls_pathname
ls_cod_alumno = trim(sle_cod_alumno.text)

ll_File = FileOpen(ls_pathname, StreamMode!)
DO WHILE FileRead(ll_file,lbl_temp) > 0
lbl_data += lbl_temp
LOOP
FileClose(ll_file)

IF ll_File <> -1 THEN
FileRead(ll_file, lbl_data)
FileClose(ll_file)
SQLCA.AutoCommit = True
UPDATEBLOB alumnos_fotos SET foto_alumno = :lbl_data WHERE cod_alumno = :ls_cod_alumno;
SQLCA.AutoCommit = False
ELSE
messagebox('Error','Falló el FileOpen')
END IF

IF SQLCA.SQLNRows > 0 THEN
COMMIT;
messagebox('OK: ' + ls_cod_alumno,'Se guardó la foto del alumno')
ELSE
messagebox('Error','Falló el UPDATEBLOB')
END IF
FileClose(ll_file)


4. En el evento clicked de cb_ver_foto, copiar el codigo:

Blob lb_imagen
STRING ls_cod_alumno
ls_cod_alumno = trim(sle_cod_alumno.text)

SELECTBLOB foto_alumno INTO :lb_imagen FROM alumnos_fotos WHERE cod_alumno = :ls_cod_alumno ;

p_foto.SetPicture(lb_imagen)

5. Ejecutar y probar:
escribimos el codigo '01' en sle_cod_alumno, le damos click en cb_cargar_foto y seleccionamos el archivo que
se va a guardar en la DB. Repetimos este paso para los demas codigos '02' y '03'. Luego, probamos el boton cb_ver_foto, para cada codigo.


al ejecutar y seleccionar la foto me muestra este error: " fallo el updateblob", me podrían ayudar a mi parecer todo esta bien no m explico porque no graba, Gracias
eduardompo
Novato
Novato
 
Mensajes: 1
Registrado: Lun Jun 25, 2007 4:52 pm


imagenes

Notapor tiroloko » Vie Sep 28, 2007 12:55 pm

compañero, que flojera leer todo lo que pusiste, te dire lo que yo hago ok,, espero y te sirva...

//CON ESTO AGREGAS LA FOTO DESDE UN DIRECTORIO

integer li_regresa

li_regresa = GetFileOpenName ( "Busque y seleccione la foto de la Turbina", is_path, ls_name , "bmp" ,"Fotos Turbinas (*.bpm),*.bmp" ,"W:\Catalogo\GM IMAGENES" )
If li_regresa = 1 Then
this.PictureName = is_path // IS_PATH lo guardas en la tabla en un campo string
End if

despues en una variable string sacas el valor del campo imagen ( el campo donde metiste la direccion de is_path) yo la guarde en is_image

y haces esto p_1.picturename = is_image

si te fijas utilise un picture control ... suerte...

nota .. las imagenes estaran guardadas en una carpeta de c:
TIROLOKO
tiroloko
Novato
Novato
 
Mensajes: 13
Registrado: Vie Sep 28, 2007 12:47 pm



    

Volver a Power Builder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados