Конечно, вы можете. Если вы закодируете некоторый 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) в некотором роде.