Power Builder - Insertar imagen en una base de datos

 
Vista:

Insertar imagen en una base de datos

Publicado por omar (14 intervenciones) el 03/02/2003 07:59:14
Seguro que muchos de ustedes dirán que ya se respondió a esta pregunta, la verdad es que me he tomado el trabajo de revisar alguna pregunta relacionada con esto pero no hay nada exacto. Tengo el siguiente problema, deseo insertar una imagen ya sea de tipo BMP, GIF, JPEG en la base de datos, es que lo que deseo es guardar las fotos de los empleados, estoy trabajando con Power builder 8.0 y Sql Server 7.0, he colocado un picture y un commandbutton que le he llamado cb_editar que me servirá para ubicar la foto y proceder a guardarla, el código que he estado probando es el siguiente:
/***Todo este código está dentro de cb_editar en el evento clicked*****/

integer fh,ret,ii_currow
blob emp_pic
string txtname,named
string scodigo
ii_currow=dw_empleado.getrow()
/*es un datawindow de tipo freeform sin relevancia para el problema*/
scodigo=dw_empleado.GetItemString(ii_currow,"idempleado")
string defext="JPG"
string filter="FORMATO JPG(*.jpg),*.JPG,Jpeg(*.jpeg),*.jpeg,Bitmap files(*.bmp),*.bmp"
/*Con la siguiente línea ubicaré la imagen que deseo guardar*/
ret=getfileopenname("Open JPG",txtname,named,defext,filter)
if ret=1 then
fh=fileopen(txtname,streammode!)
if fh<>-1 then
fileread(fh,emp_pic)/*Leo la imagen y la guardo en emp_pic*/
fileclose(fh)
p_foto.setpicture(emp_pic)/*p_foto es el picture*/

/*AQUI SE GUARDA LA FOTO EN LA BASE DE DATOS*/
updateBLOB empleados set foto=:emp_pic
where idempleado=:scodigo
using sqlca;
/*En caso hubiera error*/
IF SQLCA.SQLCode = -1 THEN
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

Continuacion Insertar imagen en una base de datos

Publicado por OMAR (14 intervenciones) el 03/02/2003 08:09:11
/*Viene del código anterior*/
/*En caso hubiera error*/
IF SQLCA.SQLCode = -1 THEN
MessageBox("SQL error", SQLCA.SQLErrText)
else
/*Si no hay error entra aqui y hace commit*/
MessageBox('UPDATEBLOB','FotoGuarda')
commit;
end if

/***************************************************************************/
/*Esto añado en sql server 7.0 para ver si realmente lo guardo en la base de datos**/
selectBLOB foto into:emp_pic
from empleados
where idempleado=:scodigo
USING sqlca ;

/*** Verifico si realmente guarde la foto en la base de datos****/
if IsNull(emp_pic) THEN
Messagebox('MENSAJE','AL FINAL DE CUENTAS NO GUARDO NADA')
else
Messagebox('MENSAJE','SI SE GUARDO')
p_foto.visible=true
end if
//
end if
end if
/***************************************************************************/
cb_editar.text="Editar Foto"
cb_grabar.enabled=true

Y bueno de todo el código que he colocado en la parte superior funciona perfectamente pero con la interface del ODB ODBC(Sybase Adaptive Serever Anywhere del mismo de pb8); me logra guardar las fotos (de tamaño 9kb)en esa base de datos que viene con el pb8 todo perfecto, pero lo que deseo es trabajar con la interfaz del MSS Microsoft SQL Server y poder guardarla en la base de datos del Sql Server 7.0, y cuando he colocado todo el código anterior conectándome al sql server 7.0 se cuelga justo a la altura
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

Finalmente: Insertar imagen en una base de datos

Publicado por omar (14 intervenciones) el 03/02/2003 08:19:46
se cuelga la aplicación justo a la altura del UPDATEBLOB, para el primer caso uso como tipo de dato long binary para el campo foto, mientras q para el sql server uso como tipo de dato image, alguien sabe algo al respecto de cómo en todo caso se guarde las fotos en una base de datos como sql server 7.0, tal vez necesite algunas líneas de código adicionales para este caso.
He escuchado que para el caso de Sql las imágenes se deben subir de bloque en bloque, la verdad es que no tengo mucha información al respecto. Si alguien sabe algo mas al respecto se lo agradeceré. Gracias
Saludos.
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:Finalmente: Insertar imagen en una base de dat

Publicado por juan (89 intervenciones) el 03/02/2003 14:16:01
en sql server tienes que poner la transaccion en autocommit a true.
sqlca.autocommit = true
selectblob....
updateblob.....
sqlca.autocommit = false

saludos
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

Ahora si funcionó

Publicado por OMAR (14 intervenciones) el 05/02/2003 02:21:59
Hola Juan:
Muchas gracias por el dato, ahora si con tu aporte me funciono.

Gracias nuevamente.
saludos
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