Cómo aplicar un formato, mostrar y enlazar condicionalmente en una hoja de estilos

En esta sección:

Puede aplicar un formato condicional a componentes de informes, mostrar un gráfico e incluir enlaces en su informe basados en los valores de su informe. Cuando usa rasgos de estilo condicionales puede:

Para dar un formato condicional a sus informes, agregue el atributo WHEN a la declaración de hoja de estilos. El atributo WHEN especifica una condición que se evalúa en cada ocurrencia de un componente de informe (es decir, en cada celda de una columna de informe tabular, cada elemento en un gráfico o cada página de informe de formato libre). La declaración de hoja de estilos se aplica a cada ocurrencia que satisfaga dicha condición y es ignorada en cada ocurrencia que no satisfaga dicha condición.

También puede aplicar formato condicional en secuencia.

Nota: No se puede utilizar las variables TABPAGENO y TABLASTPAGE para definir el estilo con estilo condicional (WHEN).


Principio de página

x
Cómo aplicar el formato condicional en secuencia

Cómo:

Puede aplicar la lógica condicional en secuencia a un componente de informe mediante la creación de una serie de declaraciones, cada una con una condición diferente. Este es el equivalente, en las hojas de estilos, de una secuencia de oraciones IF-THEN-ELSE anidadas. Cuando algunas declaraciones condicionales especifiquen el mismo componente de informe (por ejemplo, la misma columna) y evalúen el mismo campo en esa condición, serán procesados todos juntos, como grupo. En cada ocurrencia del componente del informe (por ejemplo, en cada celda de una columna):

  1. Se evalúan las declaraciones condicionales en el "grupo" en el orden en que vayan apareciendo en la hoja de estilos, hasta que se satisfaga una de las condiciones. Luego se aplica dicha condición a la ocurrencia del componente del informe. La otra declaración condicional en el "grupo" así como cualquier declaración no condicional que especifique el mismo componente del informe y los mismos atributos, son ahora ignoradas en esta ocurrencia.
  2. Ahora bien, si ninguna de las declaraciones condicionales ha sido satisfecha en esa ocurrencia, entonces se aplica a esa ocurrencia la primera declaración no condicional de ese componente de informe que especifica los mismos atributos.
  3. Se aplican a este caso todas las declaraciones incondicionales de ese informe que especifiquen otros atributos (atributos que todavía no se han aplicado al caso en el paso 1 o 2).
  4. Todo el proceso se repite en la próxima ocurrencia del componente de informe (por ejemplo, en la próxima celda de la columna).

Para ver un ejemplo de esto, vaya a Cómo utilizar formato condicional en secuencia .



x
Sintaxis: Cómo Aplicar formato, mostrar y enlazar condicionalmente en una hoja de estilos
TYPE=type, [subtype,] attributes, WHEN=field1 operator {field2|value},$

o

TYPE=type, [subtype,] attributes, WHEN=FORECAST, $

donde:

type

Es el valor del atributo TYPE. Puede especificar cualquier componente de informe. Para obtener información detallada, consulte Cómo identificar un componente de informe en una hoja de estilo de WebFOCUS.

subtype

Se refiere a cualquier otro atributo adicional, como COLUMN, ACROSS o ITEM, que se necesita para identificar el componente de informe al que se le aplica la declaración.

attributes

Son los atributos en la declaración de hoja de estilos que se convierten en condicionales mediante el atributo WHEN. Pueden incluir a la mayoría de los atributos de formato, imágenes gráficas e hipervínculos.

field1, field2

Identifican los campos del informe que se comparan. Cada uno puede ser:

  • El nombre del campo de visualización o del campo de clasificación vertical, u horizontal, en un gráfico o informe tabular. Puede usar los valores de ACROSS como parte de las expresiones condicionales, para definir los atributos de estilo de cada celda de la tabla.
  • Una referencia a una columna en un gráfico o informe tabular.
  • El nombre de un campo insertado en el encabezado o el pie de página

Si desea utilizar un campo que no quiere que aparezca en el informe)., puede especificar el campo en la solicitud de informe y utilizar la opción NOPRINT para evitar que el campo aparezca (por ejemplo, PRINT fieldname NOPRINT).

Para aplicar un operador de prefijo a un campo en un informe, puede:

  • Utilizar el mismo operador de prefijo en el atributo WHEN. Debe referirse al campo por nombre en el atributo WHEN (por ejemplo, WHEN=AVE.PRICE GT 300).
  • Haga referencia al campo en el atributo WHEN usando la posición de la columna y omita el operador de prefijo (por ejemplo, WHEN=N3 GT 300). Los operadores de prefijo ST. y CT. operadores de prefijo.
  • No puede utilizar expresiones booleanas compuestas con el atributo WHEN.

El campo no puede ser un campo numérico empaquetado (P).

operator

Define cómo se satisface la condición. Puede utilizar estos operadores relacionales

EQ donde la condición se satisface si los valores a la izquierda y a la derecha son iguales. Si los valores comparados son alfanuméricos, deben coincidir en cuanto a si están en mayúscula, minúscula o en estilo mixto.

NE donde la condición se satisface si los valores a la izquierda y a la derecha no son iguales.

LT donde la condición se satisface si el valor a la izquierda es menor que el valor a la derecha.

LE donde la condición se satisface si el valor a la izquierda es menor o igual al valor a la derecha.

GT donde la condición se satisface si el valor a la izquierda es mayor que el valor a la derecha.

GE donde la condición se satisface si el valor a la izquierda es mayor o igual al valor a la derecha.

value

Es una constante, como un número, cadena de caracteres o fecha. Debe poner las constantes no numéricas, tales como cadenas de caracteres y fechas, entre comillas simples.

Aunque aquí no se pueden usar funciones ni operadores para especificar el valor, puede definir un campo temporal (COMPUTE o DEFINE) mediante funciones y operadores, usar el campo temporal en el informe o especificarlo aquí en vez de una constante.

FORECAST

Identifica campos producidos usando el comando FORECAST.



Ejemplo: Cómo utilizar formato condicional en secuencia

Este ejemplo muestra cómo aplicar formato condicional en secuencia a un informe. Este informe usa lógica condicional en secuencia para dar formato a cada fila basada en su total de pedidos (LISTPRICE).

   TABLE FILE CENTORD
   HEADING
   "Order Revenue"
   " "
   SUM ORDER_DATE LINEPRICE AS 'Order,Total:'
   BY HIGHEST 10 ORDER_NUM
   ON TABLE SET PAGE-NUM OFF
   
   ON TABLE SET STYLESHEET *
   TYPE=REPORT, GRID=OFF, $ 
1. TYPE=DATA, BACKCOLOR=AQUA, STYLE=BOLD+ITALIC,
   WHEN=LINEPRICE GT 500000, $
2. TYPE=DATA, BACKCOLOR=YELLOW, STYLE=BOLD,
   WHEN=LINEPRICE GT 400000, $
3. TYPE=DATA, BACKCOLOR=ORANGE, STYLE=ITALIC,
   WHEN=LINEPRICE GT 100000, $
4. TYPE=DATA, BACKCOLOR=SILVER, FONT='Arial', $ 
   TYPE=HEADING, FONT='Arial', STYLE=BOLD, SIZE=11, $
   ENDSTYLE
   
   END

Tenga en cuenta que:

  1. La primera declaración condicional da formato a cualquier fila cuyo total de pedidos sea superior a 500,000.
  2. La segunda declaración condicional da formato a cualquier fila cuyo total de pedidos sea mayor que 400,000 y menor o igual a 500,000. Esto es así porque las filas con un total de pedido superior a 500,000 ya habrían sido formateadas por la primera declaración condicional.
  3. La tercera declaración condicional da formato a cualquier fila cuyo total de pedido sea mayor que 100,000 y menor o igual a 400,000. Esto es así porque las filas con un total de pedido superior a 400,000 ya habrían sido formateadas por una de las primeras dos declaraciones condicionales.
  4. La declaración incondicional que sigue a la declaración condicional especifica:
    • Color de fondo, también especificado en las declaraciones condicionales. Aplica color de fondo (plateado) a cualquier fila cuyo total de pedido sea menor o igual a 100,000, toda vez que dichas filas no han sido aún formateadas por las declaraciones condicionales.
    • Tipografía, que no ha sido especificada en las declaraciones condicionales. Aplica tipografía (Arial) a todas las filas de datos.

La salida es:



Ejemplo: Cómo aplicar formato condicional básico

Este ejemplo muestra cómo aplicar formato condicional a un informe. El formato condicional destaca los pedidos cuyo total sea superior a 200,000.

Tenga en cuenta que, dado que no se ha especificado una columna concreta de la declaración, el formato se aplica a toda la fila.

TABLE FILE CENTORD
HEADING
"Order Revenue"
" "
SUM ORDER_DATE LINEPRICE AS 'Order,Total:'
BY HIGHEST 10 ORDER_NUM
ON TABLE SET PAGE-NUM OFF
 
ON TABLE SET STYLESHEET *
TYPE=REPORT, GRID=OFF, $ 
TYPE=DATA, BACKCOLOR=AQUA, STYLE=BOLD, WHEN=LINEPRICE GT 200000, $ 
TYPE=HEADING, FONT='Arial', STYLE=BOLD, SIZE=11, $
ENDSTYLE
 
END

La salida es:



