Domanda

C'è un modo di esternare query di report per BIRT relazioni. Abbiamo bisogno di supportare più motori di database e così le nostre domande sono diverse a seconda del database sottostante. Vorrei utilizzare un parametro di configurazione per dire rapporto BIRT per utilizzare un file query specifica

È stato utile?

Soluzione

Certo che puoi. Se il codice un po 'di Javascript nella relazione stessa, è possibile accedere ai file sul disco per recuperare le query testuali e modificare la query prima che venga eseguito.

L'evento è necessario codificare per è beforeOpen sulla sorgente di dati. Abbiamo effettivamente utilizzare questo per i parametri caratteri jolly rilevando se sono impostati su "*" e dinamicamente regolando la query SQL, trasformandolo da:

select A from B where C = ?

a:

select A from B where ((C = ?) or (1==1))

La modifica brutta è proprio così che non c'è bisogno di preoccuparsi di cambiare i parametri posizionali.

Si può leggere una riga da un file su disco e modificare la query con qualcosa di simile:

try {
  var fip0 = new Packages.java.io.FileInputStream("/query.txt");
  try {
    var fip1 = new Packages.java.io.DataInputStream(fip0);
    try {
      queryText = fip1.readLine() + "";
    } catch(e1) {}
    fip1.close();
  } catch(e2) {}
  fip0.close();
} catch(e3) {}

, anche se probabilmente si dovrebbe avere una migliore controllo degli errori di quella :-) ho rimosso come è (1) un po 'di grandi dimensioni; e (2) un po 'proprietaria.

Altri suggerimenti

Non so di un modo per farlo fuori dalla scatola. Probabilmente si può sognare un po 'di scripting piuttosto complesso di sparare l'evento onLoad del set di dati.

Come su come piazzare la stessa stored procedure in ogni DB? Quindi è possibile parametrizzare le informazioni di connessione dati (Nella pagina Modifica per l'origine dati rapporto) e dirigere in modo dinamico il rapporto per interrogare una fonte di dati specifici. Finché il proc memorizzato è in tutti i casi, si otterrà i dati corretti dalla fonte corretta.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top