In einem StyleSheet bedingt formatieren, anzeigen und verknüpfen

In diesem Abschnitt:

Sie können Reportkomponenten unter Bedingungen formatieren, eine Grafik anzeigen lassen sowie Links in Ihren Report mit einbeziehen und dies alles von den Werten in Ihrem Report abhängig machen. Mit bedingtem Styling können Sie:

Fügen Sie, um Reports bedingt zu formatieren, der StyleSheet-Deklaration das WHEN-Attribut hinzu. Das WHEN-Attribut gibt eine Bedingung an, die für jede Instanz einer Reportkomponente ausgewertet wird (d. h. für jede Zelle einer Tabellenreport-Spalte, jedes Element in einem Diagramm oder jede Freiform-Reportseite). Die StyleSheet-Deklaration wird auf jede Instanz angewendet, die die Bedingung erfüllt, und wird von jeder Instanz ignoriert, die die Bedingung nicht erfüllt.

Sie können auch sequenzielle bedingte Formatierung anwenden.

Hinweis: Die Variablen TABPAGENO und TABLASTPAGE können nicht verwendet werden, um Styling mit bedingtem Styling (WHEN) zu definieren.


Nach oben

x
Sequenzielle bedingte Formatierung anwenden

Vorgehensweise:

Sie können sequenzielle bedingte Logik auf eine Reportkomponente anwenden, indem Sie eine Reihe von Deklarationen erstellen, die je eine andere Bedingung haben. Diese Funktion der StyleSheets entspricht einer Sequenz von eingebetteten IF-THEN-ELSE-Anweisungen. Wenn verschiedene bedingte Deklarationen dieselbe Reportkomponente angeben (z. B. dieselbe Spalte) und dasselbe Feld in der Bedingung auswerten, werden sie als Gruppe verarbeitet. Folgendes gilt für jede Instanz der Reportkomponente (z. B. für jede Zelle einer Spalte):

  1. Die bedingten Deklarationen in der "Gruppe" werden in der Reihenfolge ausgewertet, in der sie im StyleSheet aufgelistet sind, bis eine der Bedingungen erfüllt ist. Diese Deklaration wird dann auf diese Instanz der Reportkomponente angewendet. Die anderen bedingten Deklarationen in der "Gruppe" und alle Deklarationen ohne Bedingungen, welche sich auf dieselbe Reportkomponente und dieselben Attribute beziehen, werden für diese Instanz ignoriert.
  2. Wenn jedoch keine der bedingten Deklarationen für diese Instanz zutrifft, wird die erste Deklaration ohne Bedingung für diese Reportkomponente, die dasselbe/dieselben Attribut(e) angibt, auf diese Instanz angewendet.
  3. Alle Deklarationen ohne Bedingungen für diese Reportkomponente, die andere Attribute angegeben (d.h. Attribute, die auf die Instanz nicht schon in der Stufe 1 oder 2 angewendet wurden), werden nun auf die Instanz angewendet.
  4. Der gesamte Ablauf wird für die folgende Instanz in der Reportkomponente wiederholt (z. B. für die nächste Zelle in der Spalte).

Ein Beispiel finden Sie unter Sequenzielle bedingte Formatierung verwenden.



x
Syntax: In einem StyleSheet bedingt formatieren, anzeigen oder verknüpfen
TYPE=type, [subtype,] attributes, WHEN=field1 operator {field2|value},$

oder

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

Hierbei gilt:

type

Ist der Wert des TYPE-Attributs. Sie können eine beliebige Reportkomponente angeben. Genaues finden Sie unter Eine Reportkomponente in einem WebFOCUS StyleSheet identifizieren.

subtype

Sind alle weiteren Attribute, wie z. B. COLUMN, ACROSS oder ITEM, die benötigt werden, um die Reportkomponente zu identifizieren, auf die Sie die Deklaration anwenden.

Attribute

Sind die Attribute in der StyleSheet-Deklaration, die vom WHERE-Attribut bedingt gemacht werden. Hierzu können die meisten Formatierungs-, Grafiken- und Hyperlink-Attribute gehören.

field1, field2

Identifiziert die Reportfelder, die verglichen werden. Kann Folgendes sein:

  • Der Name eines Anzeigefeldes oder vertikalen oder horizontalen Sortierfeldes in einem Diagaramm- oder Tabellenreport. ACROSS-Werte können als Teil der bedingten Formeln verwendet werden, um Styling-Attribute für jede Zelle in der Tabelle zu definieren.
  • Ein Spaltenverweis in einem Report oder einem Tabellenreport.
  • Der Name eines eingebetteten Feldes in der Kopf- oder Fußzeile eines Freiform-Reports.

