Tabelle a record derivativi

 


 

Dalla versione 1.0.3.2 di Windows è disponibile come opzioni sulle tabelle la voce record derivativi. Questa opzione, in pratica informa il programma che nella fase di apertura della scheda non dovrà leggere i dati direttamente dalla tabella, ma, attreverso dei suoi specifici valori da un altra.

Questo serve principalmente per ovviare a uno dei vincoli del sistema Nios4, ossia che ogni sezione di visualizzazione dei dati può avere solo una tabella associata. Infatti attraverso questa opzione sarà possibile, ad esempio, su una agenda visualizzare insieme i dati derivati da una tabella rapportiintervento e una manutenzione. Aprendo i dati il sistema visualizzarà la scheda di uno o dell'altro, pur partendo da una sezione con una singola tabella collegata.

In questo esempio vedremo come creare una tabella attività che verrà visualizzata su una sezione agenda e permetta di accedere ai dati di due tabelle diverse.

 Creiamo la tabella attività e la sezione agenda

Come prima cosa creeremo la tabella attività impostando a vero la sua opzione per i record derivativi.

 

Creata la tabella, dovremo creare i campi standard per permettere la sua visualizzazione su una sezione di tipo agenda. In questo caso quindi creeremo i campi di data inizio e fine, l'oggetto, la descrizione e lo stato. E' possibile utilizzare le tabelle a record derivativi anche su sezioni normali. In questo caso occorrerà creare solo i campi necessari per visualizzare le informazioni che vogliamo visualizzare e che devono essere in comune con le tabelle da dove recupereremo i valori.

Ad esempio se voglio visualizzare sia i rapporti di intervento che le manutenzioni un campo in comunque sarà la data e il cliente.

Inseriti i campi possiamo procedere a creare la sezione agenda.

Creata l'agenda, se proviamo a creare un nuovo appuntamento vedremo che il sistema aprirà la scheda della tabella attività. Questo perchè oltre a impostarla come tabella con record derivativi dovremo aggiungere uno script alle tabelle che vorremmo visualizzare dentro di essa.

 

Creiamo gli script per collegare le nostre tabelle ad attività

Creata la tabella di "arrivo" delle informazioni dovremo aggiungere uno script di post salvataggio su tutte le tabelle che vogliamo visualizzare e aprire dalla agenda di attività.

In questo caso creeremo lo script per la tabella manutenzione. Lo stesso varrà per tutte le altre tabelle modificando il valore manutenzione con il nome della tabella interessata.

 ---------------------------------------  
 --gestione del record derivato  
 ---------------------------------------  
 rigacl = nil  
 tabella = database.getsql("SELECT * from attivita WHERE tap='manutenzione' AND gguidp='" .. dataview.getvalue("gguid") .. "'")  
 if tabella.countrows() > 0 then  
   righe = tabella.getrows()  
   rigacl = righe[1]  
 else  
   rigacl = database.newdatarow("attivita")  
 end  
 --procedo ad aggiornare i dati della manutenzione sulla 'attività  
 if rigacl ~= nil then  
   rigacl.setvalue("tap","manutenzione")  
   rigacl.setvalue("gguidp",dataview.getvalue("gguid"))  
   rigacl.setvalue("data_inizio",dataview.getvalue("data"))  
   rigacl.setvalue("data_fine",dataview.getvalue("data_fine"))  
   rigacl.setvalue("oggetto","manutenzione")  
   rigacl.setvalue("descrizione",dataview.getvalue("cliente"))  
   rigacl.setvalue("stato","Manutenzione")  
   rigacl.save()
   database.addsyncbox("attivita",rigacl.getvalue("gguid"))  end --aggiolrno la sezujione delle attività con la nuova manutenzione program.refreshsection("attivita")

La prima parte dello script identifica se esiste già un record su attività collegato alla nostra scheda. In caso esistesse lo script aggiornerà quest'ultimo, altrimenti ne creaerà uno nuovo.

La seconda parte dello script recupera i valori dalla nostra scheda manutenzione e li passa alla tabella attività.

I valori necessari per il corretto funzionamento devono essere il campo tap, che identifica la tabella e il gguidp, che identifica l'id univoco della riga. Quando dalla agenda si aprirà il dettaglio, se questi due valori saranno correttamente caricati, il sistema non aprirà la scheda di attività ma quella richiemata da questi.

In questo modo sulla nostra agenda potremo visualizzare i valori presenti su diverse tabelle e aprire per ognuna di esse la sua scheda.






Commenti