Programación General > Power Builder
Picture
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
[#] Página Siguiente
Ir a la versión completa