Ejemplo: Cómo aplicar formato condicional a una columna

Este ejemplo muestra cómo puede utilizar formato condicional para destacar columnas que no han sido especificadas en la condición. La condición WHEN establece que el número de pedido de los pedidos que superen los 200,000 debe aparecer en negrita, con un fondo aqua.

Note que la columna que se evalúa en la condición WHEN (LINEPRICE) es diferente de la columna con formato (ORDER_NUM); no tienen que ser iguales.

TABLE FILE CENTORD
HEADING
"Order Revenue"
" "
SUM ORDER_DATE LINEPRICE AS 'Order,Total:'
BY HIGHEST 10 ORDER_NUM
ON TABLE SET PAGE-NUM OFF
 
ON TABLE SET STYLESHEET *
TYPE=REPORT, GRID=OFF, $ 
TYPE=DATA, COLUMN=ORDER_NUM,
   BACKCOLOR=AQUA, STYLE=BOLD, WHEN=LINEPRICE GT 200000, $ 
TYPE=HEADING, FONT='Arial', STYLE=BOLD, SIZE=11, $
ENDSTYLE
 
END

La salida es:



Ejemplo: Cómo aplicar un estilo condicional a un valor de ACROSS

El siguiente ejemplo demuestra cómo hacer referencia a un valor de ACROSS, mediante el nombre del campo ACROSS o el designador de columnas de ACROSS (A1, A2).

En este ejemplo, los valores de ACROSS se utilizan con un estilo condicional, para establecer un color de fondo único en todas las columnas de ACROSS de la categoría Coffee, y un estilo de fuente adicional para la columna ACROSS Espresso.

SET ACROSSTITLE=SIDE
TABLE FILE GGSALES
SUM DOLLARS/I8M AS ''
BY REGION
BY ST
BY CITY
ACROSS CATEGORY
ACROSS PRODUCT
WHERE CATEGORY EQ 'Coffee' OR 'Food';
ON TABLE SET PAGE-NUM NOPAGE
ON TABLE NOTOTAL
ON TABLE PCHOLD FORMAT PDF
ON TABLE SET HTMLCSS ON
ON TABLE SET STYLE *
SQUEEZE=ON,UNITS=IN,ORIENTATION=PORTRAIT,$
TYPE=REPORT,FONT='ARIAL',SIZE=10,BORDER=LIGHT,$
TYPE=ACROSSTITLE,COLOR=WHITE, BACKCOLOR=GREY,$
TYPE=ACROSSVALUE,COLOR=WHITE, BACKCOLOR=GREY,$ 
TYPE=TITLE,COLOR=WHITE, BACKCOLOR=GREY,$
TYPE=DATA, ACROSSCOLUMN=DOLLARS, BACKCOLOR=THISTLE, WHEN=CATEGORY EQ 'Coffee',$
TYPE=DATA, ACROSSCOLUMN=DOLLARS, STYLE=BOLD+ITALIC, WHEN=A2 EQ 'Espresso', $
ENDSTYLE
END

La salida es:



Ejemplo: Cómo aplicar formato condicional a un gráfico de barras de visualización de datos

Este ejemplo muestra cómo aplicar formato condicional a un gráfico de barras de visualización de datos. Esta solicitud de informe incorpora un gráfico de visualización de datos para representar gráficamente los datos en la columna LINEPRICE. Usa el formato condicional para destacar los pedidos con un total superior a 200,000. Aplica condicionalmente dicho formato tanto a las columnas de datos (TYPE=DATA) como al gráfico de barras (GRAPHTYPE=DATA).

Fíjese que la visualización de datos se admite sólo para informes HTML.

TABLE FILE CENTORD
HEADING
"Order Revenue"
" "
SUM ORDER_DATE LINEPRICE AS 'Order,Total:'
BY HIGHEST 10 ORDER_NUM
ON TABLE SET PAGE-NUM OFF
 
ON TABLE SET STYLESHEET *
TYPE=REPORT, GRID=OFF, $ 
TYPE=DATA, BACKCOLOR=AQUA, STYLE=BOLD, WHEN=LINEPRICE GT 200000, $ 
GRAPHTYPE=DATA, COLUMN=LINEPRICE, $ 
GRAPHTYPE=DATA, GRAPHCOLOR=AQUA, WHEN=LINEPRICE GT 200000,$ 
TYPE=HEADING, FONT='Arial', STYLE=BOLD, SIZE=11, $
ENDSTYLE
 
END

La salida es:



Ejemplo: Cómo aplicar un formato condicional basado en valores de campos ocultos (NOPRINT)

Este ejemplo muestra cómo aplicar un formato condicional basado en valores de un campo oculto (NOPRINT). Este informe usa el formato condicional para destacar a los empleados que se han dado de baja.

