Imprimir página | Cerrar ventana

Mostrar imagen según selección

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y VBA
Descripción del foro: Foro de programacion en Access (Con código y sin código)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=84591
Fecha de impresión: 19/Abril/2024 a las 10:10


Tema: Mostrar imagen según selección
Publicado por: andressf
Asunto: Mostrar imagen según selección
Fecha de publicación: 04/Julio/2019 a las 21:31
Buenas como andan? de ante mano les agradezco por su tiempo.
Tengo un formulario llamado: f_Artic_vta que tiene un cuadro de texto independiente llamado [descrip_art] y un cuadro de lista lamado  [lista_Art] que es independiente, pero basado en la tabla t_Art hasta acá todo bien, pero le agregué un marco de objeto independiente llamado [imag_Art] para que cuando haga clik sobre el cuadro de lista en el valor sellecionado me muestre la imagen.
Tengo la tabla:
t_Art con los campos:

(Clav.Pral ) Cod_ba_Art = Texto corto

                  Descrip_art = Texto corto

                  imag_Art = Objeto OLE

En el cuadro de lista [lista_Art] en eventos al hacer click puse

Private Sub lista_Art_Click()

Me.imag_Art = DLookup("imag_Art", "t_Art", "'Cod_ba_Art='" & Me.lista_Art.Column(5))

End Sub

Me sale este error:



Se ha producido el error '3075 en tiempo e ejecución:
Error de sintaxis (falta operador) en la expresion de consulta "Cod_ba_Art='1111010.




Respuestas:
Publicado por: jilo
Fecha de publicación: 05/Julio/2019 a las 07:18
Hola,
Yo lo haria de otra manera.
Primero cambia el Objeto independiente a objeto imagen y en vez de gusrdsr un objeto OLE, habria que guardar la ruta de la imagen como texto.
Segundo te hace falta la ruta de las imagenes y yo las meteria en el campo imag_Art(Ruta completa con archivo y extension) o crearia un campo nuevo llamado RutaImagen, por ejemplo.
Entonces en el evento click del Listbox


Private Sub lista_Art_Click()
Dim Ruta as string
Ruta  = DLookup("imag_Art" ó "RutaImagen", "t_Art", "'Cod_ba_Art='" & Me.lista_Art.Column(x))
 If Len(ruta) = 0 Then
 ' Consejo
 ' Tendrias que usar/crearte una imagen como 'imagen general' para cuando no tengas la imagen
 ' poner esa.
          Me.imag_Art.Picture = "TuRutaCompleta\ImagenGeneral.jpg"
 Else
          Me.imag_Art.Picture = ruta
 End If
End Sub



-------------
Espero te sirva !!!!!!
Iñaki


Publicado por: Maverick2019
Fecha de publicación: 05/Julio/2019 a las 10:07
Hola
¿Has cerrado las comillas después del código de artículo?

Salu2,


Publicado por: andressf
Fecha de publicación: 05/Julio/2019 a las 19:23
Buen día Jilo, muchas gracias por tu respuesta y por el consejo, probé como me dijiste y funcionó ahora lo que no me funciona es cuando no hay imagen, cree una imagen con el nombre imagen_general pero me sale el siguiente error:

Error 2220 en tiempo de ejecución
No puede abrir el archivo
C:\Imagen\1111007.jpg


Dim Ruta As String


Ruta = "C:\Imagen\" & Me.lista_Art.Column(5) & "" & ".jpg"

 If Len(Ruta) = 0 Then
         
              Me.Imagen_art.Picture = "C:\Imagen\imagen_general.jpg"
     
         
 Else
         
            Me.Imagen_art.Picture = Ruta

 End If


End Sub


Publicado por: prga
Fecha de publicación: 06/Julio/2019 a las 10:24
Hola.
Con el último código expuesto, la longitud de la cadena Ruta nunca será cero, con esto el If siempre "va" al Else.
Mira en la ayuda del VBA la función Dir que casi seguro resolverá el problema.
Ya comentas.
Un saludo a todos


Publicado por: jilo
Fecha de publicación: 06/Julio/2019 a las 12:36
Hola,
Prga tiene razon.Yo lo use porque usaba como busqueda Dlookup y puede que devuelva error si no existe ese registro. Te quedaria asi
Private Sub lista_Art_Click()
Dim Ruta as string
Ruta  = nz(DLookup("imag_Art" ó "RutaImagen", "t_Art", "'Cod_ba_Art='" & Me.lista_Art.Column(x)),"")
 If Len(ruta) = 0 Then
          Me.imag_Art.Picture = "C:\Imagen\imagen_general.jpg"
 Else
          Me.imag_Art.Picture = ruta
 End If
End Sub


-------------
Espero te sirva !!!!!!
Iñaki


Publicado por: andressf
Fecha de publicación: 08/Julio/2019 a las 01:12
Hola prga, gracias por responder, pero disculpame no entiendo que me queres decir. Busque en la ayuda pero no me sale nada con la función Dir, tengo office 365.


Publicado por: andressf
Fecha de publicación: 08/Julio/2019 a las 01:47
Hola jilo, probé, probé y me sigue dando error.


_________________________________________________________________________
Dim Ruta As String

Ruta = Nz(DLookup("C:\Imagen\", "t_Art", "'Cod_ba_Art='" & Me.lista_Art.Column(5)), "")

 If Len(Ruta) = 0 Then
          Me.Imagen_art.Picture = "C:\Imagen\imagen_general.jpg"
 Else
          Me.Imagen_art.Picture = Ruta
 End If

_______________________________________________________________________
Probé también así:


El error es cuando me tiene que mostrar la imagen_general
Error 2220 en tiempo de ejecución
No puede abrir el archivo
C:\Imagen\1111007.jpg



Dim Ruta As String
Dim vacio As String

Ruta = "C:\Imagen\" & Me.lista_Art.Column(5) & "" & ".jpg"

Vacio = Nz("C:\Imagen\" & Me.lista_Art.Column(5) & "" & "imagen_general.jpg") ' agregué esta linea

 If Len(Ruta) = 0 Then
 'También probé con Null en lugar de 0        
         
Me.Imagen_art.Picture = vacio
         
 Else
          Me.Imagen_art.Picture = Ruta
 End If

Espero puedan ayudarme...













Publicado por: xavi
Fecha de publicación: 08/Julio/2019 a las 09:24
Como te dijo prga, deberias buscar información sobre la función Dir de Access. Una búsqueda con las palabras "dir access vba" devuelve un monton de links, todos ellos con información válida.


If Len(Dir(Ruta, vbArchive)) = 0 Then

-------------
Xavi, un minyó de Terrassa

http://www.llodax.com" rel="nofollow - Mi web


Publicado por: andressf
Fecha de publicación: 11/Julio/2019 a las 17:50
Bueno, después de quemarme el craneo y buscar por todos lados he llegado!!.
Gracias y se puede cerrar.

Private Sub lista_Art_AfterUpdate()

Dim Archivo As String
Archivo = Dir("C:\Imagen\" & Me.lista_Art.Column(5) & "" & ".jpg")

If Archivo <> "" Then
    ' el fichero existe
    Me.Imagen_art.Picture = "C:\Imagen\" & Me.lista_Art.Column(5) & "" & ".jpg"
Else
    ' el fichero no existe
    'MsgBox "Imagen Inexistente", vbInformation, "AVISO"
    Me.Imagen_art.Picture = ("C:\Imagen\0000.jpg")
End If





Imprimir página | Cerrar ventana