L’obiettivo principale di questa guida sarà quello di mostrare come visualizzare determinati dati presenti in una particolare tabella - dati che verranno scelti di volta in volta - utilizzando le query. Verranno inoltre spiegate le varie funzionalità proprie del modulo Query.
La tabella di riferimento per l’estrapolazione dei dati sarà quella delle Risorse, AngRes. Le risorse presenti nella tabella AngRes sono, per questa guida, le seguenti:
La visualizzazione standard della tabella AngRes è questa:
| Cod.RIs. | Desc. Ris |
| MR | Mario Rossi |
| GV | Guido Verdi |
| PB | Paolo Bianchi |
| PR1 | Pressa 1 |
La query standard che sta dietro a questa tabella è StdAngRes, rintracciabile all’interno della lista query che viene visualizzata come schermata iniziale del modulo Query. Per poter modificare questa query, dovremo crearne una nuova versione.
Una query template è una query di base, non modificabile. Tutte le versioni che le succederanno avranno come minimo il contenuto della stessa template. Per creare un nuovo template di query, entrare nel modulo Query e cliccare il pulsante Nuovo template posizionato in alto sopra la barra delle etichette. Si aprirà un modal. Vediamolo nello specifico.
All’interno del modulo Query, cerchiamo tramite il bottone di ricerca la query standard StdAngRes, selezioniamola, e aggiungiamo tramite il pulsante in alto Nuova Versione una nuova versione di questa query, denominando il campo Descrizione Query Risorse2; impostando il flag del campo Default a true la nuova versione sarà quella predefinita e sarà quindi a questo punto possibile modificare la query a seconda dei dati che si vorranno visualizzare.
NB: Risorse2 non è visibile all’interno della lista delle query standard; essa è infatti la nuova versione della query standard StdAngRes. La si potrà dunque recuperare all’interno della lista delle versioni di questa query.
All’interno del modulo Query, selezionata la query di interesse, si aprirà una schermata divisa per sezioni, la prima delle quali sarà la sezione Query. All’interno di essa abbiamo più voci:
All’interno di questa sezione, cliccando la tabella collegata AngRes comparirà a schermata il modal Modifica tabella di partenza e collegamenti. Vediamo ora in maniera più approfondita le voci e i flag che contiene:
Due tabelle possono essere legate da relazioni, che rappresentano i legami che possono sussistere fra i record delle tabelle associate. Nel nostro caso la relazione tra le tabelle sarà di dipendenza oppure di dettaglio. Diremo che la tabella A dipende da B - relazione di dipendenza - se la definizione di A fa riferimento alla definizione di B - ovvero se esistono colonne di A che fanno riferimento alla tabella B. Viceversa, diremo che B è dettaglio di A - relazione di dettaglio. Nella figura capiamo meglio cosa si intende tecnicamente con l’espressione fare riferimento.