Falls Sie ein Feld verwenden möchten, dass im Report nicht angezeigt werden soll, können Sie das Feld in der Reportanfrage angeben und die NOPRINT-Option verwenden, um das Anzeigen des Feldes zu verhindern (z. B. PRINT fieldname NOPRINT).

Sie können einen Präfixoperator auf ein Feld in einem Report wie folgt anwenden:

  • Verwenden Sie denselben Präfixoperator im WHEN-Attribut. Sie müssen auf das Feld im WHEN-Attribut mit seinem Namen verweisen (z. B. WHEN=AVE.PRICE GT 300).
  • Verweisen Sie auf das Feld im WHEN-Attribut über seine Spaltenposition und lassen Sie den Präfixoperator weg (z. B. WHEN=N3 GT 300). Dies wird nicht unterstützt für die Präfixoperatoren ST. und CT. Präfixoperatoren.
  • Sie können keine zusammengesetzten booleschen Formeln im WHEN-Attribut verwenden.

Das Feld darf kein gepacktes (P) numerisches Feld sein.

Operator

Definiert, wie die Bedingung erfüllt wird. Sie können die folgenden relationalen Operatoren verwenden:

EQ, wobei die Bedingung erfüllt ist, wenn die Werte auf der linken und rechten Seite gleich sind. Falls die Werte, die verglichen werden, alphanumerisch sind, muss ihre Groß- und Kleinschreibung übereinstimmen.

NE, wobei die Bedingung erfüllt ist, wenn die Werte auf der linken und rechten Seite nicht gleich sind.

LT, wobei die Bedingung erfüllt ist, wenn der Wert auf der linken kleiner als der Wert auf der rechten Seite ist.

LE, wobei die Bedingung erfüllt ist, wenn der Wert auf der linken kleiner oder gleich dem Wert auf der rechten Seite ist.

GT, wobei die Bedingung erfüllt ist, wenn der Wert auf der linken größer als der Wert auf der rechten Seite ist.

GE, wobei die Bedingung erfüllt ist, wenn der Wert auf der linken größer oder gleich dem Wert auf der rechten Seite ist.

Wert

Ist eine Konstante, wie z. B. eine Zahl, eine Zeichenfolge oder ein Datum. Sie müssen nichtnumerische Konstanten, wie z. B. Zeichenfolgen und Daten, in einfache Anführungszeichen setzen.

Obwohl Sie hier keine Funktionen oder Operatoren verwenden können, um den Wert anzugeben, können Sie ein Temporärfeld (COMPUTE oder DEFINE) mit Funktionen und Operatoren definieren und es dann hier anstelle einer Konstanten angeben.

FORECAST

Identifiziert Felder, die mit dem FORECAST-Befehl erzeugt wurden.



Beispiel: Sequenzielle bedingte Formatierung verwenden

In diesem Beispiel ist zu sehen, wie Sie sequenzielle bedingte Formatierung auf einen Report anwenden. Dieser Report verwendet sequenzielle bedingte Logik, um jede Zeile basierend auf ihrer Gesamtbestellung zu formatieren (LINEPRICE).

   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

Beachten Sie:

  1. Die erste Deklaration mit Bedingungen fomatiert jede Zeile deren Bestellungen-Gesamtsumme größer als 500.000 ist.
  2. Die zweite bedingte Deklaration formatiert alle Zeilen, deren Gesamtbestellung größer als 400.000 und weniger oder gleich 500.000 ist. Dies ist so, da die Zeilen mit einer Gesamtbestellung von mehr als 500.000 schon durch die erste bedingte Deklaration formatiert wurden.
  3. Die dritte Deklaration mit Bedingungen fomatiert Zeilen, deren Gesamtbestellungen größer als 100.000 ist und weniger oder gleich 400.000. Dies ist so, da Zeilen mit einer Gesamtbestellung von mehr als 400.000 schon durch eine der ersten beiden bedingten Deklarationen formatiert wurden.
  4. Die nicht bedingte Deklaration, die auf bedingte Deklarationen folgt, gibt Folgendes an:
    • Hintergrundfarbe, die auch durch bedingte Deklarationen angegeben wird. Sie wendet die Hintergrundfarbe (Silber) auf alle Zeilen an deren Bestellungen-Gesamtsumme kleiner oder gleich 100.000 sind, da diese Zeilen noch nicht durch Deklarationen mit Bedingungen formatiert wurden.
    • Schriftart, die nicht durch bedingte Deklarationen angegeben ist. Wendet die Schriftart (Arial) auf alle Datenzeilen an.

Die Ausgabe ist:



Beispiel: Einfache bedingte Formatierung anwenden

