Visualizzazione post con etichetta jasperserver. Mostra tutti i post
Visualizzazione post con etichetta jasperserver. Mostra tutti i post

mercoledì 24 giugno 2009

JasperServer e iReport: Collegamento ad un database Oracle

Oggi mi è arrivata una nuova richiesta. Creare un report che potesse prendere dati da una fonte Oracle e non Mysql.
Come sempre partendo dalla documentazione web ho subito verificato che la cosa fosse possibile.

Quindi sono entrato nella creazione dei Data Source e ho iniziato a configurare per primo iReport.
La connessione è stata così configurata:
Driver:
oracle.jdbc.driver.OracleDriver
URL:
jdbc:oracle:thin:@Indirizzo_IP_Server:Porta_Server:Nome_DataBase
(usare l'IP del server per evitare problemi sulla network interface e non i nomi WINS es: nomeserver.dominio)

Ovviamente user e password.
E qui iniziano i problemi. Perchè anche se i parametri sono tutti corretti riceviamo un messaggio di errore sulle classi java.
E' necessario scaricare la classe java apposita per la comunicazione.
Il pacchetto è:
ojdbc14.jar
Ne ho trovato una versione scaricabile senza effettuare registrazioni di sorta su www.findjar.com.
Questo pacchetto va messo nelle directory:
X:\Programmi\jasperserver-3.0\ireport\lib (iReport)
X:\Programmi\jasperserver-3.0\apache-tomcat\common\lib
(JasperServer)
Riavviando Jasperserver sarà possibile inizializzare i Data Source necessari.
Buon lavoro.

Wsc

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