Guardar y actualizar imágenes en campo general

Necesito guardar y actualizar una imagen en un campo general desde vfp 8, he visto unos códigos pero no los entiendo por ejemplo:
If !Empty(Midocumento) no entiendo como asignar la imagen, si por ruta, y si es con ole control como asignarle la imagen al control
Se le cliente
Append blank
appEND GENERAL cliente.documento FROM (MiDocumento)
Endif
Necesito una explicación o un ejemplo.-
Saludos

1 respuesta

Respuesta
1
Espero poder ayudarte:
El tema de fotos en tablas depende de varias cosas pero básicamente depende del uso y el entorno que le quieras dar a tu sistema.
El uso de campos general no es recomendado para fotos. Ya que ese dato esta asociado directamente a cada equipo, por ejemplo; una imagen gif puede ser leída mientras en el registro de windows haya alguna aplicación que lee el gif o si windows lo interpreta, esto te da inestabilidad en tu aplicación y principalmente archivos extremadamente grandes.
Opciones recomendadas:
La primera opción: Hacer referencia a la ruta de acceso. Esto no ocupa lugar en tu base de datos y puede ser manejado de manera que sea transparente para el usuario, por ejemplo; si trabajas con fotos de clientes, la imagen puede ser renombrada y guardada en un servidor con el nombre xxxxx.jpg donde xxxxx es el código del cliente. Es decir que la fotografía puede venir de cualquier medio, cd, pendrive, etc.. pero termina en una carpeta del servidor.
La segunda opción: Guardar la imagen directamente en un campo memo. Esto es guardar la imagen en un campo memo de la tabla y después mostrarla. La imagen viajaría siempre con nuestra tabla y no habría manera de perder el vinculo con la imagen. Esta opción no es optima para impresión de listados con fotografía por ejemplo.
Veamos un pequeño ejemplo de cada una de las dos, de igual manera si quieres hacerlo con un campo general, para empezar deberíamos utilizar bitmaps sin comprimir (BMP) para que se vean directamente sin necesidad de abrir el paquete.
Uso de ruta de acceso (opción 1):
Supongamos que tenemos un campo memo o uno de caracteres de longitud suficiente: para cargar la ruta y darle a elegir al usuario haríamos:
mFoto=getFile('jpg')
sele miTabla
replace miCampoFoto with mFoto
Para que se vea, en un control image haríamos:
thisform.image.picture=miTabla.miCampoFoto
Ahora la segunda opción, guardando en un memo:
El campo miCampoFoto de la tabla miTabla debe ser memo
Para guardar la foto:
mFoto=getFile('jpg')
replace miCampoFoto with fileToStr(mFoto)
Para mostrar la imagen en un control image sería:
thisform.image.pictureVal=miTabla.miCampoFoto
* Recorda que puede ir un append blank si es necesario antes de los replace
Con el tema del campo general trabaja por OLE, entonces en tu tabla en realidad hay dos elementos; 1. el dato en cuestión (data) y 2. el tipo de dato que debe interpretar windows (class). Por eso en un general podes poner cualquier tipo de dato y al hacer doble click se mostrara la aplicación por OLE (abriéndola) o OLE2 (dibujando directamente en tu formulario, como en el caso de una planilla de excel)
Si quieres usar un campo general deberás agregar las imágenes en formato BMP (la manera más transparente aun sean archivo más grandes) pero lo bueno es que se ven directamente en tu formulario y en tus reports. Algo así.
El campo micampoFoto debe ser general
mFoto=getFile('bmp')
append blank && Si corresponde
Append general miCampoFoto from (mFoto)
El sistema en este caso va a determinar automáticamente el tipo de dato del bmp.
Para mostrarlo en un formulario o en un report, agregas el control OleBoundControl y en su propiedad controlSource pones miTabla. MiCampoFoto.
Lo mismo se usaría en un report, el mismo control.
Cada vez que cambies de registro o uses append general deberás hacer un refresh al control ole:
Thisform. OleBounControl. Refresh
Bueno, espero haber sido útil, cualquier duda por cualquiera de los tres caminos que optes, estoy a tu disposición.
La verdad es que se almacenar las rutas, y necesitaba guardar las imágenes en una tabla para poder imprimir unas credenciales.
Ahora se puede imprimir una imagen en un reporte con solo la ruta almacenada en una tabla.
Gracias por tu atención
Ok. Si no te puedo ayudar en algo más, por favor cerrá la pregunta.
Nos vemos
Christian

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas