Mostrar imagen según selección del cuadro de lista

Tengo un formulario llamado: f_Artic_vta que tiene un cuadro de texto independiente llamado [descrip_art] y un cuadro de lista llamado  [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 seleccionado 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:

http://www.mvp-access.com/foro/topic84591_post509012.html#509012

Se ha producido el error '3075 en tiempo e ejecución:

Error de sintaxis (falta operador) en la expresión de consulta "Cod_ba_Art='1111010.

1 Respuesta

Respuesta
3

Es de suponer que 111... será texto, ya que si fuera numérico tendrías que quitar el apostrofe delante de las comillas y &

Dejarlo como

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

Por el contrario, si fuera texto

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

Si me permites un consejo, no uses nunca campos OLE, lo único que hacen es "engordar" la base un disparate. Hay mil formas de hacerlo mejor. Por ejemplo. Si tengo el formulario con un cuadro de lista donde aparecen "los nombres" de las imágenes

Cuando selecciono uno

Si selecciono otro

Le pongo un control imagen, que en este caso se llama Imagen2. El código del evento Después de actualizar del cuadro de lista Lista0 es

Private Sub Lista0_AfterUpdate()
Imagen2.Picture = "c:\users\...\documents\imagenesusar\" & Me.Lista0.Value & "" & ".jpg"
End Sub

Es decir, le pones la ruta a la carpeta donde están las fotos y, en este caso, le he puesto la extensión JPG, ya que no sé que valores te aparecen en tu cuadro de lista.

Pero como te decía hay mil formas mejores que usar campos OLE.

Hola Icue González, muchas gracias por tu consejo lo voy a probar. El ejemplo que pusiste es tal cual lo que quiero hacer.

Icue González, de nuevo gracias, 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

Supongamos el formulario que te decía, y en el cuadro de lista le he añadido un valor que no tiene imagen

Cuando lo selecciono

En este caso el código lo dejo como, usando una función

Public Function existearchivo(ruta As String) As Boolean
If Len(Dir(ruta)) > 0 Then
existearchivo = True
Else
existearchivo = False
End If
End Function
Private Sub Lista0_AfterUpdate()
If existearchivo("c:\users\cabarcos\documents\imagenesusar\" & Me.Lista0.Value & "" & ".jpg") Then
Imagen2.Picture = "c:\users\cabarcos\documents\imagenesusar\" & Me.Lista0.Value & "" & ".jpg"
Else
MsgBox "Nenico, nenico, no te das cuen de que esa imagen no existe", vbOKOnly + vbExclamation, "Señor, dame paciencia"
End If
End Sub

Hola, la idea es que si selecciono uno que no tenga imagen, me muestre una imagen general, ya que tengo un listado de 2000 registros y no todos la tienen, por eso que al seleccionar un registro busque si tiene la muestre y sino muestra una imagen vacía.

En ese caso donde yo pongo lo de msgbox sólo tienes que poner

imagen2.picture="c:\users\......\imagengeneral.jpg"

Bueno, después de quemarme el cráneo y buscar por todos lados he llegado!.

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

Si a ti te sirve, ni mil palabras. Como te decía, se puede hacer de muchas maneras.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas