Net.Data: Guida alla gestione e alla programmazione per OS/400

Blocchi Report

Utilizzare una struttura di linguaggio del blocco REPORT per formattare e visualizzare i dati di emissione e da un blocco FUNCTION. Questa emissione è costituita in genere da dati di tabella, sebbene sia possibile specificare qualsiasi combinazione valida di tag HTML, riferimenti di variabili macro e chiamate di funzione. Sul blocco REPORT è anche possibile, se si desidera, specificare un nome tabella. Se non ne viene specificato alcuno, Net.Data utilizza i dati della prima tabella di emissione nell'elenco dei parametri del blocco FUNCTION. Se non viene specificata alcuna tabella su un blocco FUNCTION, Net.Data utilizza i dati della tabella predefinita.

Il blocco REPORT contiene tre parti, ognuna delle quali facoltativa:

Esempio:

%REPORT{
<H2>Query Results</H2>
<P>Select a name for details.
<TABLE BORDER=1>
<TR><TD>Name</TD><TD>Location</TD>
 %ROW{
<TR>
<TD>
<a href="/cgi-bin/db2www/name.mac/details?name=$(V1)&location;=$(V2)">$(V1)</a></TD>
<TD>$(V2)</TD>
%}
</TABLE>
%}

Indicazioni sui blocchi REPORT

Seguire queste indicazioni per creare i blocchi REPORT:

Esempio: personalizzazione di un prospetto

L'esempio che segue indica come è possibile personalizzare i formati di prospetto utilizzando variabili speciali e tag HTML. Esso visualizza i nomi, numeri di telefono e fax dalla tabella CustomerTbl:

%FUNCTION(DTW_SQL) custlist() {
     SELECT Name, Phone, Fax FROM CustomerTbl
%REPORT{
<I>Phone Query Results:</I>
<BR>
=====================
<BR>
 %ROW{
   Name: <B>$(V1)</B>
<BR>
Phone: $(V2)
<BR>
Fax: $(V3)
<BR>
------------------------------
<BR>
   %}
   Total records retrieved: $(NUM_ROWS)
   %}
   %}

Il prospetto che ne risulta appare simile al seguente sul browser Web:

Phone Query Results:
====================
Name: Doen, David
Phone: 422-245-1293
Fax: 422-245-7383
------------------------------
Name: Ramirez, Paolo
Phone: 955-768-3489
Fax: 955-768-3974
------------------------------
Name: Wu, Jianli
Phone: 525-472-1234
Fax: 525-472-1234
------------------------------
Total records retrieved: 3

Net.Data genera il prospetto:

  1. Stampando Phone Query Results: una volta all'inizio del prospetto. Questo testo, insieme alla linea separatore, è la parte di intestazione del blocco REPORT.

  2. Fornendo le variabili V1, V2 e V3 i valori di nome, telefono e fax rispettivamente per ogni riga quando richiamate. Questo testo costituisce la parte di piè di pagina del blocco REPORT.

  3. Tracciando una linea dopo ogni riga richiamata per facilitare la lettura.

  4. Stampando la stringa Total records retrieved: e il valore NUM_ROWS una volta alla fine del prospetto. Questo testo costituisce la parte di piè di pagina del blocco REPORT.

Blocchi REPORT multipli

E' possibile specificare più blocchi REPORT all'interno di un singolo blocco FUNCTION o MACRO FUNCTION per generare più blocchi con una chiamata di funzione.

Generalmente, si utilizzano blocchi REPORT multipli con l'ambiente di linguaggio DTW_SQL con una funzione che richiama una procedura memorizzata, che restituisce più serie di risultati (consultare Procedure memorizzate). Tuttavia è possibile utilizzare i blocchi REPORT multipli in tutti gli ambienti di linguaggio per generare prospetti multipli.

Per utilizzare blocchi REPORT multipli, è necessario trasferire una variabile di tabella di Net.Data nell'elenco del parametro della funzione. Se nell'elenco dei parametri vengono trasferiti più serie di risultati del numero dei blocchi report specificati, e se è stato specificato DTW_DEFAULT_REPORT = "MULTIPLE" i prospetti predefiniti vengono generati per ogni tabella non associata ad un blocco report. Se non vengono specificati blocchi report e se è impostato DTW_DEFAULT_REPORT = "YES", verrà generato un solo prospetto predefinito. Notare che solo per l'ambiente di linguaggio SQL, un valore YES per DTW_DEFAULT_REPORT equivale al valore MULTIPLE.

Esempi

Gli esempi che seguono illustrano i modi in cui è possibile utilizzare blocchi report multipli.

Per visualizzare prospetti multipli utilizzando la formattazione del prospetto predefinito:

Esempio 1: ambiente di linguaggio DTW_SQL

%define DTW_DEFAULT_REPORT = "MULTIPLE"
%function (dtw_sql) myStoredProc (OUT table1, table2) {
     CALL myproc   %}

In questo esempio, la procedura memorizzata myproc restituisce due serie di risultati, posizionati in table1 e table2. Poichè non sono specificati blocchi REPORT, i prospetti predefiniti vengono visualizzati per entrambe le tabelle, table1 prima e table2 poi.

Esempio 2: ambiente di linguaggio DTW_REXX

%define DTW_DEFAULT_REPORT = "YES"
%function (dtw_rexx) multReport (INOUT table1, table2) {
     SAY 'Generating multiple default reports...<BR>'   
%}

In questo esempio, vengono trasferite due tabelle nella funzione REXX multReport. Poichè viene specificato DTW_DEFAULT_REPORT="YES", Net.Data visualizza un prospetto predefinito solo per la prima tabella.

Esempio 3: blocco MACRO_FUNCTION

%define DTW_DEFAULT_REPORT = "MULTIPLE"
%macro_function multReport (INOUT tablename1, tablename2) { 
%}

In questo esempio, vengono trasferite due tabelle in MACRO_FUNCTION multReport. Di nuovo Net.Data visualizza i prospetti predefiniti per le due tabelle nell'ordine in cui sono visualizzate nell'elenco del blocco dei parametri MACRO FUNCTION, table1 prima e table2 poi.

Per visualizzare più prospetti specificando i blocchi REPORT per l'elaborazione video:

Esempio 1: Blocchi REPORT definiti

%function(dtw_sql) myStoredProc (OUT table1, table2) {
  CALL myproc
 
   %REPORT(table2) { 
     ...    
      %row {  ....   %}   
     ...
   %}
   
   %REPORT(table1) {     
     ...
      %row {  ....   %} 
     ...
   %}
%}

In questo esempio, sono stati specificati i blocchi REPORT per entrambe le tabelle trasferite sull'elenco dei parametri del blocco FUNCTION. Le tabelle vengono visualizzate nell'ordine specificato sui blocchi REPORT, table2 prima, table1 dopo. Specificando un nome tabella sul blocco REPORT, è possibile controllare l'ordine in cui i prospetti vengono visualizzati.

Esempio 2: Blocchi REPORT non definiti

%function(dtw_sql) myStoredProc (OUT table1, table2) {
  CALL myproc   
   
%REPORT {
     ...    
      %row {  ....   %}  
     ...
   %} 
%REPORT {    
     ...    
      %row {  ....   %}     
     ...  
   %}  
%}

In questo esempio, sono stati specificati i blocchi REPORT per entrambe le tabelle trasferite sull'elenco dei parametri del blocco FUNCTION. Poichè non sono stati specificati nomi tabella nei blocchi REPORT, i prospetti vengono visualizzati per le due tabelle nell'ordine in cui sono visualizzate nell'elenco del blocco dei parametri FUNCTION, table1 prima e table2 dopo.

Per visualizzare prospetti multipli utilizzando una combinazione di prospetti predefiniti e blocchi REPORT:

Esempio: Una combinazione di prospetti predefiniti e blocchi REPORT

%define DTW_DEFAULT_REPORT = "MULTIPLE"
%function(dtw_system) editTables (INOUT table1, table2, table3) {  
  %EXEC{ /qsys.lib/mylib.lib/mypgm.pgm %}
  %REPORT(table2) {    
    ...      
      %row {  ....   %}    
    ...   
  %}    
%}

In questo esempio, viene specificato un blocco REPORT e poichè esso specifica un nome tabella table2, questa tabella viene utilizzata per visualizzare il proprio prospetto. Poichè sono stati specificati più tabelle che blocchi REPORT trasferiti nell'elenco di parametri FUNCTION, i prospetti predefiniti vengono visualizzati per le rimanenti tabelle nell'ordine in cui sono visualizzate nell'elenco del blocco dei parametri FUNCTION, table1 prima e poi un prospetto predefinito per table3.

Indicazioni e limiti per i blocchi REPORT multipli

Utilizzare le seguenti indicazioni e limiti quando si specificano blocchi REPORT multipli in un blocco FUNCTION e MACRO_FUNCTION.

Indicazioni:

Limiti:


[ Inizio pagina | Pagina precedente | Pagina successiva | Indice | Indice analitico ]