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.