Está en la página 1de 6

Como imprimir campos BLOB de manera sencilla

Posted By admin On Noviembre 22, 2007 @ 11:00 am In FoxPro Controles, FoxPro Reportes | 1 Comment (1 votes, average: 5 out of 5)

Recientemente tuve que desarrollar un sistema del tipo medico, y en los requerimentos habia la necesidad de incorporar hasta 20 fotografias del paciente. Para el caso, use una tabla con campos BLOB que me ha parecido bastante practico de incorporar las imagenes. Anteriormente en otros proyectos los he usado y hasta la fecha he comprobado que son mas estables que los campos general. Sin embargo, estas imagenes tambien tenian que ser impresas por lo que me di a la tarea de buscar como. El problema era que el Report Writer no acepta campos BLOB, acepta campos GENERAL y FILE (imagenes en la ruta especifica). De manera que no habia forma de imprimirlas. Como siempre, mi primer referencia es portalfox.com, ya que habia leido unos articulos de Cesar Chalom y de Calvin Hsia, asi como una referencia en MSDN. Sus ejemplos son excelentes, y su codigo muy bueno, sin embargo a la 1:30 de la madrugrada no me daba para mas, asi que en un arranque de inspiracion, hice algo mas simple 1. Abri la tabla con los campos blob 2. Use la fucion STRTOFILE y converti el valor de los campos de nuevo en imagenes reales. 3. Una vez hecho esto las tome al reporte y funciono. El siguiente codigo muestra como se procesa. Este codigo va dentro de un boton de comando puesto dentro de la pestana que se muestran las fotos.
* Procedimiento para imprimir el las fotos como miniaturas * Como estamos posicionados en el registro del paciente no necesitamos * movernos a ninguna parte. * Debemos convertir cada foto en una jpg independiente y * grabarla al disco para despues * tomarla desde el reporte. En caso de que no exita foto, *debemos poner una imagen generica... * * Eliminar las fotos anteriores creadas ERASE photo1.jpg ERASE photo2.jpg ERASE photo3.jpg ERASE photo4.jpg ERASE photo5.jpg ERASE photo6.jpg ERASE photo7.jpg ERASE photo8.jpg

ERASE photo9.jpg backImage = 'noid.jpg' * Convertir fotos a jpg de nuevo ya que estan en * campos blob (caracteres o binarios) lbFoto1 = IIF(EMPTY(photo1), 'noid.jpg', ; STRTOFILE(pacfotos.photo1, 'photo1.jpg')) lbFoto2 = IIF(EMPTY(photo2), 'noid.jpg', ; STRTOFILE(pacfotos.photo2, 'photo2.jpg')) lbFoto3 = IIF(EMPTY(photo3), 'noid.jpg', ; STRTOFILE(pacfotos.photo3, 'photo3.jpg')) lbFoto4 = IIF(EMPTY(photo4), 'noid.jpg', ; STRTOFILE(pacfotos.photo4, 'photo4.jpg')) lbFoto5 = IIF(EMPTY(photo5), 'noid.jpg', ; STRTOFILE(pacfotos.photo5, 'photo5.jpg')) lbFoto6 = IIF(EMPTY(photo6), 'noid.jpg', ; STRTOFILE(pacfotos.photo6, 'photo6.jpg')) lbFoto7 = IIF(EMPTY(photo7), 'noid.jpg', ; STRTOFILE(pacfotos.photo7, 'photo7.jpg')) lbFoto8 = IIF(EMPTY(photo8), 'noid.jpg', ; STRTOFILE(pacfotos.photo8, 'photo8.jpg')) lbFoto9 = IIF(EMPTY(photo9), 'noid.jpg', ; STRTOFILE(pacfotos.photo9, 'photo9.jpg')) * Sin embargo dentro del reporte se vuelven a poner estas variable detectando si se * creo el archivo de manera correcta, para poder visualizarlo REPORT FORM pacrepfotos NEXT 1 TO PRINTER PROMPT PREVIEW

Ahora, habria que hacer el reporte. Para ello, primero se declararon unas variables dentro de la seccion variables del reporte:

Basicamente en el valor a almacenar se puso la siguiente instruccion:


IIF( FILE('photo1.jpg'),'photo1.jpg','noid.jpg')

Luego, en el reporte, se hicieron las inscrustaciones del objeto OLE (imagen) para verlas asi:

Y en las propiedades:

Usamos la variable declarada anteriormente. De esta forma es muy facil imprimir cualquier foto, ya que algunas veces no se toman todas las fotos (en el reporte se imprimen 9 a la vez), y si solamente fueron 7 u 8 las que se tienen almacenadas el resto quedan vacias. Hacer esto, me tomo un poco de menos de media hora y pude irme a dormir tranquilo. Para finalizar, he aqui las pantallas de como se ve ejecutandose

Article printed from IDSFoxPro Blog: http://foxpro.idsystemsmx.com/wordpress URL to article: http://foxpro.idsystemsmx.com/wordpress/?p=8 URLs in this post: [1] Imprimir: http://technorati.com/tag/Imprimir

[2] BLOB: http://technorati.com/tag/BLOB [3] Image: http://foxpro.idsystemsmx.com/wordpress/?p=8&print=1

También podría gustarte