martedì 24 marzo 2009

JasperServer e iReport: Tabelle a nome variabile nei dataset

Oggi ho avuto una nuova problematica da affrontare nell'utilizzo di JasperServer e iReport.

Avevo necessità che l'utente potesse in qualche modo parametrizzare tutto o in parte in nome di una tabella sulla quale far girare il report. Nel caso specifico sul lavor creiamo delle tabelle giornaliere che hanno un nome formato come segue:
DataBase.Piattaforma _090324
Quindi il problema era passare la data al report in modo che l'utente potesse con un singolo report, e senza create procedure particolari al livello di db, interrogare più di una tabella a secondo del giorno di interesse.
La cosa più ovvia era che la parte variabile venisse passata tramite un parametro al report e quindi gioco forza il primo tentativo è stato quello di provare la seguente sintassi, dove il parametro veniva passato come stringa:
SELECT * FROM DataBase.Piattaforma _$P{DataTabella}
Ovviamente l'esperimento ha prodotto un errore, ma devo dire che la soluzione era a portata di mano. Il trucco sta nell'aggiungere un "!" dopo $P:
SELECT * FROM DataBase.Piattaforma _$P!{DataTabella}
Così facendo il tutto funziona perchè il motore effettua la sostituzione del parametro con il suo valore inserito dall'utente prima di inviare la query.

Spero di avervi aiutato anche questa volta.

Wsc

5 commenti:

fuliggians ha detto...

si potesse fare anche con mysql sarebbe mooolto comodo

Wsc ha detto...

Con MySQL si fa con la PREPARE! Guarda un po' nelle mie Stored Procedure!

Anonimo ha detto...

Si, probabilmente lo e

Anonimo ha detto...

I wish not concur on it. I regard as precise post. Especially the appellation attracted me to be familiar with the sound story.

Anonimo ha detto...

Genial dispatch and this enter helped me alot in my college assignement. Thanks you seeking your information.