Se anche a te piace la pizza come piace a me, penso che sarai d’accordo nell’affermare una pizzeria non può chiamarsi tale se non ha nel proprio menù alcuni classici intramontabili come la margherita, la boscaiola o la capricciosa.
Non credi?
Allo stesso modo, io penso che oggi una applicazione enterprise non può dirsi all’avanguardia se non offre ai propri utenti un ambiente di sviluppo che consenta di creare report e di visualizzare le informazioni con tabelle e cruscotti.
Non è una questione che possa essere messa in discussione: se è vero che i dati prima di tutto devono essere inseriti (si spera nel modo più intuitivo possibile per l’utente), poi devono anche poter essere estratti in un modo altrettanto semplice.
Quando penso ad un report da sviluppare in Oracle APEX è probabile che la prima cosa che mi venga in mente sia la classica estrazione in formato tabellare.

Quando si tratta di costruire dashboard, grafici e tabelle, da cui poi fare un po’ di drill-down per arrivare al dato puro, Oracle APEX ha tutto quello di cui hai bisogno.
Creare una applicazione che permetta di estrarre i dati in formato tabellare è un lavoro di una semplicità quasi disarmante.
Ma non è di questo che voglio parlare oggi.
Quello che mi chiedo è: Oracle APEX è sempre lo strumento adatto per creare, ad esempio, un portale e-commerce per vendere servizi, una agenda digitale oppure una applicazione social?
Insomma, è effettivamente lo strumento giusto quando il nostro obiettivo è costruire una applicazione web dove la componente di user interface è importante tanto quanto la componente di back-end?
In questo articolo desidero spiegarti come utilizzare un componente grafico specifico che APEX mette a disposizione della sua libreria e di come puoi sfruttarlo realizzare delle applicazioni molti interessanti, che magari non pensavi: il Classic Report.
Prima di iniziare, ti ricordo che puoi vedere on-line tutti gli esempi che ho preparato in questo tutorial collegandoti direttamente all’APP di APPIn5Minuti, sviluppato al 100% in APEX.

IN QUESTO ARTICOLO
Cos’è il Classic Report APEX
Prima di passare alle questioni più tecniche, vale la pena fare una piccola introduzione per capire cos’è il Classic Report e quando conviene prenderlo in considerazione rispetto ad altri strumenti di reporting che il nostro framework di sviluppo low-code mette a disposizione.
Faccio questa precisazione perché, come forse già sai, in Oracle APEX puoi visualizzare i dati in tanti modi diversi: ad esempio usando un Interactive Report oppure una Interactive Grid.
Anche se a prima vista questi oggetti sembrano molto simili, di fatto hanno specifiche peculiarità che vale la pena tenere a mente per scegliere con maggior consapevolezza.
Un Classic Report ha bisogno di una Origine Dati per funzionare come query SQL, una tabella oppure una API Rest.
Una volta che hai definito il suo layout, il Classic Report non mette a disposizione dell’utente nessuna funzionalità di personalizzazione del formato o del suo aspetto.
D’altro canto, un Interactive Report è, come suggerisce il nome, interattivo: l’utente può modificarne l’aspetto nascondendo o visualizzando le colonne disponibili, può ordinare le righe secondo uno o più campi e può creare dei filtri.
L’Interactive Grid, infine, da la possibilità di modificare direttamente nella griglia i campi senza dover aprire form.
Quindi, a prima vista, sembrerebbe che il Classic Report sia un componente abbastanza limitato.
Ma è proprio così?
Come immaginerai, la risposta è no. Anzi, tutto il contrario.
Il Classic Report è in effetti uno dei componenti più versatili di APEX.
Il motivo principale sta nel fatto visualizza le informazioni utilizzando dei template HTML che possono essere personalizzati ed estesi per ottenere il risultato migliore.
Inoltre APEX mette a disposizione un discreto numero di template HTML pronti all’uso che possono essere utilizzati per gli scopi più disparati.
Come configurare un Classic Report
Prima di tutto ti spiegherò come configurare un Classic Report.
A tal proposito ho creato nel database una tabella S_EMP dove gestire l’elenco dei dipendenti di una generica azienda: per fare questo esercizio tu potrai utilizzare una qualunque tabella o vista del database.
Questa è una query di esempio per estrarre i dati
select id,
last_name,
first_name,
userid,
start_date,
title,
salary
from s_emp
- Accedi all’APP Builder ed apri la definizione della pagina che vuoi modificare
- Aggiungi una nuova Region di tipo Classic Report di nome Tabular Classic Report.

- Vai alle proprietà della Region Tabular Classic Report ed imposta le seguenti proprietà
- Identification > Title: Tabular Classic Report
- Identification > Type: Classic Report
- Source > Location: Local Database
- Source > Type: SQL Query
- Source > SQL Query: inserisci la query

- Clicca su Attributes e vai alla sezione Appearance dove puoi notare che il template selezionato è quello Standard (formato tabellare).

- Se esegui la Preview dovresti vedere qualcosa di simile a questo

- Sempre in Attributes > Appearance, clicca sul menù a tendina Template per vedere tutti i template disponibili.

Come usare i template del Classic Report
Vediamo insieme quali alcuni dei template messi a disposizione da APEX e come possiamo configurarli (o personalizzarli) per i nostri obiettivi.
Alert Template
Il template Alert è particolarmente utile quando vuoi creare una pagina web che mostra delle notifiche evidenziate in modo diverso in funzione di parametro di severity (es: info, warning, danger,…)
A tal proposito ho creato una semplice tabella (di cui qui sotto trovi lo script), chiamata S_ALERTS che utilizzerò per gestire nel sistema queste notifiche.
-- create tables
create table s_alerts (
id number generated by default on null as identity
constraint s_alerts_id_pk primary key,
title varchar2(150 char),
description varchar2(250 char),
creation_date date,
archived varchar2(1 char),
type varchar2(7 char)
)
;
-- triggers
create or replace trigger s_alerts_biu
before insert or update
on s_alerts
for each row
begin
:new.type := lower(:new.type);
end s_alerts_biu;
/
-- load data
insert into s_alerts (
id,
title,
description,
creation_date,
archived,
type
) values (
1,
'Rhoncus non,molestie sit amet.',
'Risus rhoncus.Cras vulputate porttitor ligula. Nam semper diam suscipit elementum sodales.',
sysdate - 38,
'Y',
'INFO'
);
insert into s_alerts (
id,
title,
description,
creation_date,
archived,
type
) values (
2,
'Proin vulputate.',
'Faucibus. Ut id nulla ac sapien suscipit tristique ac volutpat risus.Phasellus vitae ligula commodo, dictum lorem sit amet, imperdiet ex.',
sysdate - 49,
'N',
'SUCCESS'
);
insert into s_alerts (
id,
title,
description,
creation_date,
archived,
type
) values (
3,
'Suscipit elementum sodales.',
'Risus rhoncus.Cras vulputate porttitor ligula. Nam semper diam suscipit elementum sodales. Proin sit amet massa eu lorem commodo ullamcorper.',
sysdate - 30,
'Y',
'WARNING'
);
insert into s_alerts (
id,
title,
description,
creation_date,
archived,
type
) values (
4,
'Mattis risus rhoncus.Cras vulputate porttitor ligula.',
'Lorem commodo ullamcorper.Interdum et malesuada fames ac ante ipsum primis in faucibus.',
sysdate - 10,
'N',
'DANGER'
);
insert into s_alerts (
id,
title,
description,
creation_date,
archived,
type
) values (
5,
'In massa pharetra, id mattis risus rhoncus.',
'Posuere cubilia Curae; Proin vulputate placerat pellentesque. Proin viverra lacinialectus, quis consectetur mi venenatis nec.',
sysdate - 94,
'Y',
'INFO'
);
commit;
- Per prima cosa, creiamo un nuovo Classic Reports usando la seguente query SQL
select id,
title,
description,
creation_date,
archived,
type
from s_alerts

- Esegui la Preview. Se non hai fatto alcuna personalizzazione dovresti vedere il classico formato tabellare che ci aspettiamo.

- Seleziona il Classic Report

- Vai al pannello delle proprietà e clicca su Attributes
- Vai alla sezione Appearance > Template e seleziona il template Alerts

- Esegui la Preview: dovresti ottenere qualcosa di simile a quello riportato nella figura seguente.

Forse ti starai chiedendo: beh, cosa stai vedendo esattamente?
Ovviamente stai guardando i record estratti dalla query che hai inserito nella definizione del Classic Report.
Tuttavia, manca ancora un passaggio fondamentale: devi mappare le colonne estratte dalla query con i campi in input che si aspetta di ricevere il template ossia quelli che vedi nel layout.
In questo caso specifico, il template Alerts prevede 3 parametri da mappare
- ALERT_TITLE: l’oggetto della notifica
- ALERT_DESC: il corpo della notifica
- ALERT_ACTION: un terzo campo da usare, ad esempio, per implementare una azione utente (tra poco vedremo come fare)
Prima di tutto completiamo la configurazione del Classic Report
- Seleziona il Classic Report e vai alle proprietà della Region.
- Inserisci la query seguente, dove ho aggiunto alcune colonne che
select id,
title,
description,
creation_date,
archived,
type,
title alert_title,
description alert_desc,
'<button type="button" title="Archivia Alert" aria-label="Archivia Alert" class="t-Button t-Button--noLabel t-Button--icon t-Button--hot t-Button--link archiviaAlert" alert-id="'||id||'"><span aria-hidden="true" class="t-Icon fa fa-remove"></span></button>' alert_action,
type alert_type
from s_alerts
- Seleziona la colonna ALERT_ACTION

- Vai alla proprietà Security > Escape Special Characters e verifica che non sia selezionata

- Esegui la Preview. Questo è il risultato, decisamente molto più accattivante.

Come trovare i tag di un template HTML in APEX
Fino a qui tutto bello. Rimane un punto importante da capire.
Come posso capire quali tag il template HTML si aspetta di ricevere?
Non preoccuparti, non è nulla di complicato e adesso te lo mostrerò.
- Clicca sul Report

- Vai al pannello delle proprietà e clicca su Attributes
- Vai alla sezione Appearance > Template

- Clicca sul bottone Go To Report Template

- Clicca su Edit Component

- Dovresti atterrare sulla pagina di gestione dello specifico template. Da qui puoi gestire tutti gli aspetti legati al Look&Feel del template HTML.
- Clicca su Row Templates per vedere il codice HTML che viene usato da APEX per formattare il singolo record. Qui puoi vedere i tag HTML

Come implementare una dynamic action nel report
Completiamo la configurazione del nostro report implementando una Dynamic Action che ci permetterà di archiviare, ossia nascondere, le notifiche che non vogliamo più vedere.
Per far questo abbiamo aggiunto nella query SQL la colonna ALERT_ACTION che restituisce il markup HTML di un pulsante APEX che ho costruito usando il Button Builder di Oracle APEX

L’unico punto di attenzione sta nel fatto che devi aggiungere due non standard al codice HTML
- aggiungi il valore archiviaAlert alla proprietà class
- aggiungi l’attributo alert-id che sarà valorizzato dinamicamente in funzione del valore restituito dalla colonna ID
Questi due attributi ci serviranno tra poco per implementare nel modo corretto la dynamic action.
Questo è il codice HTML completo del bottone implementato
<button type="button" title="Archivia Alert" aria-label="Archivia Alert" class="t-Button t-Button--noLabel t-Button--icon t-Button--hot t-Button--link archiviaAlert" alert-id="'||id||'"><span aria-hidden="true" class="t-Icon fa fa-remove"></span></button>
Il risultato è lo stesso che abbiamo visto poco fa.

Ora possiamo implementare l’azione dinamica.
- Dall’App Builder, clicca su Dynamic Action

- Clicca con il pulsante destro su Click e seleziona Create Dynamic Action

- Crea una nuova Azione Dinamica con queste proprietà
- Name: archiveAlert
- Event: Click
- Selection Type: jQuery Selector
- jQuery Selector: .archiveAlert(deve essere uguale al valore della proprietà class del pulsante che deve essere intercettato)

- Nella sezione Advanced imposta la proprietà Event Scope su Dynamic

- Arrivato a questo punto puoi implementare la tua Dynamic Action per far si che faccia quello che preferisci. Ad esempio potresti eseguire del codice PL-SQL per aggiornarne lo stato del record sul database.
- Per semplicità, mi limiterò a farti vedere come eseguire un semplice codice JavaScript che stampa un alert,

- Aggiungi una nuova nuova Action di tipo Execute JavaScript Code
- Action: Execute JavaScript Code
- Code: JavaScript Expression
- JavaScript Expression: inserisci lo script JS seguente.
alert("Hai cliccato sul record con ID=" + this.triggeringElement.getAttribute('alert-id'));
- Esegui la Preview e premi sul bottone Archivia Alert. Se hai fatto tutto correttamente dovresti ottenere questo risultato.

Badge List Template
I badges vengono generalmente utilizzati quando vuoi costruire un cruscotto che enfatizzi o metta in evidenza una particolare informazione.
I badge sono uno dei migliori metodi per attrarre l’attenzione degli utenti su uno numero specifico come (il numero di task da eseguire, un KPI, ecc,…).
Un esempio molto calzante potrebbe essere quello di una applicazione di Customer Care (gestione delle Richieste di Assistenza) dove l’operatore che si collega può vedere in una dashboard in Home Page quante richieste nuove sono da assegnare, quante invece sono già state prese in carico e così via.
Ecco un esempio:

Vediamo insieme come costruire questo cruscotto.
A tal proposito useremo una query dummy, che estrae dei valori fittizi mentre nella realtà tu dovrai usare dei dati reali, letti dalle tabelle della tua applicazione.
La cosa importante da tenere a mente è che dovresti definire una query che restituisce un solo record, qualcosa di simile a questo
select 5 new_requests,
6 assigned_to_me,
30 assigned_to_my_groups,
8 on_track,
2 at_risk,
3 overdue
from dual
Ora che abbiamo preparato la query da usare per estrarre le informazioni, possiamo procedere con la configurazione del report.
- Accedi all’APP Builder e crea un nuovo Classic Report

- Inserisci nella sua definizione la query che vuoi utilizzare

- Vai in Attributes > Appearance e seleziona il template Badge List

- Clicca su Template Options

- Da questa maschera puoi configurare le seguenti opzioni:
- Apply Theme Colors: specifica se vuoi che APEX colori automaticamente ciascun badge usando la color palette definita nel Theme Roller
- Badge Size: specifica la dimensione in pixel del badge
- Style: specifica se il badge deve essere squadrato o circolare
- Layout: specifica il layout generale (numero di colonne/righe)

- Se esegui la preview dovresti ottenere il risultato atteso

Faccio solo alcune considerazioni di carattere generale.
La query che alimenta il Classic Report non deve contenere alcun placeholder o tag particolare: come hai potuto notare, la pagina dei risultati mostra direttamente gli ALIAS delle colonne della query.
Questo tipo di Template è indicato quando vuoi creare un cruscotto che mostra solo 1 record.
Se vuoi usare una query che estrae più righe non è il componente migliore da scegliere.
Un altro aspetto importante da tenere in considerazione sta nel fatto che questo tipo di layout non è interattivo.
Tornando all’esempio che abbiamo costruito sarebbe interessante far sì che l’utente se clicca sul singolo box (o badge) venga indirizzato ad una pagina di dettaglio dove si vedono tutti i record.
Per implementare questa funzionalità è più indicato l’utilizzo di una lista apex.
Cards Template
Il template Cards, di cui potete trovare qualche esempio qui, è molto utile per mostrare dati e informazioni raggruppate in schede o blocchi.
Un classico esempio di layout che puoi implementare utilizzando il template Cards è quello di un e-commerce oppure di uno store digitale.
Supponiamo, a tal proposito, di voler creare una applicazione dove puoi votare la tua pizza preferita!
- Prima di tutto preoccupiamoci di creare la base dati che la nostra applicazione Pizza Contest utilizzerà. A tal proposito esegui il seguente script SQL.
-- create tables
create table pizza_contest (
id number generated by default on null as identity
constraint pizza_contest_id_pk primary key,
name varchar2(150 char),
description varchar2(500 char),
image varchar2(500 char),
likes_counter number
)
;
-- load data
insert into pizza_contest (
id,
name,
description,
image,
likes_counter
) values (
1,
'Pizza Margherita',
'La pizza Margherita è la tipica pizza napoletana, condita con pomodoro, mozzarella (tradizionalmente è usato il fior di latte, non quella di bufala), basilico fresco, sale e olio; è, assieme alla pizza marinara, la più popolare pizza italiana.',
'#APP_IMAGES#pizza_margherita.jpeg',
39
);
insert into pizza_contest (
id,
name,
description,
image,
likes_counter
) values (
2,
'Pizza Boscaiola',
'La pizza Prosciutto e Funghi, chiamata anche Boscaiola, è una pizza con ingredienti di terra molto apprezzata dagli amanti dell''antica tradizione',
'#APP_IMAGES#pizza_boscaiola.jpeg',
68
);
insert into pizza_contest (
id,
name,
description,
image,
likes_counter
) values (
3,
'Pizza 4 Formaggi',
'Mozzarella, scamorza affumicata, Gorgonzola D.O.P. e Grana Padano: quando questi ingredienti si uniscono, il risultato è un trionfo di bontà filante.',
'#APP_IMAGES#pizza_quattro_formaggi.jpeg',
74
);
insert into pizza_contest (
id,
name,
description,
image,
likes_counter
) values (
4,
'Pizza Capricciosa',
'La pizza capricciosa è una pizza tipica della cucina italiana caratterizzata da un condimento di pomodoro, mozzarella, prosciutto cotto, funghi (di solito champignon), olive e carciofini.',
'#APP_IMAGES#pizza_capricciosa.jpeg',
86
);
insert into pizza_contest (
id,
name,
description,
image,
likes_counter
) values (
5,
'Pizza 4 Stagioni',
'La pizza alle quattro stagioni è una varietà di pizza che viene preparata con diversi condimenti, ripartiti in quattro diverse sezioni,ognuna delle quali richiama una delle quattro stagioni dell''anno.',
'#APP_IMAGES#pizza_quattro_stagioni.jpeg',
54
);
commit;
Per ciascuna card mostreremo il nome della pizza, una breve descrizione ed una foto.
Ci sono diversi modi per mostrare all’interno di un Classic Report una immagine, ad esempio recuperandola da una colonna BLOB definita nel database.
In questo esempio, invece, caricherò le immagini nell’area Static Application Files della mia applicazione
- Accedi all’APP Builder e vai in Shared Components
- Clicca su Static Application Files
- Clicca su Upload File

- Seleziona o trascina i file da caricare e premi Upload

- Una volta che i files sono stati caricati sul server puoi utilizzarli nella tua applicazione usando la stringa che vedi nella colonna Reference (es: #APP_IMAGES#pizza_margherita.jpeg)

Ora possiamo configurare il report.
- Accedi all’APP Builder e clicca sulla Pagina da modificare
- Aggiungi una nuova Region di tipo Classic Report

- Vai alle proprietà del Classic Report ed inserisci nella sua definizione la seguente query SQL
select id,
name,
description,
image,
likes_counter,
apex_util.prepare_url('#') card_link,
'<h2>'||name||'</h2>' card_subtitle,
description card_text,
'fa-heart' card_icon, /* this could be anything */
null card_color,
'<img src="' || image || '" width="350px"></img>' card_title,
'<button type="button" class="t-Button t-Button--icon t-Button--hot t-Button--link t-Button--iconLeft"><span aria-hidden="true" class="t-Icon t-Icon--left fa fa-heart"></span>'||likes_counter||'</button>' card_subtext
from pizza_contest
- Sempre nella scheda Region vai alla sezione Appearance e seleziona il Template che si chiama Cards Container

- Clicca su Attributes e seleziona il Template Cards

- Seleziona Template Options e configura le opzioni grafiche come preferisci. Ad esempio io ho impostato queste opzioni
- Display Subtitle: Yes
- Style: Featured
- Icons: No Icons
- Layout: 5 Columns
- Body Text: Auto
- Icon Shape: Circle
- Animation: Raise Card

- Seleziona le seguenti colonne del Classic Report
- CARD_SUBTITLE
- CARD_TITLE
- CARD_SUBTEXT
- Imposta per ciascuna di esse la proprietà Escape Special Characters a OFF

- Esegui la Preview dovresti ottenere questo risultato

- Per completare la configurazione del template puoi implementare una azione dinamica, come fatto per il template Alert che aggiorna il numero di likes ottenuto da ciascuna pizza.
Comments Template
Il template Comments quando vuoi implementare delle applicazioni che hanno una componente social oppure di messaggistica.
Al riguardo ho scritto un articolo che spiega nel dettaglio come Creare una applicazione mobile simile a Twitter in Oracle APEX: ti invito a leggerlo capire come configurare correttamente questo tipo di template

Media List Template
Il template Media List è utile per implementare delle liste come quelle usate, ad esempio, per elencare i contatti di una rubrica aziendale oppure un elenco di task o appuntamenti in una agenda digitale.
Puoi trovare un esempio di come usare un Classic Report configurato come Media List in questo articolo.

Timeline Template
Quando vuoi visualizzare una sequenza temporale di eventi puoi usare il template Timeline.
Un caso d’uso molto pratico è, ad esempio, nelle applicazioni di customer care dove normalmente il sistema traccia un log degli eventi che si sono verificati dal momento in cui la richiesta è stata creata.
Questi report sono molto utili all’operatore per avere un’idea veloce di tutte le iterazioni che ci sono state tra il customer care e il cliente.

Vediamo insieme con un esempio come implementare questo tipo di report.
- Esegui il seguente script per installare una tabella di DEMO da usare per l’esercizio
-- create tables
create table request_tracking (
id number generated by default on null as identity
constraint request_tracking_id_pk primary key,
event_user varchar2(100 char),
event_user_type varchar2(100 char),
event_date date,
event_type varchar2(100 char),
event_title varchar2(150 char),
event_description varchar2(250 char)
)
;
-- load data
insert into request_tracking (
id,
event_user,
event_user_type,
event_date,
event_type,
event_title,
event_description
) values (
1,
'Mario Rossi',
'END_CUSTOMER',
sysdate - 19,
'NEW_REQUEST',
'Nuova Richiesta',
'Nuova richiesta di supporto'
);
insert into request_tracking (
id,
event_user,
event_user_type,
event_date,
event_type,
event_title,
event_description
) values (
2,
'Daniele Trasarti',
'CUSTOMER_CARE',
sysdate - 19,
'IN_CHARGE',
'Presa in Carico',
'La richiesta è stata presa in carico'
);
insert into request_tracking (
id,
event_user,
event_user_type,
event_date,
event_type,
event_title,
event_description
) values (
3,
'Daniele Trasarti',
'CUSTOMER_CARE',
sysdate - 18,
'RAISE_PHONE',
'Chiamata telefonica',
'Effettuata una chiamata di chiarimenti con il cliente'
);
insert into request_tracking (
id,
event_user,
event_user_type,
event_date,
event_type,
event_title,
event_description
) values (
4,
'Daniele Trasarti',
'CUSTOMER_CARE',
sysdate - 17,
'WAITING_CUSTOMER_RESPONSE',
'In attesa di informazioni',
'Richieste informazioni aggiuntive al cliente, in attesa di risposta'
);
insert into request_tracking (
id,
event_user,
event_user_type,
event_date,
event_type,
event_title,
event_description
) values (
5,
'Mario Rossi',
'END_CUSTOMER',
sysdate - 17,
'CUSTOMER_RESPONSE_RECEIVED',
'Risposta ricevuta',
'Risposta dal cliente ricevuta'
);
insert into request_tracking (
id,
event_user,
event_user_type,
event_date,
event_type,
event_title,
event_description
) values (
6,
'Daniele Trasarti',
'CUSTOMER_CARE',
sysdate - 16,
'REQUEST_CLOSED',
'Richiesta completata',
'Richieste di supporto completata'
);
commit;
-- load data
- Accedi all’APP Builder e clicca sulla Pagina da modificare
- Aggiungi una nuova Region di tipo Classic Report
- Inserisci nella sua definizione la seguente query SQL
select id,
event_user user_name,
apex_string.get_initials(event_user) as user_avatar,
case event_type
when 'NEW_REQUEST' then 'fa fa-file-new'
when 'IN_CHARGE' then 'fa fa-file-search'
when 'RAISE_PHONE' then 'fa fa-phone'
when 'WAITING_CUSTOMER_RESPONSE' then 'fa fa-pause'
when 'CUSTOMER_RESPONSE_RECEIVED' then 'fa fa-file-arrow-down'
when 'REQUEST_CLOSED' then 'fa fa-check'
else null
end as event_icon,
case event_type
when 'NEW_REQUEST' then 'is-removed'
when 'REQUEST_CLOSED' then 'is-new'
else 'is-updated'
end as event_status,
event_user_type,
event_date event_date,
event_type,
event_title,
event_description event_desc,
apex_util.prepare_url('#') event_link
from request_tracking
order by id desc
- Vai in Attributes > Templates
- Seleziona il template type Timeline

- Vai nei Template Options e scegli l’opzione che preferisci tra un layout

- Esegui la Preview per controllare il risultato

Conclusioni
Bene, abbiamo visto insieme quante cose un singolo componente come il Classic Report è in grado di fare.
Notevole, vero?
Con questa semplice guida ho cercato non solo di spiegarti come configurare un report. Ho anche voluto darti qualche idea su come usarli al meglio.
Spero con tutto il cuore che ti sia d’aiuto.
Ricordati che puoi puoi vedere on-line tutti gli esempi che ho prodotto in questo tutorial collegandoti direttamente all’APP di APPIn5Minuti.
Comunque sia, non finisce qui.
Come forse avrai già intuito, Oracle APEX ti permette di creare nuovi template così che tu possa completamente personalizzare la formattazione ed il layout grafico della tua applicazione.
Ne parlerò in un prossimo articolo.
Per il momento ti saluto di cuore e ti invito a seguirmi sui social e ad iscriverti alla pagina LinkedIn ufficiale di APPin5Minuti.
Un abbraccio
Daniele
Lascia un commento