1 - La colonna TypUid fa riferimento alla tabella B.
2 - Il campo Typ. Uid. di un record della Tabella A (Risorse) corrisponde all’identifiicativo (Uid) di un record della Tabella B (Tipi Risorse).
Vediamo un esempio pratico di utilizzo.
Partiamo dalla tabella Risorse, a cui vogliamo associare la tabella Tipi Risorse. La domanda che ci faremo sarà: quanti tipi può avere una risorsa? La risposta sarà 1, quindi tipi risorsa sarà tabella dettaglio dellla tabella Risorse.
Viceversa, poniamo di voler associare la tabella Timbrature alla tabella Risorse. La domanda che ci faremo sarà: quante timbrature può avere una risorsa? N, quindi timbratura sarà tabella dipendente della tabella risorse.
Il risultato dell’associazione tra la tabella di partenza - AngRes - e una tabella dettaglio - sia essa Tipi Risorse (AngResTyp) o Calendari (AngPrjCal) o altre - sarà particolare. La cardinalità infatti - il numero di risultati che si determinerà dall’associazione tra le varie tabelle - potrà essere minore o uguale a quella data dalla singola tabella di partenza. Questo concetto si lega indissolubilmente a quello di Solo Se Esiste. Se il flag Solo se esiste sarà settato a true, verranno sì mostrate delle informazioni in più, ma solo di quei record che presenteranno al loro interno il dato cercato nella tabella associata - ad esempio Descrizione Calendario in Calendari. Se invece ad esempio il campo Descrizione Calendario di una determinata risorsa non dovesse essere valorizzato, il sistema non visualizzerà quel record.
Qui la cardinalità potrà essere maggiore uguale o minore a quella data dalla singola tabella di partenza. Una risorsa ad esempio potrà avere solo un Tipo Risorsa, mentre potrà certamente partecipare a più eventi, o essere inserita in più gruppi. Se il flag Solo se esiste sarà settato a false, verranno mostrati tutti i record. Se il flag Solo se esiste sarà settato a true, varrà lo stesso discorso fatto per le tabelle dettaglio.
All’interno di questa sezione, cliccando la tabella - che sceglieremo di volta in volta - associata alla tabella di partenza AngRes comparirà a schermata il modal Modifica tabella collegata e collegamenti. Per le voci Tabella sorgente, Alias sorgente, Tabella collegata, Alias, Completa, Campi personalizzati, si può fare riferimento al modal sopra descritto Modifica tabella di partenza e collegamenti.
Questo flag fa da filtro alla visualizzazione dei dati delle tabelle, ed è particolarmente significativo per quei casi in cui un campo possa essere non valorizzato, un campo cioè non obbligatorio - a differenza ad esempio dei campi Codice e Descrizione del modulo Risorse - com’è per i campi del modulo Calendari.
Per capire bene come funziona il flag SoloSeEsiste bisogna porsi questa domanda: il dato di partenza lo visualizzo solo se il dato collegato esiste o lo visualizzo anche se il dato collegato non esiste? Nel primo caso, imposteremo il flag a true; nel secondo, a false.
In questa circostanza come dato di partenza prendiamo Descrizione Risorsa, presente nella tabella di partenza AngRes, mentre come dato collegato prendiamo invece Descrizione Calendario, presente nella tabella collegata di dettaglio AngPrjCal.
Ecco la visualizzazione in questi due casi esaminati.
Primo caso (flag SSE a true)
| Desc. Ris. | Desc. Calend. |
| Mario Rossi | Calendario Mario Rossi |
| Guido Verdi | Calendario Guido Verdi |
Come si nota, vengono visualizzate solamente le risorse che hanno valorizzati i campi del modulo Calendari - in questo caso Descrizione Calendari (sarebbe visualizzato anche Codice Calendari se fosse stato selezionato dalla sezione delle Colonne Visualizzate) - ovvero Mario Rossi e Guido Verdi.
Secondo caso (flag SSE a false)
| Desc. Ris. | Desc. Calend. |
| Mario Rossi | Calendario Mario Rossi |
| Guido Verdi | Calendario Guido Verdi |
| Paolo Bianchi | |
| Pressa 1 |
Notiamo qui come ad essere visualizzate siano tutte le risorse, nonostante alcuni campi del modulo Calendari non siano valorizzati (quelli associati a Paolo Bianchi e a Pressa 1).
Nel modulo Query, selezioniamo dalla lista la query di nostro interesse - in questo caso la nuova versione di stdAngRes, Risorse2, creata in precedenza - e puntiamo alla sezione Colonne. Questa sezione permette di scegliere quali colonne visualizzare e in quale ordine visualizzarle; ci darà quindi la possibilità di scegliere quali dei campi da noi inseriti nel modulo di inserimento dell’entità visualizzare o meno. Dando Modifica, oltre alla sotto-sezione Colonne Visualizzate comparirà la sotto-sezione Colonne Visualizzabili. Queste due sotto-sezioni sono strettamente dipendenti: una colonna visualizzabile può infatti essere aggiunta e diventare una colonna visualizzata; una colonna visualizzata potrà essere rimossa ritornando ad essere una colonna visualizzabile. In questa sezione l’ordine dei record non viene toccato; essi verranno visualizzati a seconda dell’ordine temporale di inserimento da parte dell’utente. Se ho inserito - come in questo caso - primariamente all’interno della tabella Risorse Mario Rossi e successivamente la risorsa Guido Verdi (e così via per le altre), a schermata comparirà prima il record di Mario Rossi, poi il record di Guido Verdi, ordinati esclusivamente secondo le colonne visualizzate scelte dalla lista.
Poniamo ad esempio di aver aggiunto Descrizione Risorsa e Codice Risorsa; la tabella che verrà visualizzata sarà la seguente:
| Desc. Ris. | Cod. Ris. |
| Mario Rossi | MR |
| Guido Verdi | GV |
| Paolo Bianchi | PB |
| Pressa 1 | PR1 |
Se volessimo invertire la visualizzazione ci basterà selezionare tra le colonne visualizzate Descrizione Risorsa e cliccare la freccia in giù (a disposizione tra le icone a lato), oppure selezionare Codice Risorsa e cliccare la freccia in su.
All’interno di questa sezione notiamo che sopra le righe in lista delle Colonne sono presenti delle etichette. Andiamo qui a descriverle brevemente.
All’interno del modulo Query, selezionata dalla lista la query desiderata - in questo caso la nuova versione di stdAngRes, Risorse2, creata in precedenza - soffermiamoci sulla sezione Ordinamenti. Questa sezione ci permette di modificare l’ordine di visualizzazione dei record della tabella in esame (nel nostro caso, quella di Risorse).
Dando quindi Modifica, compariranno giù in basso due sotto-sezioni, Ordinamenti applicati e Ordinamenti applicabili. Anche qui vale il discorso fatto per le Colonne, le due sotto-sezioni sono strettamente dipendenti; un ordinamento applicabile potrà essere aggiunto e diventare un ordinamento applicato, viceversa un ordinamento applicato potrà essere rimosso e ridiventare un ordinamento applicabile.
Come specificato sopra, a differenza di quanto avviene nella sezione Colonne l’ordine di visualizzazione dei record viene cambiato. Esso dipenderà da quali voci andremo ad aggiungere nella sotto-sezione Ordinamenti applicati dalla lista degli Ordinamenti applicabili.
Aggiungiamo ad esempio alla lista degli ordinamenti applicati Descrizione Risorsa; settiamo a true Crescente; la visualizzazione della tabella sarà la seguente:
| Desc. Ris. | Cod. Ris. |
| Guido Verdi | GV |
| Mario Rossi | MR |
| Paolo Bianchi | PB |
| Pressa 1 | PR1 |
Ora ci si può fare questa domanda: se ci dovessero essere degli omonimi tra le risorse, come verrebbero visualizzati i record?
Aggiungiamo una nuova risorsa Guido Verdi, con Codice Risorsa GV1.
Le risorse presenti nella tabella AngRes sono ora le seguenti:
Questa sarà la situazione:
| Desc. Ris. | Cod. Ris. |
| Guido Verdi | GV |
| Guido Verdi | GV |
| Mario Rossi | MR |
| Paolo Bianchi | PB |
| Pressa 1 | PR1 |
Il Codice Risorsa viene ordinato temporalmente, Guido Rossi con codice GV1 è stato infatti inserito dopo. Se volessimo modificare questo ordinamento, basterebbe aggiungere il Codice Risorsa agli Ordinamenti Applicati. Il sistema ordinerà i record a seconda del campo Descrizione Risorsa e poi, se troverà campi uguali, ordinerà per Codice Risorsa. Settiamo questa volta Crescente a false, questo sarà il risultato:
| Desc. Ris. | Cod. Ris. |
| Guido Verdi | GV1 |
| Guido Verdi | GV |
| Mario Rossi | MR |
| Paolo Bianchi | PB |
| Pressa 1 | PR1 |
All’interno della lista d’ordinamento delle colonne, è presente il flag Crescente. Esso setta l’ordine alfabetico. Se crescente sarà true, l’ordine sarà A-Z, se sarà false, l’ordine seguirà l’andamento Z-A.
Entriamo nel modulo Query, selezioniamo la query StdAngRes di Risorse, e quindi la nuova versione di StdAngRes creata precedentemente, Risorse2. Clicchiamo su Modifica e, per visualizzare unicamente il Codice Risorsa, ci basterà spostarci nella sezione Colonne visualizzate, selezionare Descrizione Risorsa (ResDsc) e cliccare il bottone Rimuovi. Dopo aver salvato, la visualizzazione della tabella AngRes sarà questa:
| C.Ris. |
| MR |
| GV |
| PB |
| PR1 |
| GV1 |
I Tipi Risorse sono categorizzazioni specifiche date alle risorse dall’utente. Nel nostro caso, quelli inseriti e disponibili alla selezione per le risorse presenti e le nuove sono:
Per visualizzarli, occorre creare un collegamento tra la tabella AngRes e la tabella specifica dei Tipi Risorse, AngResTyp.
All’interno della sezione Tabelle collegate, clicchiamo quindi AngRes; si aprirà il modal Modifica tabella di partenza e collegamenti e sulla sinistra sarà presente la lista delle Tabelle dettaglio, tabelle che forniscono informazioni ulteriori sulle entità presenti (nel nostro caso, sulle Risorse). Sarà proprio all’interno di questa lista che si potrà trovare la tabella da collegare, AngResTyp. Dando Conferma, e modificando secondo esigenza la sezione Colonne Visualizzate - in questo caso abbiamo scelto di visualizzare la Descrizione della Risorsa e la Descrizione del Tipo Risorsa - la situazione sarà la seguente:
| Desc.Ris. | Desc. Tip. Ris. |
| Mario Rossi | Ufficio |
| Guido Verdi | Operaio |
| Paolo Bianchi | Ufficio |
| Pressa 1 | Materiali |
| Guido Verdi | Ufficio |
Il Macro Tipo Risorsa viene ereditato dalla risorsa grazie al collegamento della stessa col Tipo Risorsa. Per poter visualizzare il Macro Tipo Risorsa è quindi necessario intervenire nella query in maniera più specifica, collegando come descritto in precedenza la tabella dettaglio AngResTyp alla tabella di partenza AngRes, e conseguentemente la tabella dettaglio AngResMacTyp - la nostra Macro Tipi Risorse - alla tabella AngResTyp. Dopo i soliti accorgimenti nella sezione Colonne visualizzate, la tabella visualizzata sarà questa:
| Desc. Ris. | Desc. Tip. Ris. | Cod. Mac. Typ. |
| Mario Rossi | Ufficio | H |
| Guido Verdi | Operaio | H |
| Paolo Bianchi | Ufficio | H |
| Pressa 1 | Materiali | M |
| Guido Verdi | Ufficio | H |
Selezionare la query di interesse e cliccare sul pulsante Anteprima, si aprirà un modal con i dati risultanti dalla query.
Selezionare la query di interesse e cliccare sul pulsante Esporta, si aprirà un modal che vediamo nello specifico.
Dal modulo query cliccare sul pulsante Importa, si aprirà un modal wizard che vediamo nello specifico.
Al punto 1 viene richiesto di caricare o trascinare il file con estensione .qry che contiene la query da importare. Una volta selezionato è possibile anche eliminarlo nel caso fosse errato, altrimenti cliccare sul pulsante Avanti.
Al punto 2 viene reperito il codice della query ed eventualmente lo si può modificare e nello specifico si può scegliere :
Da JPM, entriamo nel modulo Calendari, clicchiamo il bottone Nuovo e inseriamo nei campi input a sinistra il Codice Calendario - ad es. CMR - e la Descrizione Calendario - ad es. CalendarioMarioRossi. Tornando su Synergy, entriamo nel modulo Risorse, selezioniamo la prima risorsa - ad es. Mario Rossi - e clicchiamo Modifica; nella sezione Schedulazione sarà possibile associare il Calendario appena creato a questa risorsa. Ripetiamo questa procedura per ogni risorsa a cui intendiamo associare un calendario.
Per poter associare un gruppo alla sua risorsa e visualizzarlo a schermo, il procedimento è il seguente.
Entriamo nel modulo dei Gruppi e clicchiamo Nuovo gruppo utente, si aprirà il form di modifica del nuovo gruppo; impostiamo a piacere i vari parametri, in questo caso il Codice Gruppo sarà UffTec, la Descrizione del gruppo sarà Ufficio Tecnico. Impostiamo il flag Pubblico a true, andiamo sulla sezione Membri, e clicchiamo il bottone Aggiungi Risorse. Selezioniamo dalla lista la risorsa che vogliamo aggiungere al gruppo Ufficio Tecnico, in questo caso, Mario Rossi e salviamo il tutto. Torniamo nel modulo Query, cerchiamo la query StdAngRes, e la nuova versione da noi creata Risorse2. Nella sezione Tabelle collegate, selezioniamo la tabella Risorse. Dal modal Modifica tabella di partenza e collegamenti, tra le tabelle dipendenti, cerchiamo la tabella AngResGrp, Associazione risorse gruppi. Questa tabella contiene gli identificativi della tabella Risorse e gli identificativi della tabella Gruppi. La valorizzazione dei record della tabella Associazione risorse gruppi sarà dettata dall’esistenza o meno di un’associazione tra risorse e gruppi. Se una risorsa non dovesse essere stata inserita in un gruppo, il record di quella risorsa sarà nullo. A schermo, si mostrerà così:
| Id. Grp. | Id. Ris |
| 1 | 1 |
Quei quattro record nulli che notiamo, sono i record delle risorse Guido Verdi, Paolo Bianchi, Pressa 1, Guido Verdi (l’omonimo, GV1), visibili in quanto il flag Solo se esiste della tabella AngResGrp è settato a false. Se fosse stato settato a true, la visualizzazione sarebbe stata la seguente:
| Id. Grp. | Id. Ris. |
| 1 | 1 |
Ma perchè esiste la tabella AngResGrp ed è necessaria se vogliamo visualizzare la risorsa e il gruppo di cui questa risorsa fa parte? La risposta è semplice: la tabella Risorse e la tabella Gruppi non si parlano, cioè nessuna delle due tabelle contiene un riferimento all’altra. Occorre quindi che una tabella lo faccia, permettendo di associare un gruppo a più risorse e una risorsa a più gruppi. Nel momento in cui aggiungiamo una risorsa ad un gruppo utente, la tabella AngResGrp viene riempita dei dati di questa associazione. Ecco che per visualizzare la risorsa e il gruppo a cui appartiene, collegata la tabella AngResGrp, non ci mancherà che associare quest’ultima alla tabella Gruppi Risorse, AngGrp. Selezionate le colonne da visualizzare, applicati gli ordinamenti desiderati e settato Crescente a true, la situazione sarà questa:
SSE settato a false
| Desc. Ris. | Desc. Grp. |
| Guido Verdi | |
| Guido Verdi | |
| Mario Rossi | Ufficio Tecnico |
| Paolo Bianchi | |
| Pressa 1 |
SSE settato a true
| Desc. Ris. | Desc. Grp. |
| Mario Rossi | Ufficio Tecnico |