CMDBuild Forum

Lookup: ordinamento crescente

Salve a tutti, ho installato la versione 1.5 e mi chiedevo come fosse possibile ordinare in maniera crescente i valori di una Lookup gerarchica (esempio: prima combo con la regione italiana, seconda combo con le città di quella regione). Dalla sezione Amministrazione cliccando su "Descrizione" della "Lista Voci" della lookup è possibile ordinare i valori in maniera crescente ma poi dalla Gestione Dati non appaiono così (resta l'ordinamento così come inseriti nel database). Sapete se è possibile ottenerli ordinati? Grazie, Luigi.

Ho anche io lo stesso problema... qualcuno sa come fare?

 

Luigi ha scritto:

Salve a tutti, ho installato la versione 1.5 e mi chiedevo come fosse possibile ordinare in maniera crescente i valori di una Lookup gerarchica (esempio: prima combo con la regione italiana, seconda combo con le città di quella regione). Dalla sezione Amministrazione cliccando su "Descrizione" della "Lista Voci" della lookup è possibile ordinare i valori in maniera crescente ma poi dalla Gestione Dati non appaiono così (resta l'ordinamento così come inseriti nel database). Sapete se è possibile ottenerli ordinati? Grazie, Luigi.

 

Per spostare una riga di una lista lookup in una posizione diversa è sufficiente cliccare sulla riga e spostarla in alto o in basso nella posizione voluta (drag and drop).

La funzione di ordinamento disponibile su ciascuna colonna di una griglia serve invece in CMDBuild per visualizzare i dati ordinati in modo diverso, non per modificarne l'ordinamento nel database.

Fabio

 

Il problema è che ho circa 1000 righe ordinate casualmente... quindi attualmente l'unica soluzione è tramite DRAG&DROP? Non è possibile aggiungere da "qualche parte" il tipo di ordinamento?

Grazie per la tempestività comunque della risposta.

Luigi.

 

Tecnoteca ha scritto:

Per spostare una riga di una lista lookup in una posizione diversa è sufficiente cliccare sulla riga e spostarla in alto o in basso nella posizione voluta (drag and drop).

La funzione di ordinamento disponibile su ciascuna colonna di una griglia serve invece in CMDBuild per visualizzare i dati ordinati in modo diverso, non per modificarne l'ordinamento nel database.

Fabio

 

 

In genere (ma ci sono sicuramente casi in cui la scelta può essere giustificata) le "lookup" si utilizzano per liste con alcune unità o decine di righe, mentre archivi di dimensioni maggiori vengono trattati come "classi" (con la possibilità in quel caso non solo di definire un ordinamento persistente, ma anche di trattare ulteriori informazioni oltre a codice e descrizione).

Al momento non è comunque disponibile nel Modulo di Amministrazione una funzione per riordinare una lista lookup.

Pur non essendo una soluzione suggerita (l'intervento manuale nel database è a rischio e pericolo di chi lo effettua) le segnalo che l'ordimento di una lista "lookup" è determinato dalla colonna di DB "LookUp"."Number", su cui si può eventualmente intervenire tramite una query SQL di update.

Riporto di seguito uno script SQL che ordina la lista in base al campo "Descrizione", specificando come parametro il nome della "lookup":

CREATE OR REPLACE FUNCTION sortlookup(lookuptype text)
  RETURNS integer AS
$BODY$
DECLARE
 rRec RECORD;
BEGIN
 CREATE TEMPORARY SEQUENCE lookuporder_seq start 1;
 PERFORM SETVAL('lookuporder_seq', 1, false);
 FOR rRec IN  (SELECT * FROM "LookUp" where "Type" = lookuptype ORDER BY "Description")  LOOP
  UPDATE "LookUp" SET "Number" = nextval( 'lookuporder_seq' ) WHERE "Description" = rRec."Description";
 END LOOP;
 DROP SEQUENCE lookuporder_seq;
 RETURN 0;
END;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
ALTER FUNCTION sortlookup(text) OWNER TO postgres;

 

Fabio

 

 

 

 

Le confermo che il trigger sembra funzionare.

Grazie,

Luigi.

 

Tecnoteca ha scritto:

In genere (ma ci sono sicuramente casi in cui la scelta può essere giustificata) le "lookup" si utilizzano per liste con alcune unità o decine di righe, mentre archivi di dimensioni maggiori vengono trattati come "classi" (con la possibilità in quel caso non solo di definire un ordinamento persistente, ma anche di trattare ulteriori informazioni oltre a codice e descrizione).

Al momento non è comunque disponibile nel Modulo di Amministrazione una funzione per riordinare una lista lookup.

Pur non essendo una soluzione suggerita (l'intervento manuale nel database è a rischio e pericolo di chi lo effettua) le segnalo che l'ordimento di una lista "lookup" è determinato dalla colonna di DB "LookUp"."Number", su cui si può eventualmente intervenire tramite una query SQL di update.

Riporto di seguito uno script SQL che ordina la lista in base al campo "Descrizione", specificando come parametro il nome della "lookup":

CREATE OR REPLACE FUNCTION sortlookup(lookuptype text)
  RETURNS integer AS
$BODY$
DECLARE
 rRec RECORD;
BEGIN
 CREATE TEMPORARY SEQUENCE lookuporder_seq start 1;
 PERFORM SETVAL('lookuporder_seq', 1, false);
 FOR rRec IN  (SELECT * FROM "LookUp" where "Type" = lookuptype ORDER BY "Description")  LOOP
  UPDATE "LookUp" SET "Number" = nextval( 'lookuporder_seq' ) WHERE "Description" = rRec."Description";
 END LOOP;
 DROP SEQUENCE lookuporder_seq;
 RETURN 0;
END;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
ALTER FUNCTION sortlookup(text) OWNER TO postgres;

 

Fabio