In diesem Beispiel ist zu sehen, wie Sie bedingte Formatierung auf einen Report anwenden. Die Bedingte Formatierung lenkt die Aufmerksamkeit auf Bestellungen, die über 200.000 betragen.

Beachten Sie, dass, da keine bestimmte Spalte in der Deklaration angegeben ist, die Formatierung auf die gesamte Zeile angewendet wurde.

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

Die Ausgabe ist:



Beispiel: Bedingte Formatierung auf eine Spalte anwenden

Dieses Beispiel zeigt, wie Sie bedingte Formatierung verwenden können, um die Aufmerksamkeit auf Spalten zu lenken, die in der Bedingung nicht angegeben sind. Die WHEN-Bedingung besagt, dass die Bestellnummern für Bestellungen über 200.000 fett gedruckt und mit einem Hintergrund in Aqua angezeigt werden sollen.

Beachten Sie, dass die Spalte, die in der WHEN-Bedingung (LINEPRICE) ausgewertet wird, sich von der Spalte unterscheidet, die formatiert wird (ORDER_NUM). Es muss sich hierbei nicht um dieselbe Spalte handeln.

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

Die Ausgabe ist:



Beispiel: Einen ACROSS-Wert bedingt stylen

Das nachfolgende Beispiel zeigt, wie auf einen ACROSS-Wert verwiesen werden kann mit entweder dem ACROSS-Feldnamen oder dem ACROSS-Spaltenkennzeichner (A1, A2).

In diesem Beispiel werden die ACROSS-Werte in bedingtem Styling verwendet, um eine eindeutige Hintergrundfarbe für alle ACROSS-Spalten in der Kategorie Kaffee einzustellen, und einen zusätzlichen Schriftstil für die ACROSS-Spalte 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

Die Ausgabe ist:



Beispiel: Ein Datenvisualisierungs-Balkendiagramm bedingt formatieren

In diesem Beispiel ist zu sehen, wie Sie bedingte Formatierung auf ein Datenvisualisierungs-Balkendiagramm anwenden. Diese Reportanfrage enthält ein Datenvisualisierungsbalkendiagramm, um die Daten in der Spalte LINEPRICE grafisch darzustellen. Sie verwendet bedingte Formatierung, um die Aufmerksamkeit auf Bestellungen zu lenken, die über 200.000 betragen. Sie wendet diese Formatierung bedingt auf die Datenspalten (TYPE=DATA) und auf das Balkendiagramm (GRAPHTYPE=DATA) an.

Beachten Sie, dass Datenvisualisierung nur für HTML-Reports unterstützt wird.

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

Die Ausgabe ist:



Beispiel: Bedingte Formatierung basierend auf verborgenen Feldwerten (NOPRINT) anwenden

In diesem Beispiel ist zu sehen, wie Sie bedingte Formatierung basierend auf den Werten eines verborgenen (NOPRINT) Feldes anwenden. In diesem Report wird bedingte Formatierung verwendet, um die Aufmerksamkeit auf die Angestellten zu lenken, die gekündigt haben.

Beachten Sie, dass die Attributbedingung WHEN ein Feld (STATUS) auswertet, das im Report verborgen ist. Obwohl das Feld, das in der Bedingung ausgewertet wird, in die Reporanfrage aufgenommen werden muss, können Sie verhindern, dass es im Report angezeigt wird, indem Sie die NOPRINT-Option verwenden, wie es in der folgenden Anfrage zu sehen ist.

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

Die Ausgabe ist:



Beispiel: Bedingte Formatierung auf eine Sortiergruppe anwenden

In diesem Beispiel ist zu sehen, wie Sie bedingte Formatierung auf eine Sortiergruppe anwenden. In diesem Report wird bedingte Formatierung verwendet, um die Aufmerksamkeit auf die Angestellten zu lenken, die gekündigt haben.

Beachten Sie, dass eine bedingte Deklaration Formatierung auf alle Sortiergruppenzeilen anwenden kann. Sie können dies erreichen, indem Sie das Sortierfeld (STATUS) in der Attributbedingung WHEN auswerten.

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

Die Ausgabe ist:

Diese Version der Reportanfrage verwendet zwei Deklarationen, die je eine Spalte angeben (LNAME und FNAME), um dieselbe bedingte Formatierung nicht auf alle, sondern nur auf zwei Spalten anzuwenden:

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

Die Ausgabe ist:



Beispiel: Bedingte Formatierung auf prognostizierte Werte anwenden

Im Folgenden wird beschrieben, wie Sie bedingte Formatierung auf prognostizierte Werte in einem Report anwenden können.

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

Die Ausgabe ist:


WebFOCUS