Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Colocar imágenes de varios registros en un formulario o informe en Access

Estas en el tema de Colocar imágenes de varios registros en un formulario o informe en Access en el foro de Bases de Datos General en Foros del Web. Hola, me estoy volviendo loco intentando crear un formulario o informe que me muestren una serie de imágenes cuya ruta tengo guardada en una consulta ...
  #1 (permalink)  
Antiguo 30/04/2008, 10:13
 
Fecha de Ingreso: enero-2008
Mensajes: 70
Antigüedad: 16 años, 10 meses
Puntos: 0
Colocar imágenes de varios registros en un formulario o informe en Access

Hola, me estoy volviendo loco intentando crear un formulario o informe que me muestren una serie de imágenes cuya ruta tengo guardada en una consulta de 12 registros. La idea es mostrar las imágenes una al lado de la otra y el nombre de la imagen (uno de los campos de esos registros) pegado en la parte inferior de la correspondiente foto. No se trata de un formulario o informe continuo, solo de una especie de presentación de las imágenes de los registros con sus nombres. Siempre son 12 pero el contenido de los registros va cambiando, por eso de tener la información en una tabla.
He estado intentandolo con un poquito de codigo, pero mis conocimientos no dan para eso. Solo consigo que me salga la primera imagen. Cuando lo intengo con la segunda se vuelve loco Access. Esto es lo que he llegado a conseguir. No se seguir. El origen de datos del formulario es la consulta "REGISTROS SELECCION". Los comando que vienen a continuación los he colocado en la propiedad del formulario "al activar registro"


Me.FOTO1.Picture = ""
Me.Texto1 = ""

Me.FOTO2.Picture = ""
Me.Texto2 = ""

' IMAGEN_01 Es el campo que contiene la ruta de la imagen de ese registro
' NOMBRE contiene el nombre de la persona de la foto

' registro Nº 1
DoCmd.GoToRecord , , acFirst
If (Dir(Me.IMAGEN_01) <> "") Then
Me.FOTO1.Picture = Me.IMAGEN_01
Else
Me.FOTO1.Picture = "C:\FOTOS\NOFOTO.JPG"
End If
Me.Texto1 = Me.NOMBRE

' para mostrar siguiente registro esto es lo que no me funciona

DoCmd.GoToRecord , , acNext

If (Dir(Me.IMAGEN_01) <> "") Then
Me.FOTO2.Picture = Me.IMAGEN_01
Else
Me.FOTO2.Picture = "C:\FOTOS\NOFOTO.JPG"
End If
Me.Texto2 = Me.NOMBRE



Saludos y gracias por atenderme.
  #2 (permalink)  
Antiguo 04/05/2008, 06:04
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Re: Colocar imágenes de varios registros en un formulario o informe en Access

Código:
Private Sub Form_Current()
'Creas un Recordset (especie de tabla virtual)
Dim rs As New ADODB.Recordset
'Texto que guardará la sentencia Sql que recupera los datos
Dim Sql As String
'Sentencia SQL recupera los 12 registros
Sql = "SELECT TOP 12 nombre, img from tablaimagenes;"
'Abrimos el Recordset con la sentencia anterior por lo que tendrà los 12 registros
rs.Open Sql, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
'Recorremos los 12 registros y mostramos las fotos y nombres
For i = 0 To 11 'Solo 11!!! 0 + 11 =12
If (Not IsNull(rs!img)) Then
    Me("imagen" & i).Picture = rs!img
    Me("nombre" & i) = rs!nombre
Else
    Me("imagen" & i).Picture = "C:\FOTOS\NOFOTO.JPG"
    Me("nombre" & i) = ""
End If
'Vamos al seguiente registro de rs
rs.MoveNext
'Pasamos al siguiente grupo Imageni/Nombrei
Next i
End Sub
Necesitas un formulario con 12 imagenes que tengan por nombre Imagen0, Imagen1,...,Imagen11 y 12 campos de texto que se llamen Nombre0,...,Nombre11 situados al pie de la correspondiente imagen.

En el origen de datos del formulario no pones NADA!!!

Y en el codigo de la propiedad del formulario "al activar registro" copias el codigo que te paso arriba una vez corregida la sentencia Sql para que se ajuste a tu tabla (te marco en rojo lo que seguramente tendras que cambiar)


Quim
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:18.