Вывести запросы BIRT - PullRequest
       12

Вывести запросы BIRT

1 голос
/ 12 марта 2010

Существует ли способ вывода запросов отчетов для отчетов BIRT. Нам необходимо поддерживать несколько механизмов баз данных, поэтому наши запросы различаются в зависимости от базовой базы данных. Я хотел бы использовать параметр конфигурации, чтобы сообщить отчету BIRT об использовании определенного файла запроса

Ответы [ 2 ]

1 голос
/ 19 марта 2010

Конечно, вы можете. Если вы закодируете некоторый Javascript в самом отчете, он может получить доступ к файлам на диске, чтобы получить текстовые запросы и изменить запрос до его выполнения.

Событие, для которого нужно указать код, - beforeOpen в источнике данных. Мы на самом деле используем это для подстановочных параметров, обнаруживая, если они установлены на "*" и динамически корректируя запрос SQL, изменяя его с:

select A from B where C = ?

до:

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

Уродливая модификация просто для того, чтобы нам не пришлось беспокоиться об изменении позиционных параметров.

Вы можете прочитать строку из файла на диске и изменить запрос следующим образом:

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) {}

хотя у вас, вероятно, должна быть лучшая проверка ошибок, чем эта :-) Я удалил ее, поскольку она (1) несколько велика; и (2) в некотором роде.

1 голос
/ 17 марта 2010

Я не знаю, как сделать это из коробки. Возможно, вы могли бы придумать несколько довольно сложных сценариев для запуска события onLoad в наборе данных.

Как насчет размещения одной и той же хранимой процедуры в каждой БД? Затем вы можете параметризовать информацию о подключении к данным (на странице «Изменить» для источника данных отчета) и динамически направлять отчет для запроса определенного источника данных. Пока сохраненный процесс присутствует во всех экземплярах, вы будете получать правильные данные из правильного источника.

...