X

Oracle Application Express
Tipps, Tricks und Best Practice

  • February 9, 2018

Classic Reports einmal anders - mit Report Templates

Carsten Czarski
Consulting Member of technical Staff

Denkt man als APEX-Entwickler an einen Bericht, so hat man meist die typische, tabellarische Darstellung vor Augen.

Aber das geht auch anders. Der Classic Report ist sicherlich eine der vielseitigsten Komponenten in Application Express. Der Grund dafür ist, dass die Report-Darstellung komplett templategetrieben ist. Man kann eigene Templates erstellen, aber auch aus den von Application Express bereits mitgelieferten wählen. Dieses Posting gibt einen kleinen Überblick über diese Templates - einiges davon ist aus der Universal Theme Sample Application (apex.oracle.com/ut) entnommen - dort finden Sie noch mehr Beispiele und Informationen zum Look &  Feel von APEX-Komponenten.

Starten Sie mit dem ersten Berichts-Template. Navigieren Sie dazu, im Page Designer, zu den Berichtsattributen Ihres Berichts, und dann zum Abschnitt Appearance.

Wählen Sie beispielsweise das Template Media List aus, speichern Sie die Änderung ab und starten Sie die Seite neu.

Das ist noch nicht wirklich das gewünschte Ergebnis - man sieht deutlich, dass das Template ganz bestimmte Ergebnisspalten von der SQL-Abfrage erwartet. Noch genauer sieht man das, wenn man in die Template-Definition hineinsieht. Diese erreichen Sie übrigens bequem mit dem Klick auf die Schaltfläche > rechts neben der Auswahlliste für das Berichtstemplate. Platzhalter wie #ICON_CLASS# oder #LIST_TITLE# sind leicht zu erkennen.

Mit diesen Informationen kann die SQL-Abfrage nun angepasst werden.

select ename        as list_title,
       job          as list_text,
       'fa fa-user' as icon_class,
       null         as edit_link,
       sal          as list_badge
  from emp

Starten Sie die Seite nach dem Speichern nochmals ... 

Das sieht schon besser aus. Allerdings sind zum Template noch Template Options verfügbar. Diese werden wiederum im Page Designer eingerichtet, indem Sie auf die Schaltfläche rechts von Template Options klicken.

Aktivieren Sie Show Badges und Apply Theme Colors, speichern Sie, und starten Sie die Seite danach nochmals.

Nur eine kleine Änderung an der SQL-Abfrage - und wenige Mausklicks - und schon haben Sie eine völlig andere Visualisierung Ihrer Daten. Das funktioniert mit den anderen Berichts-Templates analog ...

Hier ein Beispiel for das Berichtstemplate Comments ... zunächst die SQL-Abfrage (die Daten der Tabelle EMP sind nicht sehr gut für dieses Template geeignet, als Beispiel reicht es jedoch aus).

select ename                    as user_name,
       'My comment is: ' || job as comment_text,
       hiredate                 as comment_date,
       null                     as user_icon,
       'Comment'                as actions,
       ' '                      as attribute_1,
       sal                      as attribute_2,
       ' '                      as attribute_3,
       ' '                      as attribute_4
  from emp

Das Ergebnis sieht dann wie folgt aus.

Beim Template Alert kommt es nicht nur auf die Platzhalter an, sondern vor allem auf den Inhalt des Platzhalters #ALERT_TYPE#. Zunächst die SQL-Abfrage ...

select ename  as alert_title,
       job    as alert_desc,
       sal    as alert_action,
       case 
           when sal < 1000                then 'info'
           when sal between 2000 and 3000 then 'success'
           when sal between 3000 and 4000 then 'warning'
           else                                'danger' 
       end    as alert_type
  from emp

Das Ergebnis sieht dann wie folgt aus - eine "Berichtszeile" enthält tatsächlich nur die drei Attribute titledesc und action. Das Aussehen wird vor allem von der Spalte alert_type gesteuert - und hier ist es wichtig, die Schlüsselworte infosuccess, warning und danger zu kennen. Das Ergebnis sieht wie folgt aus.

Das Template Badge List eignet sich gut, wenn der Report nur aus einer Zeile besteht.Liefert die SQL-Abfrage mehrere Zeilen zurück, ist es nicht so gut geeignet. Die Spaltennamen der SQL-Abfrage gehen hier direkt in die Darstellung ein. Am Beispiel ...

select empno,
       ename,
       extract(year from hiredate) as hired,
       sal,
       comm,
       deptno 
  from emp
 where rownum = 1

Man sieht, dass hier keine besonderen Platzhalter verwendet werden - die Spaltennamen können beliebig sein. Das Template stellt diese, wie folgt, direkt dar.

Das Timeline Template eignet sich gut zur Darstellung zeitlich hintereinander liegender Vorgänge ...

select apex_string.get_initials(ename) as user_avatar,
       ename                           as user_name,
       hiredate                        as event_date,
       'fa fa-user'                    as event_icon,
       case deptno
           when 10 then 'is-new'
           when 20 then 'is-removed'
           when 30 then 'is-updated'
           when 40 then 'is-updated'
       end                             as event_status,
       'Hired'                         as event_type,
       job                             as event_title,
       sal || 
          case when comm is not null then ' - ' end || 
          comm                         as event_desc
  from emp

Das Ergebnis sieht wie folgt aus - an der Query ist schon erkennbar, dass das Template recht viele Spalten und damit viele Darstellungsoptionen unterstützt.

Das Template Search Results eignet sich sehr gut im Zusammenspiel mit einem Suchfeld. Die folgende SQL-Abfrage liefert Spalten für dieses Template zurück.

select ename        search_title,
       job          search_desc,
       null         search_link,
       'Sal'        label_01,
       sal          value_01,
       'Hiredate'   label_02,
       hiredate     value_02,
       'Comm'       label_03,
       comm         value_03,
       'Deptno'     label_04,
       deptno       value_04 
from emp
where instr(ename||job, :P10_SEARCH)>0 or :P10_SEARCH is null

Natürlich wird diese Abfrage bei großen Datenmengen langsam sein; hier könnte bspw. Oracle Text als Suchtechnologie in Betracht kommen. Das Ergebnis wird in etwa wie folgt aussehen.

Zum Abschluss sei das Template Cards erwähnt. Die Art der Darstellung findet man recht oft im Internet - und mit diesem Template wird es wirklich einfach, Tabellendaten auf die gleiche Art und Weise zu visualisieren ...

Zunächst zur SQL-Abfrage ...

select ename                           card_title,
       apex_string.get_initials(ename) card_initials,
       job                             card_text,
       hiredate                        card_subtext,
       'f?p=...'                       card_link
from emp

Das Ergebnis sieht zunächst so aus ...

Das Template Cards bietet viele Template Options an. So lassen sich Icons oder Initialen für eine Karte einschalten; man kann die Karten in den Farben des Theme darstellen und steuern, wieviele Karten pro Zeile dargestellt werden sollen.

Man sieht sehr schön, dass man das Aussehen eines klassischen Berichts sehr schön steuern kann - und das ganz ohne HTML- und CSS-Kenntnisse - es reicht aus, die SQL-Abfrage so anzupassen, dass das Berichts-Template mit den richtigen Ergebnisspalten versorgt wird. Probieren Sie es einfach mal aus.

Zurück zur Community-Seite

 

 

 

Be the first to comment

Comments ( 0 )
Please enter your name.Please provide a valid email address.Please enter a comment.CAPTCHA challenge response provided was incorrect. Please try again.