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.

Attivata l'opzione occorrerà inserire uno script di post salvataggio su tutte le tabelle che si desidera visualizzare all'interno di questa. Questo script creare il record che verrà visualizzato e imposta i valori che verranno utilizzati dal sistema per aprire la scheda effettiva.

---------------------------------------

--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")

I valori necessari per il corretto funzionamento sono il campo tap, che identifica la tabella e il gguidp, che identifica l'id univoco della riga.