English
Instant Developer Foundation Documentazione
  • Approfondimenti
  • IDE

Ordinamento per campi di lookup

copia link

Introduzione

Nella versione 7.1 è stata introdotta la possibilità di ordinare i record contenuti in un pannello anche per i campi di lookup. Anche se questa funzionalità è molto interessante per l'utente finale, tuttavia non è attivabile senza dover pagare un costo in termini di prestazioni/utilizzo di memoria. E' quindi necessario capire come funziona e come è possibile ottimizzarne il funzionamento.

Nota importante

Dalla versione 8.5 il contenuto di questo articolo si applica anche ai campi di pannello che funzionano in modalità auto-lookup.

Attivazione e disattivazione dell'ordinamento

Per attivare l'ordinamento per una colonna di lookup è possibile usare il comando Rendi Ordinabile del menù contestuale dei campi di lookup. Se, in un successivo momento, si desidera disattivare l'ordinamento, è possibile usare il comando Disattiva Ordinamento.


Comandi per la gestione dell'ordinamento dei campi di lookup

Master Query DB

Attivando l'ordinamento per un campo di lookup in un pannello DB (*), cioè con master query basata sul database, avvengono le seguenti modifiche:

  • Viene aggiunta una nuova colonna calcolata alla master query (1).
  • Tale colonna viene valorizzata con una subquery equivalente alla query di lookup (1).
  • La colonna della lookup corrispondente al campo del pannello da rendere ordinabile viene collegata alla nuova colonna della master query (2).
  • Viene creato un nuovo campo di pannello nascosto collegato alla nuova colonna della master query (3).
Lo scopo di queste modifiche è quello di fornire i valori della colonna della lookup per tutte le righe del recordset mostrato nel pannello; questo è necessario per poter poi ordinare le righe in base a questi valori. L'uso della sub-query mantiene il recordset aggiornabile, non modifica le condizioni di estrazione della master query ed il costo comparato con una outer join non è particolarmente penalizzante.


Nuovi oggetti automaticamente aggiunti per rendere ordinabile il campo di lookup

Master Query DO

Se il pannello è basato su un documento, il meccanismo è identico ma invece di intervenire sulla master query del pannello, si interviene sulla master query del documento. Le modifiche apportate sono quindi le seguenti:

  • Se il documento non ha una master query documentale, ne viene aggiunta una. (1).
  • Alla master query documentale viene aggiunta una colonna che deriva dal campo base del campo di lookup per cui ordinare (2).
  • Tale colonna viene valorizzata con una subquery equivalente alla query di lookup (2).
  • Viene aggiunta una nuova proprietà aggiuntiva al documento, proprietà che viene poi collegata alla nuova colonna della master query documentale in modo da definirne il caricamento (3).
  • La colonna della lookup corrispondente al campo del pannello da rendere ordinabile viene collegata alla nuova colonna della master query che deriva dalla nuova proprietà aggiunta al documento (4).
  • Viene creato un nuovo campo di pannello nascosto collegato alla nuova colonna della master query che deriva dalla nuova proprietà aggiunta al documento (5).
Anche in questo caso l'uso della sub-query non modifica sostanzialmente la master query documentale.


Nuovi oggetti automaticamente aggiunti per rendere ordinabile il campo di lookup in un pannello Document Oriented

Ottimizzazione

Il meccanismo illustrato aggiunge una colonna calcolata tramite una sub-query per ogni campo di lookup che si desidera rendere ordinabile. Se ci sono molti campi di lookup che devono essere resi ordinabili e tutti derivano dalla medesima tabella, è possibile che sia più conveniente modificare la master query di pannello o documentale in modo da usare un'unica join invece che tante sub-query. La procedura è la seguente:

  • Inserire la tabella nella from list, scegliere il join più corretto.
  • Cancellare tutte le sub-query (non le colonne aggiuntive!)
  • Editare l'espressione delle colonne aggiuntive, inserendo il campo corrispodente della nuova tabella aggiunta alla query.


Drag & drop della tabella per aggiungerla alla from list

Cancellazione della sub-query

Modifica della colonna per estrarre i valori da ordinare

Impostazione manuale

Qualora la procedura automatica non consenta di ottenere il risultato desiderato, oppure emetta un messaggio di errore a causa di particolari configurazioni del pannello, è possibile rendere ordinabile il campo di lookup tramite la seguente procedura manuale:

  • Modificare la master query del pannello in modo da includere una colonna che contenga i valori per cui deve essere ordinato il pannello.
  • Aggiungere il relativo campo al pannello, eventualmente nascosto.
  • Tirare la colonna della master query sulla colonna della lookup query: quando l'utente ordina il campo di lookup, in realtà verrà eseguito l'ordinamento sulla colonna della master query desiderata.

Pannelli scrivibili

Se il campo di lookup è modificabile, le modifiche verranno propagate anche alla colonna della master query ad esso collegata. In questo modo sarà possibile continuare ad ordinare per quel campo anche senza eseguire il refresh della query del pannello.

Ultima modifica: 23/03/2021 / Validità: da 7.1.3300

Hai trovato utile l'articolo?

Grazie per il feedback!

Ti serve altro aiuto?

Consulta il Forum