Tenga en cuenta que la condición de atributo WHEN evalúa un campo (STATUS) oculto en el informe. Aunque el campo que se evalúa en la condición debe incluirse en la solicitud del informe, puede evitar que aparezca en el informe usando la opción NOPRINT, tal como se muestra en la siguiente solicitud.

TABLE FILE CENTHR
HEADING
"Employee List for Boston"
" "
"For Pay Levels 5+"
" "
"Resigned Employees Shown in <0>Red Bold"
" " 
PRINT LNAME FNAME PAYSCALE STATUS NOPRINT 
BY ID_NUM
WHERE PLANT EQ 'BOS' AND PAYSCALE GE 5
ON TABLE SET PAGE-NUM OFF
 
ON TABLE SET STYLESHEET *
TYPE=REPORT, GRID=OFF, $ 
TYPE=DATA, COLUMN=LNAME,
   COLOR=RED, FONT='Arial', STYLE=BOLD, WHEN=STATUS EQ 'RESIGNED', $
TYPE=DATA, COLUMN=FNAME,
   COLOR=RED, FONT='Arial', STYLE=BOLD, WHEN=STATUS EQ 'RESIGNED', $ 
TYPE=HEADING, FONT='Arial', STYLE=BOLD, SIZE=11, $
TYPE=HEADING, LINE=5, STYLE=-BOLD, $
TYPE=HEADING, LINE=5, ITEM=2, STYLE=BOLD, COLOR=RED, $
ENDSTYLE
 
END

La salida es:



Ejemplo: Cómo aplicar formato condicional a un grupo de clasificación

Este ejemplo muestra cómo aplicar formato a un grupo de clasificación. Este informe usa el formato condicional para destacar a los empleados que han renunciado.

Tenga en cuenta que una declaración condicional puede dar formato a todas las filas de grupo de clasificación. Para ello, evalúe el campo de clasificación (STATUS) en la condición WHEN.

TABLE FILE CENTHR
HEADING
"Employee List for Boston"
" "
"For Pay Levels 5+"
" "
PRINT LNAME FNAME PAYSCALE
BY STATUS SKIP-LINE
WHERE PLANT EQ 'BOS' AND PAYSCALE GE 5
ON TABLE SET PAGE-NUM OFF
 
ON TABLE SET STYLESHEET *
TYPE=REPORT, GRID=OFF, $ 
TYPE=DATA,
   COLOR=RED, FONT='Arial', STYLE=BOLD, WHEN=STATUS EQ 'RESIGNED',$ 
TYPE=HEADING, FONT='Arial', STYLE=BOLD, SIZE=11, $
ENDSTYLE
 
END

La salida es:

Para aplicar el mismo formato condicional a sólo dos columnas en vez de a todas las columnas, esta versión de la solicitud de informe usa dos declaraciones, donde cada una especifica una columna diferente (LNAME y FNAME):

TABLE FILE CENTHR
HEADING
"Employee List for Boston"
" "
"Pay Levels 5+"
" "
PRINT LNAME FNAME PAYSCALE
BY STATUS SKIP-LINE
WHERE PLANT EQ 'BOS' AND PAYSCALE GE 5
ON TABLE SET PAGE-NUM OFF
 
ON TABLE SET STYLESHEET *
TYPE=REPORT, GRID=OFF, $ 
TYPE=DATA, COLUMN=LNAME,
   COLOR=RED, FONT='Arial', STYLE=BOLD, WHEN=STATUS EQ 'RESIGNED', $
TYPE=DATA, COLUMN=FNAME,
   COLOR=RED, FONT='Arial', STYLE=BOLD, WHEN=STATUS EQ 'RESIGNED', $ 
TYPE=HEADING, FONT='Arial', STYLE=BOLD, SIZE=11, $
ENDSTYLE
 
END

La salida es:



Ejemplo: Cómo aplicar formato condicional a valores pronosticados

A continuación se muestra cómo aplicar formato condicional a valores pronosticados en un informe.

DEFINE FILE GGSALES
SDATE/YYM = DATE;
SYEAR/Y = SDATE;
SMONTH/M = SDATE;
PERIOD/I2 = SMONTH;
END
 
TABLE FILE GGSALES
SUM UNITS DOLLARS
BY CATEGORY BY PERIOD
WHERE SYEAR EQ 97 AND CATEGORY EQ 'Coffee'
ON PERIOD RECAP MOVAVE/D10.1= FORECAST(DOLLARS,1,3,'MOVAVE',3);
ON TABLE SET PAGE-NUM OFF
ON TABLE SET STYLE *
TYPE=REPORT, GRID=OFF, $
TYPE=REPORT, BACKCOLOR=SILVER, WHEN=FORECAST, $
END

La salida es:


WebFOCUS