Access: Necesito hacer una rutina que dibuje una imagen del formulario en base a un campo dado

Necesito hacer una rutina cuyos parámetros sean "NomCampo" e "Imagen" y que dibuje una imagen en el control Imagen a partir del valor del campo NomCampo. Esto es lo que tengo

Public Sub Dibuja(NomCampo, directorio)

directorio = NomCampo   '**Se guardan las imagenes en un directorio segun el nombre del campo

' Pretendo asignar el valor del campo a la variable cmp

' Es decir si el nomCampo es maquinaria y tiene el valor de "retroexcavadora 426"

' En el directorio maquinaria hay una foto que se llama "retroexcavadora 426.jpg"

' El valor de cmp debe ser "retroexcavadora 426"

cmp = [NomCampo].Value    '*** Nombre de la imagen sin extension

ruta = Application.CurrentProject.Path

' A continuacion le agregamos la extension al nombre de la imagen

archmaquina = [cmp].Value & ".jpg"

'Revisamos si existe la imagen, si existe se desplegá la imagen de la maquina si no la imagen "sin foto"
'  Rutina ExisteArchivo SI FUNCIONA y solo da falso o verdadero si existe el archivo

If ExisteArchivo([ruta] & "\" & directorio & "\", archmaquina, 0) Then 

         archmaquina = [ruta] & "\" & directorio & "\" & [archmaquina]
Else

         archmaquina = [ruta] & "\" & directorio & "\Sin Foto.jpg"

End If

'Dibujamos la imagen

imagen.Picture = archmaquina
imagen.SizeMode = acOLESizeZoom

El problema que tengo es que no me toma los datos del nombre de la imagen y no se como hacerle. ¿Podrían ayudarme? ¿O decirme si hay otra manera de hacerlo?

1 respuesta

Respuesta
3

Vamos por partes

1º En el editor de VB en Herramientas-Referencias activa la casilla Microsoft Office XX.X Object Library. Lo de XX. X es por la versión de Office que tengas instalada.

2º En el editor de VB, debajo de Option Compare Database pega lo siguiente

Public Function buscaruta() As String
Dim fDialog As Office.FileDialog
Set fDialog = Application.FileDialog(msoFileDialogFilePicker)
With fDialog
.AllowMultiSelect = False
.ButtonName = "Seleccionar"
.Title = "Seleccionar la ruta"
.InitialFileName = Application.CurrentProject.Path
.InitialView = msoFileDialogViewDetails
.Filters.Clear
.Filters.Add "All Files", "*.*"
If .Show = True Then
buscaruta = .SelectedItems(1)
Else
MsgBox "Ha pulsado el botón <Cancelar>."
End If
End With
End Function

Luego en el evento Al recibir el enfoque del cuadro de texto NomCampo

If isnull([nomcampo]) then

Me.nomcampo.Value = buscaruta
Me.Imagen8.Picture = nomcampo

3º Te aconsejaría que esto último lo pusieras también en el evento Al activar registro del formulario

Explicación

Al poner el cursor en el cuadro de texto Nomcampo se abre un "Explorador" para que localices la imagen que le corresponda y una vez que aceptes, en ese cuadro te pone la ruta. Y en el control imagen te aparece su foto.

Luego cuando te desplaces por el formulario y vuelvas a ese registro, te seguirá mostrando su imagen.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas