jueves, 2 de diciembre de 2010

Como cambiar de Color a tus Barras segun su valor


Hola espero que les haya gustado mi artículo anterior, esta vez voy a explicarles como personalizar reportes usando Reporting Services, en este caso vamos a dar  color a las barras de un gráfico  dependiendo de su valor.
Veamos. Tenemos la siguiente tabla 
 dbo.Indicador

dbo.InfoEvaluado
Usare el siguiente Stored Procedure

CREATE PROCEDURE [dbo].[USP_SeleccionarScore]
@IdInfoEvaluado int
as 
  SELECT IdInfoEvaluado, codIndicador, Tipo = 'ESTUDIANTIL' ,valor=Convert(decimal,valor1)/100
  FROM Indicador where IdInfoEvaluado = @IdInfoEvaluado and  
  codIndicador = 'SCORE'
  union   
  SELECT IdInfoEvaluado, codIndicador, Tipo = 'VEHICULAR' ,valor= Convert(decimal,valor2)/100
  FROM Indicador where IdInfoEvaluado = @IdInfoEvaluado and  
  codIndicador = 'SCORE'
  union
  SELECT IdInfoEvaluado, codIndicador, Tipo = 'HIPOTECARIO' ,valor =Convert(decimal,valor3)/100
  FROM Indicador where IdInfoEvaluado = @IdInfoEvaluado and  
  codIndicador = 'SCORE' 
  order by valor
 
y el siguiente script
SELECT        IdInfoEvaluado, Apellidos + ', ' + Nombre AS NombreCompleto
FROM            InfoEvaluado
El Diseño del reporte quedaria de esta manera.

 En el chart data vamos a colocar los datos de esta forma.
Hasta acá todo es sencillo, como verán el reporte por defecto nos muestra las barras del mismo color pero nosotros necesitamos que las barras cambien de color dependiendo del valor que tienen. En este caso voy colocar las siguientes condiciones, si el valor esta entre 0 y 45 va a ser Rojo, si el valor esta entre 46 y 80 va a ser Amarillo y si el valor esta entre 81 y 100 es Verde,

 Ahora bien vamos a colocar la siguiente expresión. Para esto hacemos click derecho en el Chart Series llamado Valor, y seleccionamos Series Properties
Note que cuando selecciona un Chart Series aparecen unos puntos blancos sobre las barras.

 Hacemos Click en el botón fx y se nos muestra la siguiente pantalla.


Y como observaran he colocado un código muy simple. Que paso a mostrar.
=Switch(SUM(Fields!valor.Value)*100>=0 and SUM(Fields!valor.Value)*100<=40,
"Red",SUM(Fields!valor.Value)*100>40 and SUM(Fields!valor.Value)*100<=80,
"Yellow",SUM(Fields!valor.Value)*100>80 and SUM(Fields!valor.Value)*100<=100,
"Green")
Le dan aceptar y listo hacemos un preview y nos mostrara el siguiente gráfico.
Espero que este mini tutorial les haya servido. Y hasta la próxima….

Algo más pueden cambiar su expresión por este otro... en el caso que quieran  mostrar de diferente color cada barra según la fila.
=iif(RowNumber(Nothing)=1,"Red",iif(RowNumber(Nothing)=2,
"Yellow","Green"))

1 comentario:

  1. GRACIAS ME SIRVIO MUCHO, TENIA DIAS MATANDOME LA CABEZA DE COMO HACER ALGO ASI. GRACIAS SALUDOS DESDE COLOMBIA

    ResponderEliminar