La Web del Programador: Comunidad de Programadores
 
    Pregunta:  52010 - CAMBIAR COLOR A UNA FILA DE UN GRIDEX
Autor:  Álvaro Camacho Lugo
Hola muy buenas, tengo un gridex que me muestra todos los clientes que tengo en mi base. En esta tabla de cliente tengo un campo que me indica si el cliente lo es o no lo es, es decir, si ese campo(estado) tiene un 1 como valor es activo y si tiene un 0 es inactivo. Entonces lo que quiero hacer es que cuando me muestre en el gridex a todos los clientes que tengo en la tabla, a aquellos que tienen en el campo de "estado" un 1 se me ponga el texto de esa fila en azul y a los que no tienen un 1 me lo deje en negro tal como viene por defecto. Este es el codigo que tengo, a ver si me lo pueden revisar y decirme que es lo que tengo mal, ya que o me lo muestra todo en negro o en azul. (Cuando me lo muestra todo el gridex en azul es porque da la casualidad de que el ultimo registro del gridex cumple con la condicion que le indico, es decir, que el cliente es activo y entonces me pone todo el gridex en azul, no me respeta las filas.

"rsdatos" es el recordset que he hecho de la tabla "clientes" para mostrar en el gridex
la sentencia select que he hecho es: " select * from clientes"

While Not rsdatos.EOF
i = i + 1
If (rsdatos("estado") = 1) Then
GridEX1.Row = i
GridEX1.ForeColor = vbBlue
Else
GridEX1.Row = i
GridEX1.ForeColor = vbBlack
End If
rsdatos.MoveNext
Wend

Por favor a ver si me pueden decir que es lo que he hecho mal porque no me sale lo que estoy intentando hacer. Muchas gracias de antemano. Saludos.

  Respuesta:  David Enriquez
Tengo una funcion que te puede ayudar... mas o menos te platico como esta mi grid:

Tiene 1 columna
Grupo_Trabajo
Contabilidad
Nominas
Compras

llamo a la funcion
x=PintaFilas(Grid1)

Function pintafilas(ByVal Objeto As Object) As String
Dim IdGporEnc As String
On Error Resume Next
With Objeto
For Fila = 1 To .Rows - 1
.Col = 0
.Row = Fila
IdGporEnc = .Text
For icol = 0 To .Cols - 1
ColorSel = BuscaColor(IdGporEnc) 'La funcion me busca que color corresponde al grupo de trabajo encontrado
.Col = icol
.CellBackColor = ColorSel
Next icol
Next Fila
End With

Err.Clear()
' Comprueba el error, después muestra un mensaje.
If Err.Number <> 0 Then
Msj = "Error # " & Str(Err.Number) & " fue generado por " _
& Err.Source & Chr(13) & Err.Description
MsgBox(Msj, , "Error", Err.HelpFile, Err.HelpContext)
End If

'Ejemplo
'Grupo de Trabajo: Color
'Contabilidad Rojo
'Nominas Amarillo
'Compras Azul
'***Nota: si no mal recuerdo el color lo guardo en este formato: &H8000000F&
End Function

Espero te sirva