Query > coldefs

Il tag coldefs ha il compito di definire le colonne di output della query e, per ogni campo selezionato dalla clausola select provvede a definire gli aspetti di layout.

Un esempio di coldefs è il seguente:

 <coldefs>
  <clicogn>
    <width>90</width>
    <caption>Cognome</caption>
  </clicogn>
  <clinom>
    <width>80</width>
    <caption>Nome</caption>   
  </clinom>
  <clidnas>
    <width>60</width>
    <caption>D.Nas.</caption>
    <dateformat>d/m/Y</dateformat>
  </clidnas>
</coldefs>

il quale fa riferimento a tre campi estratti dalla query:

  • campo clicogn che viene rappresentato con una larghezza di 90 punti e un’intestazione di colonna “Cognome”;
  • campo clinom che viene rappresentato con una larghezza di 80 punti e un’intestazione di colonna “Nome”;
  • campo clidnas che viene rappresentato con una larghezza di 60 punti, nel formato d/m/Y (ad es. 03/09/1970 per il 3 settembre 1970) e con un’intestazione di colonna “D.Nas.” .

All’interno di ciascun campo i tag disponibili sono i seguenti:

<width>larghezza in punti della colonna</width>
<caption>etichetta che titola la colonna</caption>
<visible>1|0 ad indicare colonna visibile/non visibile<visible>
<align>left|center|right</align>
<numberformat>il formato da applicare (per dati numerici) nella forma d/c/s</numberformat>
<dateformat>il formato da applicare (per date) secondo la sintassi del comando date_format() di PHP</dateformat>
<summarycaption>un'etichetta per l'eventuale valore di sommario</summarycaption>
<summaryfunction>la funzione (SUM|AVG|COUNT|MAX|MIN|...) da utilizzare per la rappresentazione del dato di sommario</summaryfunction>
<summaryformula>la formula (sintassi SQL) da utilizzare per il dato di sommario</summaryformula>
<datatype>il tipo di dati (int|double|date|...)</datatype>
<excelformula>la eventuale formula da inserire nell'esportazione in Excel</excelformula>

Attributi di stile e rappresentazione

Per regolare il modo con cui ciascuna colonna appare (o non appare) nel foglio dati della query si agirà su:

  • width per determinarne la larghezza in punti;
  • caption per definire il titolo che sta sopra alla colonna;
  • visible per determinare se la colonna sia o meno visibile (le colonne non visibili sono comunque esportate in Excel);
  • align per determinare come il dato debba essere allineato orizzontalmente;
  • numberformat per determinare il formato di dati numerici; il formato è qui espresso secondo la sintassi: d (numero di decimali) seguito dal segno per la virgola e quindi quello del separatore delle migliaia, tutti separati da barre; un esempio tipico è 2/,/. che è utilizzato per la rappresentazione con due cifre decimali, virgola a separare i decimali e punto a separare le migliaia;
  • dateformat per determinare il formato delle date; il formato qui espresso segue la sintassi della funzione date_format() di PHP.

Funzioni di sommario

Ogni colonna della query può presentare un sommario. Tale sommario appare con una propria etichetta così come definita nel tag summarycaption seguito dal numero di sommario che può essere calcolato mediante:

  • summaryfunction una canonica funzione di raggruppamento (SUM, AVG, MIN, MAX, COUNT, ecc.) del linguaggio SQL;
  • summaryformula una vera e propria espressione SQL qualora la canonica dunzione di raggruppamento non fosse sufficiente. Ad esempio in una query che elenca tutte le fatture emesse, volendo rappresentare il numero di clienti serviti, il count “canonico” conterebbe le fatture mentre con count(distinct docventes.idcliente) si ottiene il risultato desiderato.

Interazione con Excel

L’esportazione del risultato della query in Excel è una funzione standard. In questa sede è possibile operare alcune parametrizzazioni per ottenere un’esportazione ancora più performante. In particolare, se si definisce il datatype della colonna, l’esportazione in Excel considererà esattamente quel tipo di dati evitando inopportune trasformazioni di dati a cura di Excel (es. i numeri di partita IVA che tipicamente perdono gli zeri iniziali se trasferiti a Excel, date che vengono trasformate in numeri, ecc.). Inoltre è possibile definire una formula da inserire in Excel in luogo del dato presente nel risultato della query. Supponiamo, ad esempio, di aver estratto i dati qta, prunit e importo nel quale il terzo sia sempre calcolato come qta*prunit e i primi due siano estratti, rispettivamente, nella terza e quarta colonna della query. L’esportazione in Excel riporterebbe tutti i dati correttamente; tuttavia cambiando qualche quantità e/o qualche prezzo nel file di Excel non si otterrebbe alcun ricalcolo del relativo importo. Impostare nella colonna importo della query di ProOne il seguente tag:

<excelformula>C?r*D?r</excelformula>

fa sì che, nella casella di Excel relativa all’importo (ad esempio sulla sesta riga), sia riportata la formula:

=C6*D6

che produce il risultato desiderato.