Interruzione delle righe. Una nuova aggiunta alle tabelle di 4D Write Pro!

Tradotto automaticamente da Deepl

Le tabelle dei documenti di 4D Write Pro sono state notevolmente migliorate nelle ultime versioni. In effetti, il team di 4D ha investito così tanto nel rendere 4D Write Pro un potente generatore di documenti basati su modelli, da aver già rilasciato innovazioni come intestazioni, fonti di dati, righe di riporto… alcune potenti funzionalità che mi vengono in mente.

Ora, con 4D v20, è il turno delle righe di interruzione a fare il loro ingresso!

Signore e signori, rullo di tamburi, prego!

La funzione in azione

L’obiettivo da raggiungere

Qualunque sia la vostra attività, avete sicuramente bisogno di creare elenchi.

Questi elenchi sono ordinati in base ai vostri criteri e di solito è necessario creare gruppi per ognuno di questi gruppi per ottenere totali o statistiche. Questa è la nuova funzione di 4D Write Pro che vi offre!

Quando e come? Ecco un esempio concreto

Quando una tabella è alimentata da un’origine dati ordinata, l’obiettivo è inserire una riga di interruzione quando cambia il valore corrispondente al criterio di ordinamento.

Immaginate di conoscere persone di diversi continenti, paesi e città.

Si vuole creare un elenco di queste persone raggruppate per continente, paese e città.

blank

Oppure si vuole creare un report basato sulla relazione con l’azienda e creare un elenco di dipendenti raggruppati per azienda in ogni continente.

blank

In entrambi i casi, è necessario assicurarsi che la selezione sia ordinata in base a questi tre criteri.

Caso 1:

ds.people.all().orderBy("continent asc, country asc, city asc")

Caso 2:

ds.People.all().orderBy("worksFor.name asc, continent asc)

Per ogni criterio di ordinamento, una riga di interruzione

Una volta associata la fonte di dati alla tabella, le persone saranno visualizzate nella “riga ripetuta” e nell’ordine desiderato. Vediamo come raggrupparle in base ai criteri di ordinamento.

Utilizzo dell’interfaccia

Nel menu delle righe sono ora disponibili nuove voci. Sono contestuali e appaiono solo se il cursore si trova all’interno di una tabella (e sotto l’eventuale intestazione).

blank

Ad esempio, la formula può essere basata sul nome di un attributo (This.item.country) o su un percorso di attributi correlati (es: This.item.worksFor.name) o su qualsiasi altra formula (Substring(This.item.name;1;1)).

Una volta impostato l’attributo di interruzione… si può vedere la sua formula passando il mouse sul simbolo di interruzione “S” (come in Ordinamento).

blank

Sopra o sotto BreakS?

Le righe di interruzione possono essere sopra o sotto la riga ripetuta (riempita dalla fonte di dati della tabella).

Le interruzioni saranno rese ogni volta che il valore restituito dalla formula dell’interruzione cambia, quindi assicuratevi che la posizione delle interruzioni corrisponda ai criteri di ordinamento della fonte di dati.

blank

Un nuovo attributo di riga

L’attributo wk break formula contiene la formula il cui risultato determinerà la visualizzazione della riga di interruzione. La sola presenza di questo attributo fa sì che una riga sia considerata una riga di interruzione. Si possono definire tutte le righe di interruzione necessarie, ad esempio Formula(This.item.city) per il livello di interruzione più basso e Formula(This .item.continent) per il livello più alto.

WP SET ATTRIBUTES($row; wk break formula; Formula(This.item.country))
WP RESET ATTRIBUTES($row; wk break formula)

Tenere presente che:

  • Una riga di interruzione deve trovarsi appena sopra o sotto una riga ripetuta o un’altra riga di interruzione se ci sono più livelli. In caso contrario, non verranno prese in considerazione.
  • Il numero di livelli è limitato a cinque. Se si aggiunge un sesto livello, non viene generato alcun errore, ma non viene reso.
  • L’inserimento di righe di interruzione nella tabella non ordina la fonte di dati. L’origine dati deve essere ordinata in modo indipendente.

Questo è tutto!

Contenuto delle righe di interruzione

Oltre al testo, le righe di interruzione possono contenere due tipi di formule.

  • La prima possibilità è quella di utilizzare gli elementi presenti – o che potrebbero essere presenti – nelle righe ripetute (ad esempio: This.item.continent).
    Il valore restituito sarà l’ultimo valore utilizzato prima dell ‘interruzione (o il primo valore utilizzato se la riga di interruzione precede le righe ripetute).
  • La seconda possibilità è nuova: la proprietà breakItems può essere utilizzata solo nel contesto delle interruzioni (Es: This.breakItems).
    Il breakItems è un sottoinsieme dei dati di origine della tabella che corrisponde esattamente alle righe ripetute della riga di interruzione interessata.

    • Per usare l’esempio delle interruzioni multiple per continente-paese-città, quando il contenuto cambia, il sottoinsieme corrisponde alle persone del continente (prima della modifica), e questo sia che la riga di interruzione sia posizionata prima o dopo la riga ripetuta. Questo sottoinsieme può essere utilizzato per eseguire calcoli come sum(“salary”), average(“salary”), ecc.

blank

Infine, specifichiamo che questi sottoinsiemi saranno dello stesso tipo dei dati di origine della tabella, cioè una selezione di entità o una collezione.

Ulteriori informazioni

Ulteriori informazioni su questa funzione sono disponibili nella documentazione.

Conclusione

Questa nuova funzione dimostra ancora una volta la potenza di 4D Write Pro per quanto riguarda la creazione automatica di documenti.

Con le interruzioni si compie un ulteriore passo avanti. Fateci sapere cosa ne pensate del Forum 4D.

Roland Lannuzel
- Product Owner ed esperto di 4D - Dopo aver studiato elettronica, Roland è passato all'IT industriale come sviluppatore e consulente, realizzando soluzioni per i clienti con una varietà di database e tecnologie. Alla fine degli anni '80 si è innamorato di 4D e lo ha utilizzato per scrivere applicazioni aziendali che includono sistemi di contabilità, fatturazione e posta elettronica. Entrato a far parte dell'azienda nel 1997, Roland ha dato il suo prezioso contributo progettando specifiche, strumenti di test e demo, oltre a formare e parlare alla comunità 4D in occasione di numerose conferenze. Continua a plasmare attivamente il futuro di 4D definendo nuove funzionalità e strumenti di sviluppo di database.