Informes e Imágenes en Access

Como estas, espero que bien porque yo con dolor de cabeza de tanto renegar con Access, a ver si me puedes ayudar
La idea es armar un informe con la lista de precios de mis productos, Código + Descripción + Precio y en el "renglón" de abajo una imagen del mismo.
En un campo de la tabla articulo guardo la ruta en la que se encuentra la imagen de ese articulo en particular.
El problema se me presenta cuando un articulo NO tiene imagen (el campo es null), en esos casos no debería dejarme el espacio en blanco (reservado para la imagen) entre ese articulo y el siguiente en el informe.
¿Se te ocurre como solucionar mi problema?
Tengo algunos conocimientos de programación en VB6 por si pensás que se tiene que resolver por código, pero estaría bien que me des algunas pautas para realizarlo.
Espero haber sido claro, cualquier duda, ¿lo vuelvo a plantear ok?

1 respuesta

Respuesta
1
Te voy a dar una solución "provisional". Digo provisional porque sin saber cómo tienes (o tendrás) el informe no puedo saber las medidas del mismo. Por ello tú te tendrás que pegar el "currete" de ir probando valores hasta que se ajuste correctamente.
Además, voy a suponer un par de cosas, que tú tendrás que cambiar en función de lo que tengas en tu BD.
Vámonossssssss...
1.- Crea el informe con los campos que necesites ver. Debes incluir el campo que te da la ruta de la imagen. Yo a ese campo lo voy a llamar simplemente [Nombre]. Le das el formato al "renglón" para que te quede como quieres verlo con sólo los campos.
2.- Sacas las propiedades del campo [Nombre] y te vas a la pestaña Formato -> Visible, y le sitúas la propiedad en NO. Puedes quitarle la etiqueta y redimensionas el campo para poder ponerlo en un rincocito que no moleste en vista diseño, ya que en vista preliminar ese campo no se va a ver.
Doy por supuesto que todas estas operaciones las estás realizando en la sección Detalle del informe.
3.- Debajo de tus campos, siempre en la sección detalle, metes un cuadro de imagen. Cuando te salga el asistente le asignas cualquier imagen para que pueda crearse el cuadro. No tiene mayor importancia la imagen que sea.
4.- Sacas las propiedades del cuadro de imagen y te vas a la pestaña Otras -> Nombre, y le escribes imgNombre
5.- Ahora haces click en cualquier parte de la sección Detalle, de manera que te quede seleccionada. Sacas las propiedades de esa sección.
6.- Te vas a la pestaña Eventos -> Al dar formato, y ahí le generas el siguiente código:
...
Private Sub Detalle_Format(Cancel As Integer, FormatCount As Integer)
Dim vNom As Variant
vNom = Me.Nombre.Value
'Si no hay valor en el campo nombre al cuadro de imagen le
'asigna una altura de cero y redimensiona el alto de la sección
'(todos los valores están en 'twips')
If IsNull(vNom) Then
With Me
.imgNombre.Height = 0
.Section(acDetail).Height = 200
End With
Else
'Si hay valor... 'Reasigna la altura del cuadro de imagen, la altura de la
'sección detalle y asigna la imagen al cuadro de imagen
With Me
.imgNombre.Height = 1000
.Section(acDetail).Height = 2000
.imgNombre.Picture = vNom
End With
End If
End Sub
...
¿Qué es lo que tienes que comprobar tú? Pues debes comprobar lo siguiente:
- Cambiar lo que te he marcado en negrita por el nombre del campo con la ruta que tengas tú en la BD
- En la condición IF, en el caso de que el campo sea nulo, verás que he puesto
.Section(acDetail).Height = 200
Esos 200 son twips, y es el tamaño de la sección SIN imagen. Debes ir cambiando los 200 por valores que te permitan ver correctamente los campos.
- En la condición IF, en el caso de que el campo no sea nulo, verás que he puesto
.imgNombre.Height = 1000
Esos 1000 representan la altura del cuadro de imagen.
.Section(acDetail).Height = 2000
Esos 2000 representan la altura de la sección CON imagen
Lógicamente, deberás "jugar" con esos valores a fin de conseguir un alto de imagen que consideres el adecuado, y lo mismo para el tamaño de la sección.
Y eso es todo... ¿fácil, no? ;)
Ya me dirás si tienes algún problema.
Hola Neckkito, estoy enormemente agradecido por tu ayuda, probé lo que me dijiste y se soluciono mi problema.
Quedo en deuda con vos, lo que necesites me avisas.
Saludos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas