1. Supongamos que tiene esta tabla: tblbancos con los siguientes campos
Idbanco banco imagen
1 Banco A C:\ImagenesBancos\bancoA.png
2 Banco B C:\ImagenesBancos\bancoB.jpg
3 Banco C C:\ImagenesBancos\bancoC.bmp
2. Agregar un control de imagen en el formulario
Abre el formulario en Vista de Diseño.
Agregue un Control de Imagen y nómbrelo imgBanco.
Agregue un Cuadro de texto oculto llamado txtRutaImagen
3. Código VBA para mostrar la imagen
Para cargar la imagen cuando el usuario seleccione un banco en el combo cmbBanco, usa el siguiente código:
Private Sub cmbBanco_AfterUpdate()
Dim rutaImagen As String
' Obtener la ruta de la imagen desde la tabla
rutaImagen = Nz(DLookup("Imagen", "tblBancos", "idBanco=" & Me.cmbBanco), "")
' Si la ruta es válida, mostrar la imagen
If rutaImagen <> "" And Dir(rutaImagen) <> "" Then
Me.imgBanco.Picture = rutaImagen
Me.txtRutaImagen.Value = rutaImagen
Else
' Imagen por defecto si no hay imagen en la tabla
Me.imgBanco.Picture = "C:\ImagenesBancos\sin_imagen.png"
End If
End Sub
4. Código VBA para seleccionar una imagen con CommonDialog
Agregue un botón llamado btnSeleccionarImagen y use este código para abrir el cuadro de diálogo y actualizar la base de datos:
Private Sub btnSeleccionarImagen_Click()
Dim dlg As Object
Dim rutaImagen As String
' Crear un cuadro de diálogo para seleccionar la imagen
Set dlg = Application.FileDialog(3) ' 3 = File Picker
With dlg
.Title = "Seleccionar Imagen"
.Filters.Clear
.Filters.Add "Imágenes", "*.jpg; *.png; *.bmp; *.gif"
.AllowMultiSelect = False
If .Show Then
rutaImagen = .SelectedItems(1)
' Guardar la ruta en la base de datos
CurrentDb.Execute "UPDATE tblBancos SET Imagen='" & rutaImagen & "' WHERE idBanco=" & Me.cmbBanco
' Mostrar la nueva imagen en el formulario
Me.imgBanco.Picture = rutaImagen
Me.txtRutaImagen.Value = rutaImagen
End If
End With
Set dlg = Nothing
End Sub
5. Mostrar la imagen al abrir el formulario
Para que la imagen se cargue automáticamente según el banco seleccionado al abrir el formulario:
Private Sub Form_Current()
Call cmbBanco_AfterUpdate
End Sub
Guardar solo la ruta de la imagen en la tabla es más eficiente y recomendado.
La función Application. FileDialog(3) funciona en Access 2003 en adelante.
Esto es una idea.