Dos imágenes en un formulario access 2007

Tengo hecha una base de datos access 2007 para una peña de futbol. Tengo las fotos de cada socio en una carpeta separada en el mismo directorio de la base de datos y cada nombre es el DNI.jpg de cada socio, por lo que hacia la llamada desde el formulario y no había problema. He tenido que añadir una imagen del equipo preferido de cada socio y he usado el mismo código pero no me funciona, solo me sale la primera imagen. El código usado es el siguiente en el evento “al activar registro” del formulario:

 Private Sub Form_Current()

On Error GoTo Error_img1_Current
Dim rutaimg1 As String
rutaimg1 = CurrentProject.Path & "\BaseGest_images\Fotos\" & Me.[DNI] & ".jpg"
[img1].Picture = rutaimg1
Me.Refresh
If IsNull([DNI]) Then
[img1].Picture = CurrentProject.Path & "\BaseGest_images\Fotos\SinFoto.jpg"
End If
Exit Sub
Error_img1_Current:
If Err = 2220 Or Err = 2114 Then
[img1].Picture = CurrentProject.Path & "\BaseGest_images\Fotos\SinFoto.jpg"
Exit Sub
End If

On Error GoTo Error_img2_Current
Dim rutaimg2 As String
rutaimg2 = CurrentProject.Path & "\BaseGest_images\Equipos\" & Me.[Equipo] & ".jpg"
[img2].Picture = rutaimg2
Me.Refresh
If IsNull([EQUIPO]) Then
[img2].Picture = CurrentProject.Path & "\BaseGest_images\Equipos\SinFoto.jpg"
End If
Exit Sub
Error_img2_Current:
If Err = 2220 Or Err = 2114 Then
[img2].Picture = CurrentProject.Path & "\BaseGest_images\Equipos\SinFoto.jpg"
Exit Sub
End If

End Sub

1 Respuesta

Respuesta
1

Hazlo así, a ver si funciona como quieres:

Private Sub Form_Current()
Dim rutaimg1 As String
Dim rutaimg2 As String

On Error GoTo sol_err1
rutaimg1 = CurrentProject.Path & "\BaseGest_images\Fotos\" & Nz(Me.DNI, "SinFoto") & ".jpg"
Me.img1.Picture = rutaimg1

Imagen2:
On Error GoTo sol_err2
rutaimg2 = CurrentProject.Path & "\BaseGest_images\Equipos\" & Nz(Me.EQUIPO, "SinFoto") & ".jpg"

Salida:
Exit Sub
sol_err1:
If Err = 2220 Or Err = 2114 Then Me.img1.Picture = ""
Resume Imagen2
End If
sol_err2:
If Err = 2220 Or Err = 2114 Then Me.img2.Picture = ""
Resume Imagen2
End If
End Sub

Muchas gracias, he copiado integro el código que me indicas pero me da un error

"Error Compilación: End If sin bloque If". Te marco en negrita el error que me señala

If Err = 2220 Or Err = 2114 Then Me.img1.Picture = ""
Resume Imagen2
End If  << error aquí
sol_err2:
If Err = 2220 Or Err = 2114 Then Me.img2.Picture = ""
Resume Imagen2
End If

Simplemente borra esa línea, que me quedó de reorganizar tu código.

Acabo de ver otro error, la parte final tiene que ser así:

sol_err2:
If Err = 2220 Or Err = 2114 Then Me.img2.Picture = ""
Resume Salida
End If

Ahora me sale Error de compilación "no se encontró el método o el dato miembro"

sol_err2:
If Err = 2220 Or Err = 2114 Then Me.img2.Picture = ""
Resume Salida
End If

Pon Err. Number en donde tienes Err

funcionaba bien y no salia la imagen, por lo que al revisar el código vi que faltaba

Me.img2.Picture = rutaimg2

Ahora el código funciona perfectamente GRACIAS!!!!!

  • La base de datos y la carpeta BaseGest_images estan en el mismo directorio siempre. Dentro de BaseGest_images están las carpetas Fotos y Equipos
  • Dentro de cada carpeta de Fotos y Equipos, además de los diferentes archivos hay uno llamado SinFoto.jpg
  • Hay que crear dos cuadros de imagen vacios: img1 e img2 en el formulario
Dim rutaimg1 As String
Dim rutaimg2 As String
On Error GoTo sol_err1
rutaimg1 = CurrentProject.Path & "\BaseGest_images\Fotos\" & Nz(Me.DNI, "SinFoto") & ".jpg"
Me.img1.Picture = rutaimg1
Imagen2:
On Error GoTo sol_err2
rutaimg2 = CurrentProject.Path & "\BaseGest_images\Equipos\" & Nz(Me.EQUIPO, "SinFoto") & ".jpg"
Me.img2.Picture = rutaimg2
Salida:
Exit Sub
sol_err1:
If Err.Number = 2220 Or Err.Number = 2114 Then Me.img1.Picture = ""
Resume Imagen2
sol_err2:
If Err.Number = 2220 Or Err.Number = 2114 Then Me.img2.Picture = ""
Resume Salida

Me alegro que te funcionara, porque tenía mis dudas con la parte del Nz(Me. DNI, "SinFoto"), y disculpa esos fallitos por responderte rápidamente modificando sobre tu código, je je.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas