Cambiar imagen al cambiar texto de cuadro combinado.

El formulario que estoy creando es de resultados equipos de futbol en el cual saco el nombre de un cuadro combinado, lo que quisiera es asociarle una imagen del equipo que he introducido en el cuadro combinado, por ejemplo si pongo Tordera que aparezca la imagen del equipo Tordera y que se cambie si cambio el equipo.

No se si me explique bien o esta un poco liado.

2 respuestas

Respuesta
2

Carlos: Mira éste ejemplo en la Web de Neckkito.

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

El principio es el mismo que el que tu pretendes hacer, solo que él utiliza un cuadro de texto.

Mis saludos >> Jacinto

Respuesta
2

Supongamos que tienes una carpeta con las fotos de los equipos y que el nombre de cada foto es del tipo Tordera, Palamós, etc

Supongamos también que el combinado donde eliges el equipo se llama Elegir. Crea un control imagen y en sus Propiedades-otras-Nombre ponle, por ejemplo ImagenFoto. En las propiedades del combinado, en Eventos-Después de actualizar crea un procedimiento de evento y entre Private Sub y End Sub escribe

Dim Ruta As String
Ruta = "c:\users\cabarcos\documents\borrar\" & [elegir] & ".jpg"

If Not IsNull(Me.elegir) Then

   Me.Imagenfoto.Picture = Ruta

Else

    Me.Imagenfoto.Picture = ""

End If

Si el combinado tiene origen del control en algún campo de una tabla, sería conveniente que exactamente lo mismo lo pusieras en el evento Al activar el registro del formulario.

Por cierto, me había olvidado, tienes que cambiar lo de users/Cabarcos... por la ruta tuya a la carpeta donde están las fotos

Hola:

He puesto lo que comentas y me da este error, por lo que el numero 5 es el ide de la foto.

como lo puedo solucionar.

Gracias.

Eso es porque el valor que coge el combinado, probablemente la columna dependiente sea la uno.

O bien haces el combinado si el asistente y en Origen de la fila, con el generador le dejas sólo el campo NombreEquipo

O bien pones en el código

Ruta = "c:\users\cabarcos\documents\borrar\" & me.[elegir].column(1) & ".jpg"

Es que en código la primera columna de un combinado es 0, la segunda 1, etc.

De todas formas creo que tienes mi dirección y si no, es [email protected] y te mando un ejemplo. Si mandas el mensaje, en el Asunto pon tu alias Carlos Piqueras, ya que si no sé quien me escribe ni los abro

Saludos, ahora me esta funcionando a medias, si la no se encuentra da este error

Le encontré la solución las imágenes no eran jpg, las cambie y ahora si funciona.

Gracias por todo y saludos

Puedes agregarle control de errores pero si no encuentra la foto porque no existe, o si existe no tiene ese nombre que has elegido te saldrá un mensaje diciéndote que no puede abrir el archivo.

On Error GoTo elegir_AfterUpdate_Err
Dim Ruta As String
Ruta = "c:\users\cabarcos\documents\borrar\" & Me.Elegir.Column(1) & ".jpg"

If Not IsNull(Me.Elegir) Then

   Me.Imagenfoto.Picture = Ruta

Else

    Me.Imagenfoto.Picture = ""

End If
elegir_AfterUpdate_Exit:
    exit sub

elegir_AfterUpdate_Err:
    MsgBox Error$
    Resume elegir_AfterUpdate_Exit

He ido rápido al decir que lo había solucionado, resulta que en el formulario tengo dos equipos Local y Visitante

Y solo me cambia el local si cambio el Visitante coge la imagen del Local estas son las instrucciones del equipo local que he puesto después de actualizar

Dim Ruta As String
Ruta = "D:\Mi carpeta\Ingresos Gastos\Fotos_Campos_Futbol\" & [EquipoLocal].Column(1) & ".jpg"

If Not IsNull(Me.EquipoLocal) Then

Me.Local.Picture = Ruta

Else

Me.Local.Picture = ""
End If

equipo Visitante

Dim Ruta As String
Ruta = "D:\Mi carpeta\Ingresos Gastos\Fotos_Campos_Futbol\" & [EquipoLocal].Column(1) & ".jpg"

If Not IsNull(Me.EquipoVisitante) Then

Me.Visitante.Picture = Ruta

Else

Me.Visitante.Picture = ""
End If

y en activar registro

'Dim Ruta As String
Ruta = "D:\Mi carpeta\Ingresos Gastos\Fotos_Campos_Futbol\" & [EquipoLocal].Column(1) & ".jpg"

If Not IsNull(Me.EquipoLocal) Then
Me.Local.Picture = Ruta
Else
Me.Local.Picture = ""
End If

If Not IsNull(Me.EquipoVisitante) Then

Me.Visitante.Picture = Ruta

Else

Me.Visitante.Picture = ""
End If

Carlos, si observas, estas poniendo la misma ruta a los dos, en el caso del equipo visitante y suponiendo que el combinado donde lo eliges se llame EquipoVisitante tienes que poner, en sus propiedades-eventos-Después de actualizar, lo mismo pero

Ruta = "D:\Mi carpeta\Ingresos Gastos\Fotos_Campos_Futbol\" & [EquipoVisitante].Column(1) & ".jpg"

Y lo mismo en el evento Al activar registro del formulario.

Hola de nuevo, por fin funciona bien, tenia un nombre mal escrito.

Abusando de tu amabilidad seria posible si por ejemplo no esta la foto que en vez de dar error saliera un cuadro de información .

