Creare un report script

In questo esempio creeremo un piccolo report di tipo script per vedere le caratteristiche di questo sistema.

Per prima cosa aggiungere un report nuovo dalle opzioni, selezionare il tipo script e premere su imposta per visualizzare l’editor. Ricordatevi quando aggiungete il nuovo report di impostare tutti i parametri per poter visualizzare correttamente.

--creo l'interfaccia dei filtri di base
filtertable.clear()

filtertable.addcategoryrow("Data")
filtertable.adddaterow("INIZIO","Inizio")
filtertable.adddaterow("FINE","Fine")
filtertable.addsubtablerow("CLIENTE","Cliente","clienti","")

--creo la griglia effettiva del report
reporttable.clearcolumns()
reporttable.clearrows()
reporttable.adddatecolumn("data","Data",150,true)
reporttable.addtextcolumn("cliente","Cliente",200,true)

Come prima cosa all’interno dello script interfaccia inseriamo tutti i comandi per creare i filtri di ricerca e le colonne che verranno utilizzate per visualizzare i dati.

Le seguenti righe invece saranno da inserire all’interno dello script elaborazione. Mentre lo script dell’interfaccia viene lanciato una volta sola, quello di elaborazione viene eseguito tutte le volte che premiamo il tasto elabora.

datainizio = filtertable.getvalue("INIZIO")
datafine   = filtertable.getvalue("FINE")

--eseguo una ricerca di base su un range di date
igiorno = tostring(utility.dateday(datainizio))
imese   = tostring(utility.datemonth(datainizio))
ianno   = tostring(utility.dateyear(datainizio))

fgiorno = utility.dateday(datafine)
fmese   = utility.datemonth(datafine)
fanno   = utility.dateyear(datafine)

Come prima cosa recupero i valori di data dalla tabella dei filtri e li preparo per essere utilizzati all’interno della ricerca.

stringasql = "SELECT * FROM fatture WHERE eli=0 AND year(data) >=" .. ianno .. " AND month(data) >=" .. imese .. " AND day(data) >=" .. igiorno
stringasql = stringasql .. " AND year(data) <=" .. fanno .. " AND month(data) <=" .. fmese .. " AND day(data) <=" .. fgiorno 

--recupero i restanti filtri
rigacliente = filtertable.getvalue("CLIENTE")
if rigacliente ~= nil then 
    stringasql = stringasql .. " AND gguid_nominativo='" .. rigacliente.getvalue("gguid") .. "'"
end

Prepariamo la stringa sql per eseguire la ricerca controllando se è stato selezionato un cliente dalla tabella dei filtri. Se si lo aggiungiamo alla stringa sql per la ricerca.

reporttable.clearrows()

tabella = database.getsql(stringasql)
righe   = tabella.getrows()
for i   = 1,tabella.countrows() do
    --output.print(righe[i].getvalue("data"))
    riga = reporttable.adddatarow()
    riga.setvalue("data",righe[i].getvalue("data"))
    riga.setvalue("cliente",righe[i].getvalue("nominativo"))
end

Eseguiamo la ricerca e iniziamo a compilare la tabella del report con i valori trovati.