Curso de Microsoft Access avanzadoCurs d'Access avançat 2007

  1. Alternar el color de las filas en un informe de MS-Access
  2. Calendario para cambiar las fechas en MS-Access
  3. Creación de filtros con MS-Access
  4. Rellenar una plantilla de MS-Word a partir de una consulta en MS-Access


Buscar

Categorías

Histórico



Asociación de Internautas
Navega a la última con Firefox

1) Alternar el color de las filas en un informe de MS-Access
Francisco 18-03-07
Lápices pintando rayas

Se trata de alternar el color de fondo de las filas de detalle de un informe en Microsoft Access; pintaremos las líneas pares de un color y las impares de otro color diferente.

Esto facilita en gran medida la lectura del informe ya que es fácil seguir leyendo la misma línea sin que nuestra mirada se dirija a la fila anterior o posterior.

Primera solución

En nuestra primera aproximación el propósito es encontrar la solución más sencilla posible.

En el diseño del informe hay que incluir el siguiente código Visual Basic en el evento Al Imprimir de la sección Detalle:

Private Sub Detail_Print(Cancel As Integer, PrintCount As Integer)

Static cuenta As Long
Dim color As Long
Dim resto As Long

cuenta = cuenta + 1
resto = cuenta Mod 2

If resto = 0 Then
color = vbWhite
Else
color = 16777177
End If

Me.Detail.BackColor = color

End Sub
  • La variable cuenta se utiliza para contar la línea de detalle que se quiere imprimir. Esta variable tiene que ser static para que la cuenta se mantenga y no vuelva a empezar desde cero.
  • La variable resto vale siempre 0 o 1 ya que es el resto que da al dividir la cuenta entre 2. Si da 0 significa que es un número de línea de detalle par y sino es impar.
  • El número 16777177 corresponde a un color celeste claro. Se puede calcular dicho número observando el número que da al cambiar la propiedad Color de fondo.

Segunda solución

En este caso pretendemos que sea lo más sencillo posible aplicar este efecto a cualquier informe

Pasos a seguir

  1. En el diseño del informe incluiremos la siguiente expresión en el evento Al imprimir de la sección Detalle:
    Al imprimir:=AlternarColorFondo()
  2. En la misma sección Detalle cambiaremos también el color de fondo:
    Color del fondo:16777177
  3. Agregaremos un nuevo módulo a nuestra base de datos que se llame por ejemplo ModuloInformes con el siguiente código:
Public Function AlternarColorFondo()

Static color_no_blanco As Long
Static es_par As Boolean
Dim informe As Report
Dim color_fondo As Long

Set informe = Screen.ActiveReport
color_fondo = informe.Section(acDetail).BackColor
If color_fondo <> vbWhite Then color_no_blanco = color_fondo
es_par = Not es_par

If es_par Then
color_fondo = color_no_blanco
Else
color_fondo = vbWhite
End If

informe.Section(acDetail).BackColor = color_fondo

End Function

Tercera solución

Hay una solución avanzada dónde se pueden pasar por parámetro el informe, el número de línea y el color de fondo. Para ver el código y ejemplos de uso descárgate la base de datos de ejemplo

Descargar la base de datos altenar_color.7z… (Está comprimido con 7-zip)




7 comentarios:

1 → Pablo (no registrado) dice hace 9 meses:

Funciona bien cuando los marcadores no están el encabezado o pie del documento.
¿Hay forma de solucionarlo?

Un saludo

2 → expomiaoptiff (no registrado) dice hace 9 meses:

I’d prefer reading in my native language, because my knowledge of your languange is no so well. But it was interesting!

3 → Carlos Colombia (no registrado) dice hace 8 meses:

Esta muy Buena tu explicacion... Pero tengo una pregunta... puedo crear ul filtro como la busqueda del winamp?? es decir que mientras escribo automaticamente me vaya filtrando enseguida???? Se puede???? Gracias....
carlosandresardila(arroba)gmail(punto)com Gracias....

4 → jose (no registrado) dice hace 6 meses:

Muchas gracias por tu generosa contribución me fue muy utíl

5 → Lourdes (no registrado) dice hace 4 meses:

Hola, agradezco mucho la información, me esta ayudando muchisimo. Gracias.

Pero tengo un problemilla al intentar ejecutarlo en mi base de datos. Caundo le doy al boton me sale un pantallazo de error del Informeword que dice: "El parametro de la cadena es demasiado largo".
Además con la curiosidad de que en el dot. se me vuelcan unos campos y otros no ¿?.

Agradecería que me indicarais cual es mi error (estoy un poco pez en VB) ya que llevo mucho tiempo detras de esto y que ahora gracias a ti ya sale .... a medias.

Grascias Mil.

6 → Laura Domínguez (no registrado) dice hace 3 meses:

Mil gracias!! por este código, me sirvio muchísimo, era exactamente lo que buscaba. Un abrazo.

7 → Jose Sanchez (no registrado) dice hace 3 meses:

Muchisima gracia por estos codigo, deberian existir mas personas como tu, asi, lo que estamos empezado en este mundo de la informatica, encontraramos el conocimiento mas rapido

Añade tu comentario:

(El correo no será publicado)