Gracias de nuevo.

Saludos.

donde pone msgbox Error$ ponlo como

 MsgBox "Esa foto no existe, como no la pintes", vbOKOnly, "Que le vamos a hacer"

Ahora si estoy perdido.

En la instrucción no tengo ninguna línea msgbox Error$

Gracias.

Soluciono un problema y aparece otro

Tengo esta instrucción al activar registro y no aparece la foto del equipo local.

Esta es

Private Sub Form_Current()
'Equipo Visitante
On Error GoTo elegir_AfterUpdate_Err
Dim Ruta As String
Ruta = "D:\Mi carpeta\Ingresos Gastos\Fotos_Campos_Futbol\Visitante\" & [EquipoVisitante].Column(1) & ".jpg"
If Not IsNull(Me.EquipoVisitante) Then
Me.FotoVisitante.Picture = Ruta
Else
Me.FotoVisitante.Picture = ""
End If
elegir_AfterUpdate_Exit:
Exit Sub
elegir_AfterUpdate_Err:
MsgBox "Falta colocar la foto de los equipos", vbOKOnly + vbCritical, "Que le vamos a hacer" 'MsgBox Error$
Resume elegir_AfterUpdate_Exit
' End If
'**********************************************
'Equipo Local
Ruta = "D:\Mi carpeta\Ingresos Gastos\Fotos_Campos_Futbol\Local\" & [EquipoLocal].Column(1) & ".jpg"
If Not IsNull(Me.EquipoLocal) Then
Me.FotoLocal.Picture = Ruta
Else
Me.FotoLocal.Picture = ""
End If
Exit Sub
MsgBox "Falta colocar la foto de los equipos", vbOKOnly + vbCritical, "Que le vamos a hacer" 'MsgBox Error$
Resume elegir_AfterUpdate_Exit
'End If
End Sub

Creo que estarás harto de tanto problema.

Saludos y gracias.

Gracias por recordarme que no le hacéis ni caso a lo que se os manda. Si repasas la respuesta mía de hace 17 horas verías que te había puesto que se le añadiera control de errores. Ponía textualmente

"Puedes agregarle control de errores pero si no encuentra la foto porque no existe, o si existe no tiene ese nombre que has elegido te saldrá un mensaje diciéndote que no puede abrir el archivo.

On Error GoTo elegir_AfterUpdate_Err
Dim Ruta As String
Ruta = "c:\users\cabarcos\documents\borrar\" & Me.Elegir.Column(1) & ".jpg"

If Not IsNull(Me.Elegir) Then


elegir_AfterUpdate_Exit:
    exit sub

elegir_AfterUpdate_Err:
    MsgBox Error$
    Resume elegir_AfterUpdate_Exit

Parece que te ha molestado el que dijera que no tenia ninguna línea msgbox Error$, la verdad es que esta y lo solucione lo que me pasa es que me lio con unas instrucciones y otras pero lo solucione, ahora como comento más arriba que solo aparece la foto del equipo visitante cuando abro el registro.he puesto las instrucciones que están más arriba, si quieres comentar bien y si no gracias por todo

Si en el evento al activar el registro tienes dos veces definido(una por local y otra por visitante)

dim ruta as string

ruta=.......

El código coge la primera. Cuando se pone en el evento Después de actualizar cada definición de ruta es de un objeto (combinado) distinto, por eso no influye pero si durante la declaración hay dos variables iguales el código coge siempre la primera, por eso es necesario que en el evento Current

Se ponga, por ejemplo

dim rutalocal as string, rutavisitante as string

rutalocal=C:\.....................\Local\" & Me.equipolocal\." & [EquipoLocal].Column(1) & ".jpg"

rutavisitante=C:\.....................\Local\" & Me.equipolocal\." & [Equipovisitante].Column(1) & ".jpg"

Y asignar la ruta a su control imagen correspondiente

Donde demonios esta el error sigue mostrando solo una al activar

'equipo local ***********************************
On Error GoTo elegir_AfterUpdate_Err
Dim rutalocal As String, rutavisitante As String
rutalocal = "D:\Mi carpeta\Ingresos Gastos\Fotos_Campos_Futbol\Local\" & [EquipoLocal].Column(1) & ".jpg"
If Not IsNull(Me.EquipoLocal) Then
Me.FotoLocal.Picture = rutalocal
Else
Me.FotoLocal.Picture = ""
End If
Exit Sub
MsgBox "Esa foto no existe, como no la pintes", vbCritical + vbOKOnly, "Que le vamos a hacer"
Resume elegir_AfterUpdate_Exit
'equipo Visitante *******************************

rutavisitante = "D:\Mi carpeta\Ingresos Gastos\Fotos_Campos_Futbol\Visitante\" & [EquipoVisitante].Column(1) & ".jpg"
If Not IsNull(Me.EquipoVisitante) Then
Me.FotoVisitante.Picture = rutavisitante
Else
Me.FotoVisitante.Picture = ""
End If
elegir_AfterUpdate_Exit:
Exit Sub
elegir_AfterUpdate_Err:
MsgBox "Esa foto no existe, como no la pintes", vbCritical + vbOKOnly, "Que le vamos a hacer"
Resume elegir_AfterUpdate_Exit

Saludos.

Esto se está convirtiendo en el cuento de nunca acabar. En su día te ofrecí mi correo para, o bien enviarte un ejemplo o bien que me enviaras la base y le echara un vistazo. Como no puedo saber si los controles tienen nombres correctos etc., doy por terminado el tema

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas