Programación General > Power Builder

 Picture

(1/4) > >>

alexis17:
buenas noche que tal
 estoy intentando almacenar una imagen en una tabla

ejemplo tabla1
estos son los campos
nombre
apellido
foto

 coloque en un boton esto

STRING ls_pathname, ls_filename, ls_filtro, ls_cod_thab
LONG ll_File

BLOB lbl_data, lbl_temp

integer fila


ls_filtro = "JPEG Files (*.jpg),*.jpg," + "GIFF Files (*.gif),*.gif," + "BMP Files (*.bmp),*.bmp,"

IF GetFileOpenName ( "Archivo de Imagen: ", ls_pathname, ls_filename , "bmp", ls_filtro) = 0 THEN RETURN

p_foto.picturename = ls_pathname


il_nombre = dw_datos.object.nombre[1]
is_apellido = dw_datos.object.apellido[1]
is_foto = dw_datos.object.foto[1]



    INSERT INTO ejemplo
       (nombre,      apellido,     foto)
       VALUES
       (:nombre, :apellido, :foto);
   
   quiero realizar este insert
   estoy utilizando base de datos oracle, y el campo foto en mi base de datos es tipo blob


y estoy utilizando un picture con el nombre de p_foto


bueno cuando mando a correr el programa y oprimo el boton grabar me aparece la ventanita de windows de buscar entonces busco la imagen .bmp que tengo en la carpeta y me la muestra en mi picture otra pregunta es que yo utilizo power builder 6.5 y no veo que los picture soporten jpg solo veo que soportan bmp

mi idea es tener eso es un datawindows external tabular

encontre este ejemplo en internet soy nuevo asi que no se que estoy haciendo mal

BOTON : GRABAR

STRING ls_pathname, ls_filename, ls_filtro, ls_cod_thab
LONG ll_File

BLOB lbl_data, lbl_temp

integer fila
fila=dw_tipohabitacion.getrow( )
string co
co=dw_tipohabitacion.getitemstring(fila,"cod_tipo_hab")
sle_codtipo.text=co




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_thab = trim(sle_codtipo.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 tipo_habitacion SET foto = :lbl_data WHERE cod_tipo_hab = :ls_cod_thab;
SQLCA.AutoCommit = False
ELSE
messagebox('Error','Falló al abrir Archvo')
END IF

IF SQLCA.SQLNRows > 0 THEN
COMMIT;
messagebox('OK: ' + ls_cod_thab,'Se guardó la foto de la Habitacion')
ELSE
messagebox('Error','Falló el Grabar Foto')
END IF
FileClose(ll_file)


BOTON : BUSCAR IMAGEN


Blob lb_imagen
STRING ls_cod_tha
ls_cod_tha = trim(sle_busca.text)

SELECTBLOB foto INTO :lb_imagen FROM tipo_habitacion WHERE cod_tipo_hab = :ls_cod_tha;

p_foto.SetPicture(lb_imagen)

F_Tanori:

--- Cita de: "alexis17" ---mi idea es tener eso es un datawindows external tabular

--- Fin de la cita ---
Según recuerdo no puedes tener un campo blob en un datawindow, y creo que menos en la version 6.5

lo que pudieras hacer es escribir el archivo en disco y despues leerlo en el DW , situacion que no es optima en todos los casos

Saludos

alexis17:
buenas tardes
alguien sabe si ese codigo que coloque sirve para grabar la imagen en la base de datos o solo me guarda la ruta en la base de datos?

F_Tanori:

--- Código: Text ---UPDATEBLOB tipo_habitacion SET foto = :lbl_data WHERE cod_tipo_hab = :ls_cod_thab;  
Debe de Guardarte la Imagen para eso es UPDATEBLOB, para guardar el binario del archivo


Saludos

alexis17:
buenas noches que tal

bueno lo que trato de hacer es bueno tengo un select me encuentra la informacion del cliente y la foto

las esto la foto la estoy colocando en un picture

tengo la lista de cliente en un datawindows y bueno a medida que voy seleccionando un cliente me va apareciendo la foto

bueno cuando le doy clik a un cliente me aparece la foto en el picture pero cuando le doy clik a otro cliente y no tiene foto aun me queda la foto del cliente anterior


que que intento hacer es colcoar despues del select algo asi
 if sql.code bueno el codigo no me lo se de meoria pero es algo asi

   y aki me va cargando lso datos ya eso me lo hace

  else
       aqui queria hacer algo como esto
       osea que si no lo encuentra colocar algo asi

       p_foto.picture igual espacio en blanco

  o poner otro picture en blanco pero invisible para poder enviarle al picture que se llama p_foto  asi

p_foto.picture igual p_basico.picture


osea que si no encuentra anda que me quede la imagen basia y no con la imagen anterior

diculpe si no escribo bien es que no tengo power builder en esta pc y problemas con el signo igual

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa