Muszę zrobić raport, do tej pory przekazywałem tylko przez parametr jedno połączenie do pliku lub bazy danych. Jak przekazać więcej?
Do tej pory robiłem tak:
JasperDesign jasperDesign = JRXmlLoader.load(inputStream); //plik wygenerowany przez iReport
JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign); //wiadomo kompilacja
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, beanColDataSource); //przesłanie odpowienich danych w tym wypadku jako JavaBean ale metoda przyjmuje też np. połączenie do bazy danych
JasperExportManager.exportReportToPdfFile(jasperPrint, "c:/reports/test_jasper.pdf"); //nasz wynik
Najbardziej interesuje mnie linijka:
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, beanColDataSource);
W dokumentacji można sprawdzić jakie są jeszcze opcje: http://jasperreports.sourceforge.net/api/net/sf/jasperreports/engine/JasperFillManager.html
Ale co jeśli muszę przekazać np. 2 połączenia bazy danych i ArrayListę.
Wtedy przydałaby się taka metoda:
fillReport(JasperReport jasperReport, java.util.Map<java.lang.String,java.lang.Object> parameters,java.sql.Connection connection1, java.sql.Connection connection2, JRDataSource dataSource, );
Oczywiście coś w ten deseń, bo jeszcze jak rozpoznać ma to plik IReporta co dostał i do którego DataSetu dopasować(bo tych można w IReporcie wiele utworzyć, nie tylko jeden datasource).