Hola! Estoy haciendo una base de datos en la Informe con filas de distintos colores dependiendo caso

Estoy haciendo una base de datos en la que necesito que el informe
dependiendo del área del que procede el oficio, la fila entera tenga un
por color. Ya intente un código que vi por la red pero no hace nada, no
se si no me este tomando el valor del campo área pues ni siquiera
poniendo

if StrAREA = ENTRADA CSGZ then Me.TXTAREA. BackColor =
vbYellow, Me.TXTAREA. ForeColor = vbBlack

Obvio con la sintaxis correcta XDD. Te pongo el código completo que estoy usando, por el
momento solo tiene el campo del área para hacer las pruebas después
pondría todos los campos que serán afectados:

Private Sub TXTAREA_Enter()
Dim strTXTAREA As String

StrAREA = Me.TXTAREA

Me.TXTAREA.BackColor = vbWhite
Me.TXTAREA.ForeColor = vbBlack

Select Case StrAREA

Case "ENTRADA CSGZ"
Me.TXTAREA.BackColor = vbYellow
Me.TXTAREA.ForeColor = vbBlack

Case "ENTRADA PC"
Me.TXTAREA.BackColor = vbYellow
Me.TXTAREA.ForeColor = vbBlack

Case "SALIDA CSGZ"
Me.TXTAREA.BackColor = vbBlue
Me.TXTAREA.ForeColor = vbWhite

Case "SALIDA PC"
Me.TXTAREA.BackColor = vbBlue
Me.TXTAREA.ForeColor = vbWhite

Case "SALIDA UDIZ"
Me.TXTAREA.BackColor= vbRed
Me.TXTAREA.ForeColor = vbBlack
End Select
End Sub

1 Respuesta

Respuesta
1

El código lo estás poniendo en el evento incorrecto, tienes que ponerlo en el evento "Al dar formato" de la sección Detalle (Private Sub Detalle_Format(Cancel As Integer, FormatCount As Integer)

Ah! Una cosa que se me olvidaba!

Supongo que TXTAREA hace referencia a un cuadro de texto del informe. Con el código que tienes, lo que te hará será colorear el fondo y la letra de ese cuadro. Para que te coloree la fila entera, cambia TXTAREA por Detalle.

Si TXTAREA es el nombre que le tienes a la Sección Detalle, entonces el código está bien, y la primera linea será: Private Sub TXTAREA_Format(Cancel As Integer, FormatCount As Integer).

Hola!!!

ya lo he intentado así como dices

Private Sub Detalle_Format(Cancel As Integer, FormatCount As Integer)
Dim strTXTAREA As String
Me.Detalle.BackColor = vbWhite
Me.Detalle.ForeColor = vbBlack
Select Case StrAREA
Case "ENTRADA CSGZ"
Me.Detalle.BackColor = vbYellow
Me.Detalle.ForeColor = vbBlack
Case "ENTRADA PC"
Me.Detalle.BackColor = vbYellow
Me.Detalle.ForeColor = vbBlack
Case "SALIDA CSGZ"
Me.Detalle.BackColor = vbBlue
Me.Detalle.ForeColor = vbWhite
Case "SALIDA PC"
Me.Detalle.BackColor = vbBlue
Me.Detalle.ForeColor = vbWhite
Case "SALIDA UDIZ"
Me.Detalle.BackColor = vbRed
Me.Detalle.ForeColor = vbBlack
End Select
End Sub

Como bien dices TXTAREA

SORRY!!

Esta maquina esta loca daba espacio y se mandaba el mensaje, como te iba dciendo TXTAREA es un textbox donde, de otra tabla selecciono que área es, y dependiendo de esta se debe colorear la fila.

El problema es que todo sigue igual.

SALUDOS!!!

Bien, por lo que veo, tienes un par de errores en el código: primero declaras una variable con Dim, que luego no usas en el Select case, y ademas tampoco le das ningún valor. Prueba así:

Private Sub Detalle_Format(Cancel As Integer, FormatCount As Integer)
Dim StrAREA As String
Me.Detalle.BackColor = vbWhite
Me.Detalle.ForeColor = vbBlack

StrAREA = Me.TXTAREA
Select Case StrAREA
Case "ENTRADA CSGZ" ....

Y a partir de aquí, el resto igual.

Nada :(, sigue igual. habrá forma de pasarte la base, al fin solo es una de prueba porque estoy investigando si se podía hacer eso XD

Eso se puede hacer, lo comprobé este fin de semana. Puedes subir una copia de tu bd a www.filebig.net u otra web por el estilo, y pegas aqui el enlace de descarga.

El archivo se llama "Base de Datos 1" y el link es:

<a>http://www.filebig.net/files/MEPAHxg78U</a>

En verdad muchas gracias, incluso hice una table con los datos de las áreas porque antes lo tenia como valores pero creí que por eso no servia.

Te comento: no ves las filas de colores, porque seguro que cuando abres el informe lo hace por defecto en Vista Informe. Si lo abres en Vista Preliminar, ya se ven las filas del color deseado.

El código tiene un error, del que no me di cuenta antes: a la sección detalle no le puedes aplicar la propiedad ForeColor, que es para TextBox y Combobox. Por tanto, tendrás que borrar esas lineas, y si quieres cambiar el color de las letras de los cuadros, tendrás que ponerlos uno a uno en el código. Otra opción, es definir una variable, y asignarle el color de texto dentro del Select Case, y una vez fuera de el, poner todos los controles con la propiedad ForeColor igual a esa variable, algo así:
Private Sub Detalle_Format(Cancel As Integer, FormatCount As Integer)
Dim StrAREA As String
Dim ColorTexto as integer
Me.Detalle.BackColor = vbWhite
StrAREA = Me.TXTAREA
Select Case StrAREA
Case "ENTRADA CSGZ"
Me.Detalle.BackColor = vbYellow
ColorTexto=vbBlack
....
End Select
Me.TXTAREA.ForeColor=ColorTexto
Me.TIPO.ForeCOLOR=ColorTexto
Y así con todos.

Más cosas: los cuadros, deberías ponerlos con el fondo transparente, para que no te queden en blanco como ahora.

Y para acabar, en la Vista Diseño del informe, te colcas en la sección Detalle, y en ña pestaña Formato del Menu de Access, donde pone alternar color de fila, le tienes que marcar la opción "Sin Color".

Con esto, tu pregunta debería quedar lista.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas