[Java] Tutorial Jasperreport : menggunakan DataSource di JasperReport
Posted by Kus Andriadi | Posted in Campus, IT dan Pemrograman, Java | Posted on 19-12-2009-05-2008
7
Sebelum bisa cara ini, saya biasanya memasukkan seluruh SQL ke dalam JRXML, tapi beberapa minggu belakangan ini, di milis JUGI banyak yang membahas tentang bagaimana caranya membuat report menggunakan DataSource di JasperReport, setelah mencari tutorial di bantu oleh teman belajar saya, akhirnya bisa juga
, yah menurut saya lebih gampang dan enak menggunakan datasource, karena jika ada perubahan dalam SQL/HQL, kita hanya perlu mengubahnya di file “*.java* yang bersangkutan.
Saya bingung juga cara menjelaskan yang benar itu seperti apa
, karena saya tidak begitu paham teori nya, biasanya kalo ada hal baru langsung tabrak-tabrak aja, hehe..yang penting bisa dan ngerti prakteknya, langsung aja step by step nya :
Contoh simple nya aja, Misalnya kita ingin menampilkan info Anggota dalam program Sistem Informasi Perpustakaan, lalu kita membuat class tb_anggota.java :
Tb_anggota.java
Sekarang buka file JRXML yang sudah kamu design lewat Ireport, kurang lebih isinya seperti ini :
<field name="kd_anggota" class="java.util.String"/>
<field name="nm_anggota" class="java.lang.String"/>
<field name="tmp_lahir" class="java.lang.String"/>
<field name="tgl_lahir" class="java.lang.Date"/>
<field name="jenkel" class="java.lang.String"/>
<field name="alamat" class="java.lang.String"/>
//design report
[codesyntax lang="java"]
Atribut name dan tipe dalam JRXML harus sama dengan tipe dan nama field yang berada dalam tb_anggota.java, Setelah itu kita membuat method untuk menampung object, disini kita menggunakan List :
[codesyntax lang="java"]
@SuppressWarnings("unchecked")
private List getDataSource(){
try{
List hasil = new ArrayList();
Resultset rs = koneksi.selectAll();
while(rs.next()){
tb_anggota anggota = new tb_anggota();
anggota.setKd_anggota(rs.getString("kd_anggota");
anggota.setNm_anggota(rs.getString("nm_anggota");
anggota.setTmp_lahir(rs.getString("tmp_lahir");
anggota.setTgl_lahir(rs.getDate("tgl_lahir");
anggota.setJenkel(rs.getString("jenkel");
anggota.setAlamat(rs.getString("alamat");
list.add(anggota);
}
koneksi.closeDB();
return hasil;
} catch (SQLException e) {
e.printStackTrace();
return null;
}
Coba perhatikan baris 6, disitu kamu bisa menggantinya dengan query SQL ataupun HQL, tergantung kamu menggunakan apa, disini saya menggunakan JDBC murni, semua SQL saya taruh di class Koneksi.java, jadi sebagai contoh, pada baris ke 6 hanya perlu memanggil method selectAll(), setelah selesai semua, sekarang kita hanya perlu membuat sedikit code lagi agar bisa ditaruh di actionPerformed JButton :
//menentukan file jrmxl yang akan di compile
JasperReport jasperReport = null;
try {
jasperReport = JasperCompileManager.
compileReport("./src/perpustakaan/report/TagihanBuku.jrxml");
} catch (JRException e1) {
e1.printStackTrace();
}
//compile file .jrmxl ke .jasper
try {
JasperCompileManager.compileReportToFile("./src/perpustakaan/report/TagihanBuku.jrxml",
"./src/perpustakaan/report/TagihanBuku.jasper");
} catch (JRException e1) {
e1.printStackTrace();
}
//mengisi dan menampilkan report
JasperPrint jasperPrint = null;
try {
jasperPrint = JasperFillManager.fillReport(jasperReport,
new HashMap(), new JRBeanCollectionDataSource(getDataSource()));
JasperViewer.viewReport(jasperPrint);
} catch (JRException e1) {
e1.printStackTrace();
}
Taruh code diatas pada aksi JButton, jadi ketika tombol ditekan, laporan akan keluar
, ketika saya menulis artikel ini, rada bingung juga, coz ada beberapa code yang saya rubah, sepertinya ada yang salah, hehehe…tapi seenggaknya kamu punya bayangan kan bagaimana menampilkan report menggunakan datasource di java , jika ada kesalahan, kritik dan saran, silahkan tulis comment dibawah, terima kasih 
Related posts:





sip, mantab deh kus.semakin banyak nulis nanti kan akan terasah ilmunya. tetep semangat!achmatim´s last blog ..10 Hal yang Tidak Boleh Dilakukan terhadap Adsense
Kus Andriadi :
amin..makasih pak..^.^
[Reply]
keren, keren, kerenKus Andriadi :
^.^
[Reply]
OK THX INFONYAKus Andriadi :
Sama2 kakak
[Reply]
Trims tutorialnya membantu banget….Kus Andriadi :
iya sama2
[Reply]
okeee azanice blog
Kus Andriadi :
thanks…
[Reply]
halo mas andri genteng (*kata kunci
)hehe…
ini mas, sy udh cb sesuai dengan sample punya mas andri, tp sy baru buat yg ga terkoneksi database, muncul error :
java.lang.NullPointerException net.sf.jasperreports.engine.fill.JRFiller.createFiller(JRFiller.java:138) net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:119) net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:420) org.apache.jsp.LoadReport_jsp._jspService(LoadReport_jsp.java:108) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
berikut code sy:
itu kira2 kenapa ya mas? karena sy udh cb dengan sample yg ada disite yg laen jg muncul error kurang lebih sama.
mohon pencerahannya..
nuwun
@d13
Kus Andriadi :
mana codenya…zzz….
tapi kayaknya sih salah direktori waktu manggil jasper nya….
coba liat lagi, bener gak direktorinya 
[Reply]
maaf ini code nya :JasperReport jasperReport = null;
try {
jasperReport = JasperCompileManager.compileReport(“d:/SampleReportJasper/sampleReport5.jrxml”);
}
catch (JRException e1) {
e1.printStackTrace();
}
//compile file .jrmxl ke .jasper
try {
JasperCompileManager.compileReportToFile(“d:/SampleReportJasper/sampleReport5.jrxml”,”d:/SampleReportJasper/sampleReport5.jasper”);
}
catch (JRException e1) {
e1.printStackTrace();
}
//mengisi dan menampilkan report
JasperPrint jasperPrint = null;
try {
jasperPrint = JasperFillManager.fillReport(jasperReport,null);
JasperViewer.viewReport(jasperPrint);
}
catch (JRException e1) {
e1.printStackTrace();
}
mohon pencerahannya
nuwun
@d13
Kus Andriadi :
lw gak pake datasource ya? yang kaya contoh gw? gw juga kurang ngerti sih coz gw gak pernah make jasperreport selain pake cara datasource….tapi karena eksepsionnya ngelempar null, kalo menurut gw ada 2 kemungkinan
1. manggil Direktori jrxml/jasper nya salah….
2. jasperPrint = JasperFillManager.fillReport(jasperReport,null);
tuh diisi null, belom ada datanya,
jadi apa yang mau diisi? 
menurut gw itu loh yah
[Reply]