Problema para mostar una foto en un formulario acc

Tengo una tabla con los campos nombre, apellidos y foto. La foto es un objeto OLE.
Quiero hacer un formulario justificado en el que se muestren todos los campos de la tabla. El problema surge con la foto.
Quiero que se vea la foto para cada registro cuando nos desplazamos por ellos, quiero que haga un zoom y se ajuste al tamaño que yo le marqe
Y que al hacer doble click en ella se maximice y se vea a tamaño real, pero no la quiero adjunta a la base de datos, sino vinculada (para que el
Tamaño de la base de datos en sí sea el menor posible. Esto es, quiero que las fotos vallan por separado fuera del fichero de access).
Aquí aparece el problema y se me abren 2 caminos; si tengo el microsoft phodo editor instalado o no.
Si no lo tengo instalado, inserto el jpg de la foto como vinculado y en la tabla me aparece un "paquete". El problema es que en el formulario no se
Me muestra la imagen, sino el icono que el sistema operativo tiene asociado para ese tipo de fichero y su nombre (el icono del ACDsee). Da
Igual que en las propiedades del objeto dependiente, que en el formulario hay para ese objeto OLE, ponga en "tipo de presentación" "contenido",
Se sigue mostrando el icono.
Si edito ese paquete el empaquetador de objetos me muestra, en la ventana de "Apariencia" el icono y el nombre del fichero y en la ventana
"contenido" aparece "Copia de el nombre_del_fichero". Hay unas casillas encima, donde pone "Ver:" y al lado una casilla para "descripción" y otra
Para "imagen" pero la de imagen está sombreada y no puedo seleccionarla.
Si tengo el microsoft photo editor, que viene con el office, instalado al insertar vinculada la foto me aparece en la tabla "foto de microsoft photo
Editor". Voy al formulario y todo correcto, la foto se ve, se ajusta al tamaño del objeto dependiente y tal, perfecto. Excepto por el "pequeño"
Detalle de que la debe de datos ha crecido de peso enormemente. Tengo la sospecha de que para visualizar la foto en el formulario ha sido
Convertida a bmp y adjuntada a la base de datos. Además da igual que borre ese registro, el fichero de la base de datos no disminuye de tamaño.
¿Cómo puedo hacer lo que pretendo? Necesito que el tema funcione como lo hace cuando tengo el photo editor ese instalado, pero sin esos
Brutales aumentos de peso del fichero.

3 Respuestas

Respuesta
1
Yo lo que haría es crearme en el formulario un campo cuadro de imagen (llamémosle FOTO)y le asignaría una foto (da lo mismo cual, asignándole la ruta donde esta la foto(modo vinculado o modo incrustadola)).
Ahora a ver veo dos formas para hacer corresponder las fotos a los registros. Una es la de poner las fotos en una carpeta e ir dándoles los nombres de idficha al que pertenecerán, por ejemplor 1.jpg, 2.jpg, 3.jpg,... Entonces en el evento del formulario Private Sub Form_Current()
Lo que haría sería poner el siguiente código
If Len(Dir(argumento)) <> 0 Then
me!FOTO.Picture = argumento
Else
me!FOTO.Picture = ""
End If
donde argumento seria la ruta de la foto en nuestro caso
argumento= "c:\carpetafotos\" & me![idficha] & ".jpg"
Con esta opción no hace falta que tengas ningún campo en la tabla llamado foto.
La segunda opción es que mantuvieras el campo foto en la tabla pero que en este lo que guardaras fuera la ruta del archivo de la foto, y entonces en el código anterior el "argumento" seria igual al campo foto.
Espero que te sirva esto.
Si no te funciona o querías otra cosa dímelo o dame tu correo y te mando algún ejemplo.
Respuesta
Agregar una campo de texto a la base de datos que contenga la dirección de la foto en el disco, no la foto en si. Puede llamarse foto como en el ejemplo de abajo.
Agregar un cuadro de dubujo vinculado al formulario pero no vincular con ningún campo OLE de fotos.
En el evento On Current del formulario colocar la programación que: a cada cambio de registro, si encuentra una dirección de foto, la llena en el cuadro ej.
Ademas de las fotos, es necesario crear también una foto en blanco para utilizar cuando no hay foto que mostrar. Puede llamarse nofoto.bmp como en el ejemplo.
Private Sub Form_Current()
Dim sFile As String
On Error Resume Next
sFile = Nz(Me!foto, "C:\Mis documentos\Mis imágenes\nofoto.bmp")
With Me.cuadro
.OLETypeAllowed = acOLELinked
.SourceDoc = sFile
.Action = acOLECreateLink
End With
End Sub
Respuesta
-1
No te puedo ayudar demasiado. Nunca he trabajado con imágenes por los problemas que tu tienes. Lo que yo hago es guardar el nombre del fichero con la imagen. Si todas las imágenes están en la misma carpeta, guardo solo el nombre del fichero y la carpeta la guardo en una variable global, y si las imágenes pueden estar en cualquier carpeta, incluyo la carpeta en el nombre del fichero. Así tienes las imágenes separadas de la base de datos. No se si se adaptara a lo que necesitas, pero no te puedo ayudar más, lo siento.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas