Cómo utilizar correctamente el código application.currentproject. Path en access

A través de este código consigo ver las fotos correctamente en un formulario y en un informe. El problema lo tengo en el informe porque si un registro no tiene foto me salen imágenes duplicadas. Al principio y con pocas fotos no suponía un problema pero en la actualidad es muy incomodo por la cantidad de duplicados. Aquí os dejo el codigo que tengo:

En el FORMULARIO tengo "al activar registro" y "al cargar"

Option Compare Database
Option Explicit
Private Sub Form_Current()
CargaImagen Me. Name, Nz(Me.txtImagen1, ""), Me.imgImagen1.Name
CargaImagen Me. Name, Nz(Me.txtImagen2, ""), Me.imgImagen2.Name
CargaImagen Me. Name, Nz(Me.txtImagen3, ""), Me.imgImagen3.Name
CargaImagen Me. Name, Nz(Me.txtImagen4, ""), Me.imgImagen4.Name
CargaImagen Me. Name, Nz(Me.txtImagen5, ""), Me.imgImagen5.Name
CargaImagen Me. Name, Nz(Me.txtImagen6, ""), Me.imgImagen6.Name
End Sub ' Form_Current
Private Sub Form_Load()
AjustarTamaño Me
End Sub ' Form_Load

En el INFORME tengo:

Private Sub Detalle_Format (Cancel As Integer, FormatCount As Integer)

CargaImagen Me.Name, Nz (Application.CurrentProject.Path & "\FOTOGRAFIAS\" & Me.txtImagen1, ""), Me.imgImagen1.Name, "rpt"

2 respuestas

Respuesta
1

A ver si lo comentado en esta pregunta te resuelve el problema:

Ver imagen de un campo texto en un informe Access 2003

En el enlace existe el mismo problema que tengo en el informe. Estoy intentando adaptar el código a mi base pero siempre me da algún tipo de error.

Private Sub Detalle_Format(Cancel As Integer, FormatCount As Integer)

Dim vNom As String

vNom = Nz(Application.CurrentProject.Path & "\FOTOGRAFIAS\" & Me.txtImagen2, ""

If vNom="" Then

   Me.imgImagen2.Picture = ""

Else

   Me. imgImagen2.Picture = vNom

End If

End Sub

El error me dice que ha detectado un nombre ambiguo. Poe si es útil, me olvide de comentar que tengo el modulo:

Dim Donde As Object

On Error GoTo CargaImagen_TratamientoErrores

  Select Case UCase(strTipo)

   Case "form", "formulario", "frm"

      Set Donde = Forms(strDonde)

   Case "rpt", "report", "informe"

      Set Donde = Reports(strDonde)

End Select

 ' me aseguro de que la imagen existe y si es así la muestro,

' en caso contrario elimino la que pudiera existir anteriormente

If Dir(strRuta) Then

   Donde(strImagen).Picture = strRuta

Else

   Donde(strImagen).Picture = ""

End If

 CargaImagen_Salir:

   Set Donde = Nothing

   On Error GoTo 0

   Exit Sub

  CargaImagen_TratamientoErrores:

    MsgBox "Error " & Err.Number & " en proc.: CargaImagen de Documento VBA: mdlUtilidades (" & Err.Description & ")"

   Resume CargaImagen_Salir

End Sub        ' CargaImagen

Hazlo más simple:

If Nz(Me.txtImagen1,"")="" Then 
Me.imgImagen1.Visible=False
Else
Me.imgImagen1.Visible=True
CargaImagen Me.Name, Nz (Application.CurrentProject.Path & "\FOTOGRAFIAS\" & Me.txtImagen1, ""), Me.imgImagen1.Name, "rpt"
End If

Y repites con los otros 5 campos.

En el informe has de tener los campos txtImagen1... aunque sean ocultos

he añadido el código y al principio no notaba ningún cambio y seguía viendo las imágenes duplicadas. Al analizar con detenimiento me di cuenta que si tenia introducido el nombre de la foto en el campo "txtimagen" y esa foto no existía salía duplicada (tengo mas de 7000 fotos numeradas correlativamente y según consigo la foto le pongo el numero que corresponda) por lo que elimine los números que no tuviesen fotos y su código funciono a la perfección con la salvedad de que el recuerdo de la imagen sigue apareciendo. Muchísimas gracias, nuevamente me ha sacado de un apuro

Para analizar si una imagen existe o no en el disco, puedes usar la función Dir(), pues si no existe el archivo/carpeta te devuelve una cadena vacía ("")

https://msdn.microsoft.com/es-es/library/dk008ty4(v=vs.90).aspx 

Respuesta

Pedro: Mira este ejemplo que hay en la Web de Neckkito, que seguro puedes adaptarlo:

http://siliconproject.com.ar/neckkito/index.php/ejemplos-explicados/todos/93-ejemplos-explicados/ejemplos-de-formularios/166-imagenes-en-formulario 

Ya me contarás si te resuelve el Problema. Saludos >> Jacito

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas