• Viernes 19 de Abril de 2024, 16:04

Autor Tema:  Picture  (Leído 12929 veces)

alexis17

  • Miembro MUY activo
  • ***
  • Mensajes: 378
    • Ver Perfil
    • http://www.codigobasico.net
Picture
« en: Domingo 16 de Marzo de 2008, 02:29 »
0
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)
Cada dia aprendo algo nuevo

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Picture
« Respuesta #1 en: Domingo 16 de Marzo de 2008, 07:26 »
0
Cita de: "alexis17"
mi idea es tener eso es un datawindows external tabular
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
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

alexis17

  • Miembro MUY activo
  • ***
  • Mensajes: 378
    • Ver Perfil
    • http://www.codigobasico.net
Re: Picture
« Respuesta #2 en: Martes 18 de Marzo de 2008, 21:10 »
0
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?
Cada dia aprendo algo nuevo

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Picture
« Respuesta #3 en: Martes 18 de Marzo de 2008, 22:08 »
0
Código: Text
  1. UPDATEBLOB tipo_habitacion SET foto = :lbl_data WHERE cod_tipo_hab = :ls_cod_thab;
  2.  

Debe de Guardarte la Imagen para eso es UPDATEBLOB, para guardar el binario del archivo


Saludos
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

alexis17

  • Miembro MUY activo
  • ***
  • Mensajes: 378
    • Ver Perfil
    • http://www.codigobasico.net
Re: Picture
« Respuesta #4 en: Jueves 20 de Marzo de 2008, 02:45 »
0
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
Cada dia aprendo algo nuevo

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Picture
« Respuesta #5 en: Jueves 20 de Marzo de 2008, 03:37 »
0
Pues cuando no tenga fotografia puedes cambiarle el archivo por uno que tu ya tengas

por ejemplo

Código: Text
  1. p_foto.picturename='nodisponible.jpg'
  2.  

PD. Procura continuar los hilos ya abiertos antes de abrir otro para no crear mas infomacion de lo mismo por todos lados


saludos
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

alexis17

  • Miembro MUY activo
  • ***
  • Mensajes: 378
    • Ver Perfil
    • http://www.codigobasico.net
Re: Picture
« Respuesta #6 en: Jueves 20 de Marzo de 2008, 18:26 »
0
gracias, me sirvio

a y lo de seguir el hilo disculpe es que pensaba que era otro punto
Cada dia aprendo algo nuevo

alexis17

  • Miembro MUY activo
  • ***
  • Mensajes: 378
    • Ver Perfil
    • http://www.codigobasico.net
Re: Picture
« Respuesta #7 en: Jueves 20 de Marzo de 2008, 19:57 »
0
buenos dias que tal,

como podria pasar una imagen de una pantalla a otra

ya carge mi imagen en la primera pantalla pero quiero pasarla a otra pantalla para que se vea mas grande

lo estoy intentando pasar con una estructura pero no me sale ya que el campo

en el boton agrandar que es el que llama a la otra ventana coloque

str_foto lstr_foto

lstr_foto.ls_foto =  p_foto.Picture

//estoy intentando asirnarle la foto la variable de la estructura para poder enviarla a la otra ventana, no quiero usar nada de base de dato en esa parte porque , bueno me funciono enviandola a la otra pantalla pero era porque en la estructura enviaba el codigo de articulo asi qeu cuando llegaba a al otra ventana yo hacia un select por el codigo de articulo

pero eso no es lo mas optimo ya que si es una imagen nueva y el usuario desea verla mas grande de nada me serviria el codigo de articulo porque no se a grabado nada en al base de datos

y en la que quiero recibir la foto declare como variable de intancia la estructura
str_foto istr_foto
 

y en el open escribi

istr_foto = message.PowerObjectParm

p_foto.SetPicture(istr_foto.ls_foto)


cuando cree la estructra la variable ls_foto la declare como picture


la idea es poder agarrar la imagen ya cuando la tengo cargada en mi picture
o cuando se me presente en el picture para poder asignarsela a la variable y enviarla a al otra ventana
Cada dia aprendo algo nuevo

alexis17

  • Miembro MUY activo
  • ***
  • Mensajes: 378
    • Ver Perfil
    • http://www.codigobasico.net
Re: Picture
« Respuesta #8 en: Sábado 22 de Marzo de 2008, 22:42 »
0
buenas tardes tengo un problema al tratar de realizar un selctblob


todo me funciona bien si no existiera el codigo de articulo

el problema es el siguiente

tengo mi tabla foto

y ago esto

blob lbl_foto


selectblob foto
           into :lbl_foto
            from fotos
           where cod_articulo = :ls_cod_articulo;   

lo de arriba es la version original , pero el problema es que si el codigo de usuario existe me trae un espacio en blanco como no le havia metido la foto

asi que intente colocarle un nvl para verificar si lo que me encontraba era un espacio en blanco le colocara un 0 asi de esa manera yo poder realizar una validacion asi


selectblob nvl(foto, 0)
           into :lbl_foto
           from  fotos
           where cod_articulo = :ls_cod_articulo;   


