Cómo hacer en access para que desde un formulario pueda almacenar una foto para cada nuevo registro

Me gustaría poder desde un formulario mediante un botón "examinar" elegir una foto de mi equipo y guardarla en un campo de mi tabla, cada registro una imagen diferente, tener para cada registro un campo imagen, o un campo donde se almacene la ruta de la imagen pero me aparezca en el formulario la imagen cuando quiera consultarla.

1 Respuesta

Respuesta
5

Lo primero es hacer un módulo nuevo (que puedes llamar mdlImagenes), y le escribes este código:

'------------------------------------------------------------------------------------------------
' Función para abrir ventana de diálogo y buscar imágenes
'------------------------------------------------------------------------------------------------
Public Function fncbuscaImagen() As String
On Error GoTo sol_err
Dim fDialog As Office.FileDialog
Set fDialog = Application.FileDialog(msoFileDialogFilePicker)
With fDialog
.AllowMultiSelect = False
.ButtonName = "Seleccionar"
.Title = "Seleccionar el archivo"
.InitialFileName = Application.CurrentProject.Path
.InitialView = msoFileDialogViewDetails
.Filters.Clear
.Filters.Add "Imágenes", "*.jpg; *.jpeg; *.bmp"
If .Show = True Then
fncbuscaImagen = .SelectedItems(1)
Else
'No hacemos nada
End If
End With
Salida:
Exit Function
sol_err:
MsgBox "Se ha producido el error: " & Err.Number & " - " & Err.Description
Resume Salida
End Function

Luego, en tu formulario, añades el botón examinar (si le llamas cmdExaminar), y le generas este código:

Private Sub cmdExaminar_Click()

Me.CampoImagen = fncbuscaImagen
subCargaFoto

End Sub

Además, al formulario le generas este otro en el Evento Al activar registro:

Private Sub Form_Current()
subCargaFoto
End Sub

Al formulario le añades un cuadro de imagen (yo lo llamé imgFoto), cancelas el asistente si te sale y guardas el formulario.

Y para acabar, en el propio módulo del formulario, escribes este otro:

'------------------------------------------------------------------------------------------------
' Este procedimiento coloca la foto o deja el marco vacío
'------------------------------------------------------------------------------------------------
Private Sub subCargaFoto()
On Error GoTo sol_err
Dim miImagen As String
miImagen = Nz(Me.CampoImagen, "")
Me.imgFoto.Picture = miImagen
Salida:
Exit Sub
sol_err:
If Err.Number = 2220 Then
Me.imgFoto.Picture = ""
Else
MsgBox "Se ha producido el error " & Err.Number & ":" & vbCrLf & Err.Description
End If
Resume Salida
End Sub

Recuerda que tienes que activar la referencia Microsoft Office y.yy Object Library en el editor de visual basic (Menu Herramientas->Referencias)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas