Perspective Datatable
La Perspective Datatable è una tabella dati tipizzata con funzioni di calcolo: le colonne hanno tipi di valore fissi, le celle accettano solo valori conformi al tipo, le righe di aggregati calcolano in tempo reale e le colonne calcolate valutano espressioni per riga. La modifica avviene direttamente nella griglia renderizzata; tutti i dati restano come testo semplice nel documento.
Delimitazione: la Perspective Table punta a contenuti testuali ricchi (celle di blocco multiriga, span, evidenziazione di stato). La Datatable punta a dati strutturati e calcolabili: piccoli insiemi come spese, registrazione dei tempi o inventari. La tabella dati fa parte delle estensioni interne e può essere disattivata lì; disattivato, il blocco resta un normale blocco di codice.
Struttura del blocco
Un blocco di codice con il tag di lingua perspective-datatable contiene direttive di intestazione e righe di dati:
```perspective-datatable
columns: Nome:text, Data:date, Importo:number(2), Fatto:boolean
aggregate: Importo:sum+avg, Fatto:count
| Anna | 2026-07-08 | 12.50 | x |
| Bert | 2026-06-30 | -3 | |
```
Renderizzata, la griglia appare con riga di intestazione, simboli di tipo e riga di aggregati:
| Nometext | Datadate | Importonumber | Fattoboolean | |
|---|---|---|---|---|
| Anna | 2026-07-08 | 12.50 | ||
| Bert | 2026-06-30 | -3.00 | ||
| sum9.50avg4.75 | count1 |
columns:(obbligatoria) dichiara le colonne comeNome:tipo, separate da virgole. I nomi di colonna possono contenere spazi.aggregate:(facoltativa) assegna funzioni di aggregato alle colonne; più funzioni per colonna si combinano con+.types:(facoltativo) commuta l’indicazione di tipo sotto le intestazioni:shownohidden. Senza questa riga compare.- Le righe di dati usano la notazione a barre (
| … | … |), una riga per record. Un|nel testo si scrive\|.
Un’intestazione propria per colonna
L’identificatore della colonna funge anche da intestazione. Deve restare breve e senza separatori, perché aggregati e colonne calcolate lo usano come nome. Per un’intestazione leggibile, va scritta tra virgolette doppie dopo l’identificatore:
columns: Importo:number(2), Totale "Totale (lordo, in €)":number(2) = Importo * 2
Il testo di visualizzazione può portare qualsiasi carattere, compresi spazi, virgole, due punti e segni di uguale; una virgoletta al suo interno si scrive due volte. La colonna resta indirizzata solo tramite il suo identificatore, che rimane accessibile come suggerimento sull’intestazione.
Tipi di colonna e formati
| Tipo | Forma di memorizzazione | Esempio |
|---|---|---|
text |
testo libero | Anna |
number |
decimale con punto | 12.5, -3 |
date |
AAAA-MM-GG |
2026-07-08 |
time |
HH:MM |
09:30 |
boolean |
x (vero) o vuoto (falso) |
x |
number conosce un formato di visualizzazione facoltativo: Importo:number(2) mostra due decimali. Visualizzazione e forma di memorizzazione restano volutamente leggibili allo stesso modo (nessuna riformattazione regionale); le celle vuote sono valide per tutti i tipi. Un valore non conforme al tipo di colonna viene contrassegnato come cella di errore: il testo viene conservato, un suggerimento spiega il formato atteso e il valore non entra negli aggregati.
Aggregati
Funzioni disponibili per tipo di colonna:
| Funzione | Significato | Consentita su |
|---|---|---|
sum |
somma | number |
avg |
media (arrotondata al formato della colonna) | number |
min / max |
valore minimo/massimo | number, date, time |
count |
numero di celle non vuote (per boolean: numero di quelle vere) |
tutti i tipi |
Le celle vuote o in errore sono escluse. La riga di aggregati appare sotto i dati e ricalcola a ogni modifica; con vista filtrata calcola sulle righe visibili.
Colonne calcolate
Una colonna con = espressione dopo il tipo calcola il proprio valore per riga a partire da altre colonne:
| Articolotext | Prezzonumber | Qtanumber | Totalenumber | |
|---|---|---|---|---|
| Penna | 1.20 | 10 | 12.00 | |
| Blocco | 3.50 | 4 | 14.00 | |
| sum26.00 |
- Il linguaggio delle espressioni è lo stesso della Query Perspective: aritmetica, confronti,
choice(…),default(…), funzioni di testo e altro. - I nomi di colonna nell’espressione si riferiscono ai valori della riga corrispondente; anche altre colonne calcolate sono utilizzabili in qualsiasi ordine di dichiarazione (la valutazione risolve le dipendenze). I riferimenti circolari vengono segnalati come errori di struttura.
- Il risultato deve corrispondere al tipo di colonna dichiarato, altrimenti la cella mostra un errore.
- I valori calcolati non vengono mai salvati nel sorgente: sono sempre ricalcolati e quindi non hanno una cella di dati nelle righe a barre. Gli aggregati sulle colonne calcolate calcolano sui valori calcolati.
Modificare nella griglia
Nella vista divisa e in modalità live la griglia è modificabile direttamente; la vista di lettura e le pagine del manuale la mostrano in sola lettura. Ogni conferma riscrive il blocco di codice nel sorgente: il documento risulta non salvato come di consueto e annulla/ripristina funzionano normalmente.
- Modificare una cella: un clic sulla cella (o
Invio/F2con la cella a fuoco) apre un campo di immissione adeguato al tipo.Invioo la perdita del fuoco conferma,Escannulla,Tab/Maiusc+Tabconferma e passa alla cella successiva o precedente. - Vincolo di tipo: un valore non conforme al tipo di colonna viene rifiutato (avviso nella barra di stato); la cella resta aperta per la correzione.
- Boolean: un clic sulla cella (o la barra spaziatrice) commuta direttamente il valore.
- Righe: il pulsante sotto la tabella aggiunge una riga alla fine dei dati; il simbolo × a inizio riga la elimina.
- Le celle delle colonne calcolate non sono modificabili; le immissioni nelle loro colonne di origine le aggiornano immediatamente.
- Una tabella con errori di struttura (vedi sotto) non è modificabile nella griglia finché l’errore non viene corretto nel sorgente.
Ordinare e filtrare (vista)
Ordinamento e filtro agiscono solo sulla vista: il sorgente resta invariato, nulla viene salvato né esportato; alla riapertura del file la vista è neutra.
- Ordinare: un clic sull’intestazione di colonna ordina in modo conforme al tipo in ordine crescente, un secondo clic decrescente, un terzo rimuove l’ordinamento. I valori mancanti finiscono in fondo.
- Filtrare: il commutatore sul bordo destro della tabella mostra la riga dei filtri: le colonne di testo filtrano per ricerca di contenuto, le colonne booleane con un commutatore a tre stati (tutti/sì/no). Una nota mostra «n di m righe»; la riga di aggregati calcola sulle righe visibili.
- La modifica resta possibile in vista ordinata o filtrata e raggiunge sempre la riga corretta del sorgente.
Errori
- Gli errori di struttura (tipo sconosciuto, nomi di colonna duplicati, numero di celle divergente, espressioni non valide) appaiono come elenco sopra la griglia con il numero di riga nel blocco.
- Gli errori di cella (valore non conforme al tipo) contrassegnano solo la cella interessata; il testo viene conservato.
Esportazione
L’esportazione portable e l’esportazione PDF producono la tabella come tabella statica nell’ordine del documento: con tutte le righe, i valori calcolati delle colonne calcolate e la riga di aggregati, senza interattività.
Limiti
A partire da 1000 righe di dati la griglia mostra solo l’area di intestazione e gli aggregati con una nota; gli aggregati continuano a calcolare su tutte le righe. Gli insiemi di dati molto grandi appartengono a uno strumento dati dedicato.