pero aa todo le esta poniendo 0

o no se si esa funcion no sirve para los campos tipo blob

ya que yo quiero hacer es

     if long(lbl_foto) <> 0 then
                  p_foto.SetPicture(lbl_foto)        
               else
                .p_foto.picturename= 'nodisponible.bmp'
    end if

que si encuentra la imagen me coloque la que esta en al base de datos de lo contrario que me muestre una imagen que ya yo tengo en una carpeta
Cada dia aprendo algo nuevo

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Picture
« Respuesta #9 en: Sábado 22 de Marzo de 2008, 23:18 »
0
NVL es para datos nulos es como (IFNULL de MySQL o ISNULL de SQL SERVER) , no se si funciones con blob al parecer no ,

Prueba de esta manera
Código: Text
  1. blob lbl_foto
  2.  
  3. setNull(lbl_foto)
  4.  
  5. selectblob foto
  6. into :lbl_foto
  7. from fotos
  8. where cod_articulo = :ls_cod_articulo;
  9.  
  10. if isnull(lbl_foto) then
  11.   p_foto.picturename= 'nodisponible.bmp'
  12. else
  13.    p_foto.SetPicture(lbl_foto)
  14. end if
  15.  

espero te sirva

Saludos
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

alexis17

  • Miembro MUY activo
  • ***
  • Mensajes: 378
    • Ver Perfil
    • http://www.codigobasico.net
Re: Picture
« Respuesta #10 en: Domingo 23 de Marzo de 2008, 01:36 »
0
gracias me sirvio el ejemplo

lo que usted iso fue asignarle primero un valor nulo a la varieble verdad?

setNull(lbl_foto)

para si no encontraba nada entonces poder preguntar si el valor era nulo

corrijame si estoy equivocado pro favor


aqui tambien coloco otro codigo que ise que em funciono tambien

   if long(lbl_foto_p) <> 0 then
                  p_foto.SetPicture(lbl_foto_p)
           
 else
     p_foto.picturename= 'no_disponible.bmp'
 end if
Cada dia aprendo algo nuevo

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Picture
« Respuesta #11 en: Domingo 23 de Marzo de 2008, 20:44 »
0
Cita de: "alexis17"
lo que usted iso fue asignarle primero un valor nulo a la varieble verdad?

setNull(lbl_foto)

si, inicializo la variable en null con la funcion setnull , aunque si no existe ningun dato que traiga la consulta seguira siendo null

 :smartass:

Saludos
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

alexis17

  • Miembro MUY activo
  • ***
  • Mensajes: 378
    • Ver Perfil
    • http://www.codigobasico.net
Re: Picture
« Respuesta #12 en: Domingo 23 de Marzo de 2008, 22:00 »
0
buenas tardes alguien sabe como pasar una picture a otra ventana ?
 :P
Cada dia aprendo algo nuevo

alexis17

  • Miembro MUY activo
  • ***
  • Mensajes: 378
    • Ver Perfil
    • http://www.codigobasico.net
Re: Picture
« Respuesta #13 en: Viernes 28 de Marzo de 2008, 18:30 »
0
buenas tardes
queria saber como asirnar otra ves el pat o ruta donde se encuantran las imagenes de mi aplicacion

las imagenes estan en la siguiente carpeta

'.\imagenes\'

en el sistema general abian colocado el siguiente codigo en el objeto de la apliacion
en el evento open

long ll_ret
string ls_path
ls_path = Space(250)
ll_ret = GetCurrentDirectoryA(250, ls_path)
IF ll_ret > 0 THEN
   gs_path_original = Left(ls_path,ll_ret)
   
END IF

pero yo estoy creando otro modulo nuevo

y tengo una pantalla donde capturo imagen pero cuendo grabo o cierro la ventana las iamgenes de las otras ventanas no se ven ya que pierden el pat o ruta de donde se encuantran

como podria seterale al momento de grabar o cerrar la ventana que le coloque el pat otra ves de las imagenes a al aplicacion
Cada dia aprendo algo nuevo

alexis17

  • Miembro MUY activo
  • ***
  • Mensajes: 378
    • Ver Perfil
    • http://www.codigobasico.net
Re: Picture
« Respuesta #14 en: Viernes 28 de Marzo de 2008, 19:38 »
0
colocare esto en otro tema
Cada dia aprendo algo nuevo

alexis17

  • Miembro MUY activo
  • ***
  • Mensajes: 378
    • Ver Perfil
    • http://www.codigobasico.net
Re: Picture
« Respuesta #15 en: Lunes 31 de Marzo de 2008, 17:17 »
0
buenos dias que tal

queria saber como puedo setearle o asignarle una imagen a un objeto ole

ya que como lo hacia con el picture no me permite mostrar en el picture una imagen que sea mas grande que el picture

como ejemplo tenia un  picture de 200 por 200

asi que me dijeron que el ole aguanta mas tamaño


en el picture lo asignaba asi

p_foto.SetPicture(variable)
   
la idea es hacer en el ole algo mas o menos asi

ole_1.SetPicture(variable)
Cada dia aprendo algo nuevo