Scopo
Questa funzione assegna ad un campo una funzione di aggregazione; questa funzione verrà calcolata sui valori del campo appartenenti ad ogni gruppo e il risultato verrà mostrato nell'intestazione del gruppo in corrispondenza del campo.
Sintassi
Pannello.SetGroupFunction(Campo, Funzione, Etichetta)
Argomenti
| Campo | Campo di cui calcolare la funzione di aggregazione e in cui mostrare il risultato. |
| Funzione | Funzione di aggregazione da mostrare, contenuta nella lista valori GroupingFunctions. |
| Etichetta | Etichetta che verrà mostrata prima del risultato della funzione di aggregazione. Se non specificata verrà utilizzata una etichetta predefinita in base all'aggregazione scelta. |
Esempio di codice
// *********************************************************************
// Evento notificato alla videata al momento del caricamento in memoria.
// *********************************************************************
event Ordini.Load()
{
// Il pannello può ordinare e mostrare i gruppi
Ordini.canGroup = true
Ordini.showGroups = true
//
// Imposto i campi su cui ordinare
Ordini.addtoGroupList(Ordini.Idcliente.me(), true, Sfondogruppi)
Ordini.addtoGroupList(Ordini.DataOrdine.me(), true, Sfondogruppi)
//
// Imposto gli intervalli sulle date
Ordini.addGroupInterval(Ordini.DataOrdine.me(), #1/1/1970#, #31/12/1979#
, "Anni 70")
Ordini.addGroupInterval(Ordini.DataOrdine.me(), #1/1/1980#, #31/12/1989#
, "Anni 80")
Ordini.addGroupInterval(Ordini.DataOrdine.me(), #1/1/1990#, #31/12/1999#
, "Anni 90")
//
// Imposto la funzione di aggregazione
Ordini.setGroupFunction(Ordini.PaeseDestinatario.me(), Count, ...)
//
// Faccio caricare i dati
Ordini.findData()
//
// Aggiorno i raggruppamenti
Ordini.refreshGrouping()
//
// Mi memorizzo la posizione corrente
int rw = Ordini.activeRow
int ps = Ordini.actualPosition
//
// Posiziono il pannello sul primo ordine di Oggi
Ordini.findRecord(Ordini.DataOrdine.me(), today(), ...)
//
// Se è cambiata la posizione corrente significa che ho trovato il valore:
// espando il gruppo che lo contiene
if (rw != Ordini.activeRow || ps != Ordini.actualPosition)
{
Ordini.expandGroup(SelectedRow, true)
}
}
// Evento notificato alla videata al momento del caricamento in memoria.
// *********************************************************************
event Ordini.Load()
{
// Il pannello può ordinare e mostrare i gruppi
Ordini.canGroup = true
Ordini.showGroups = true
//
// Imposto i campi su cui ordinare
Ordini.addtoGroupList(Ordini.Idcliente.me(), true, Sfondogruppi)
Ordini.addtoGroupList(Ordini.DataOrdine.me(), true, Sfondogruppi)
//
// Imposto gli intervalli sulle date
Ordini.addGroupInterval(Ordini.DataOrdine.me(), #1/1/1970#, #31/12/1979#
, "Anni 70")
Ordini.addGroupInterval(Ordini.DataOrdine.me(), #1/1/1980#, #31/12/1989#
, "Anni 80")
Ordini.addGroupInterval(Ordini.DataOrdine.me(), #1/1/1990#, #31/12/1999#
, "Anni 90")
//
// Imposto la funzione di aggregazione
Ordini.setGroupFunction(Ordini.PaeseDestinatario.me(), Count, ...)
//
// Faccio caricare i dati
Ordini.findData()
//
// Aggiorno i raggruppamenti
Ordini.refreshGrouping()
//
// Mi memorizzo la posizione corrente
int rw = Ordini.activeRow
int ps = Ordini.actualPosition
//
// Posiziono il pannello sul primo ordine di Oggi
Ordini.findRecord(Ordini.DataOrdine.me(), today(), ...)
//
// Se è cambiata la posizione corrente significa che ho trovato il valore:
// espando il gruppo che lo contiene
if (rw != Ordini.activeRow || ps != Ordini.actualPosition)
{
Ordini.expandGroup(SelectedRow, true)
}
}
- I raggruppamenti sono disponibili solo in RD3.
- Se l'etichetta non è definita verrà utilizzata quella predefinita per il tipo di aggregazione scelto.
- E' sufficiente assegnare come etichetta la stringa vuota per mostrare solo il risultato dell'aggregazione.
Ultima modifica: 25/10/2016 / Validità: da 9.0.3940
procedura