** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Mostrar imagen según selección
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Mostrar imagen según selección

 Responder Responder
Autor
Mensaje
andressf Ver desplegable
Habitual
Habitual
Avatar

Unido: 12/Abril/2011
Localización: Argentina
Estado: Sin conexión
Puntos: 110
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita andressf Cita  ResponderRespuesta Enlace directo a este mensaje Tema: Mostrar imagen según selección
    Enviado: 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.

Arriba
jilo Ver desplegable
Colaborador
Colaborador


Unido: 19/Diciembre/2004
Localización: TAFALLA
Estado: Sin conexión
Puntos: 864
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita jilo Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 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
Arriba
Maverick2019 Ver desplegable
Nuevo
Nuevo


Unido: 10/Junio/2019
Localización: Madrid
Estado: Sin conexión
Puntos: 26
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Maverick2019 Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 05/Julio/2019 a las 10:07
Hola
¿Has cerrado las comillas después del código de artículo?

Salu2,
Arriba
andressf Ver desplegable
Habitual
Habitual
Avatar

Unido: 12/Abril/2011
Localización: Argentina
Estado: Sin conexión
Puntos: 110
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita andressf Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 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
Arriba
prga Ver desplegable
Moderador
Moderador


Unido: 16/Noviembre/2004
Localización: España
Estado: Sin conexión
Puntos: 3153
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita prga Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 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
Arriba
jilo Ver desplegable
Colaborador
Colaborador


Unido: 19/Diciembre/2004
Localización: TAFALLA
Estado: Sin conexión
Puntos: 864
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita jilo Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 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
Arriba
andressf Ver desplegable
Habitual
Habitual
Avatar

Unido: 12/Abril/2011
Localización: Argentina
Estado: Sin conexión
Puntos: 110
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita andressf Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 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.
Arriba
andressf Ver desplegable
Habitual
Habitual
Avatar

Unido: 12/Abril/2011
Localización: Argentina
Estado: Sin conexión
Puntos: 110
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita andressf Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 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...











Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 11916
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita xavi Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 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

Mi web
Arriba
andressf Ver desplegable
Habitual
Habitual
Avatar

Unido: 12/Abril/2011
Localización: Argentina
Estado: Sin conexión
Puntos: 110
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita andressf Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 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




Editado por andressf - 14/Julio/2019 a las 01:36
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable