Pertemuan IV
MEMBUAT LAPORAN
Aplikasi yang telah kita buat tidak lengkap kalau tidak ditambahkan fasilitas untuk
membuat laporan (reports), karena laporan merupakan fasilitas yang kita berikan kepada
user untuk melihat (menampilkan) atau mencetak data yang telah disimpan.
Java telah didukung oleh reporting library yang terkenal, yaitu Jasper Report,
beserta file pendukung reporting lainnnya. Jasper Report merupakan file library, jadi
untuk menggunakannya diperlukan software pendukung yaitu iReport.
4.1 iReport
iReport adalah software yang digunakan untuk membuat dan mendesain template
laporan (report) dengan tampilan GUI, sehingga kita tidak perlu membuat file XML secara
manual untuk template laporan (report). iReport dapat melakukan koneksi secara dinamis
dengan banyak software database, seperti MySQL, SQL Server, Oracle dan lain-lain.
Software iReport dapat di-download di http://sourceforge.net/projects/ireport/.
Versi terbaru dari iReport adalah versi 4.5.0. iReport juga tersedia dalam bentuk plugin
untuk NetBeans. Plugin iReport untuk NetBeans dapat di akses dari
http://plugins.netbeans.org/. Karena pada materi sebelumnya kita menggunakan
NetBeans, maka pada pembahasan ini kita gunakan plugin iReport untuk NetBeans.
Untuk menambahkan plugin ke NetBeans, pilih menu Tools >> Plugins dan pilih tab
Downloaded seperti gambar 4.1 berikut ini:
Klik tombol Add Plugins, kemudian pilih semua file plugin yang telah diekstrak,
sehingga tampil seperti gambar di bawah ini:
Selanjutnya klik tombol Install, maka akan tampil kotak dialog seperti gambar 4.3
berikut ini:
Lanjutkan dengan mengklik tombol Next atau Continue sampai selesai install.
Selanjutnya klik tombol Next, sehingga tampil kotak dialog untuk memilih layout
laporan seperti gambar berikut ini:
Pilih Blank A4 dan klik tombol Next, isikan NilaiReport.jrxml pada File Name
sehingga seperti gambar dibawah ini:
Klik tombol Next, sehingga tampil kotak dialog setting koneksi seperti gambar 4.7
berikut ini:
Klik tombol New untuk membuat koneksi baru ke database, maka akan tampil
pilihan data source :
Pada kotak Input teks Name diisi dengan nama koneksi yang akan kita buat, yaitu
sistempenilaianmahasiswaconnection. Pada JDBC Driver pilih driver database yang kita
gunakan, yaitu MySQL (com.mysql.jdbc.Driver). JDBC URL dapat langsung diketik
jdbc:mysql://localhost/dbsistempenilaianmahasiswa, atau dengan mengisi Server Address
dengan localhost dan Database dengan dbsistempenilaianmahasiswa, kemudian mengklik
tombol Wizard. Isi User name dan Password sesuai dengan user name dan password
MySQL dan beritanda check pada save password.
Klik tombol Test untuk melakukan tes koneksi, jika koneksi berhasil, maka dapat
dilanjutkan ketahap berikutnya dengan mengklik tombol Save.
Klik tombol Design Query, double klik tbnilai, tbmahasiswa dan tbmatakuliah,
buatlah relasi dengan melakukan drag field nim dan kodematakuliah dari tabel tbnilai ke
field nim pada tabel tbmahasiswa dan field kodematakuliah pada tabel tbmatakuliah
sehingga tampil seperti gambar berikut ini:
ORDER BY
tbmahasiswa.`semester` ASC,
tbmahasiswa.`kelas` ASC,
tbmahasiswa.`nama` ASC
Selanjutnya klik tab designer, klik tombol Yes jika tampil kotak dialog untuk
menggunakan perubahan seperti gambar 4.13 berikut ini:
Untuk mengakhiri design query, klik tombol Ok sehingga tampil kotak dialog seperti
gambar 4.14 di bawah ini:
Klik tombol next, kemudian pilih field yang akan ditampilkan seperti gambar 4.15
berikut ini:
Klik tombol Next. Untuk pengelompokan (Group), atur seperti gambar berikut ini:
Selanjutnya klik tombol Finish untuk mengakhiri report wizard. Klik jendela Report
Inspector dan klik tanda + disebelah kiri Fields sehingga seperti gambar di bawah ini:
Klik pada toolbar simbol penyimpanan seperti gambar 4.19 untuk mengedit SQL
statement.
SELECT
tbnilai.`nim` AS tbnilai_nim,
tbnilai.`kodematakuliah` AS tbnilai_kodematakuliah,
tbnilai.`tugas` AS tbnilai_tugas,
tbnilai.`uts` AS tbnilai_uts,
tbnilai.`uas` AS tbnilai_uas,
(0.2*tbnilai.`tugas`+0.35*tbnilai.`uts`+0.45*tbnilai.`uas`) as
tbnilai_nilaiakhir,
tbmahasiswa.`nama` AS tbmahasiswa_nama,
tbmahasiswa.`semester` AS tbmahasiswa_semester,
tbmahasiswa.`kelas` AS tbmahasiswa_kelas,
tbmatakuliah.`namamatakuliah` AS tbmatakuliah_namamatakuliah,
tbmatakuliah.`jumlahsks` AS tbmatakuliah_jumlahsks
FROM
`tbmahasiswa` tbmahasiswa INNER JOIN `tbnilai` tbnilai ON
tbmahasiswa.`nim` = tbnilai.`nim`
INNER JOIN `tbmatakuliah` tbmatakuliah ON tbnilai.`kodematakuliah`
= tbmatakuliah.`kodematakuliah`
ORDER BY
tbmahasiswa.`semester` ASC,
tbmahasiswa.`kelas` ASC,
tbmahasiswa.`nama` ASC
Tambahkan group band dengan cara klik kanan pada tbmahasiswa_semester Group
Header, kemudian pilih Add Band seperti gambar 4.20. Lanjutkan dengan menambahkan
group band untuk tbmahasiswa_kelas Group Header dan tbnilai_nim Group Header.
Beri tanda check pada properti start on new page dari Group Header
tbmahasiswa_semester dan tbmahasiswa_kelas.
Atur desain template laporan dengan melakukan drag field dari Report Inspector
dan komponen dari palette sehingga terbentuk seperti berikut ini:
<textField evaluationTime="Report">
<reportElement x="525" y="0" width="30" height="20"/>
<textElement/>
<textFieldExpression><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpressio
n>
</textField>
Agar laporan yang dibuat dengan jasper report dapat diekspor ke file dengan format
pdf, tambahkan library iText (misalnya iText-2.1.7.jar). Jika ingin dapat di ekspor ke file
excel, tambahkan library poi (misalnya poi-3.6.jar atau poi-3.7-20101029.jar).
if (formLaporanNilai.isVisible()) {
try {
formLaporanNilai.setSelected(true);
} catch (Exception ex) {}
} else {
formLaporanNilai = new FormLaporanNilai();
MDIDesktopPane.add(formLaporanNilai);
formLaporanNilai.setVisible(true);
}
Di dalam class Nilai, buatlah metode cetakLaporan dengan script seperti berikut ini:
try{
Class.forName(Koneksi.driver);
} catch (Exception ex){
adaKesalahan = true;
JOptionPane.showMessageDialog(null,"JDBC Driver tidak ditemukan
atau rusak\n"+ex,"Kesalahan",JOptionPane.ERROR_MESSAGE);
}
if (!adaKesalahan){
try {
cn = DriverManager.getConnection(Koneksi.database +"?user="
+Koneksi.user+ "&password="+Koneksi.password+"");
} catch (Exception ex) {
adaKesalahan = true;
JOptionPane.showMessageDialog(null,"Koneksi ke "+
Koneksi.database +" gagal\n"+ex,"Kesalahan",JOptionPane.ERROR_MESSAGE);
}
if (!adaKesalahan){
String SQLStatement="";
try {
Statement statement = cn.createStatement();
if (semester!=0){
SQLStatement = SQLStatement + " where
tbmahasiswa.`semester`="+semester;
if (!kelas.equals("")){
SQLStatement = SQLStatement + " and
tbmahasiswa.`kelas`='"+kelas+"'";
}
} else {
if (!kelas.equals("")){
SQLStatement = SQLStatement + " where
tbmahasiswa.`kelas`='"+kelas+"'";
}
}
ResultSet resultSet =
statement.executeQuery(SQLStatement);
JRResultSetDataSource resultSetDataSource = new
JRResultSetDataSource(resultSet);
JasperViewer.viewReport(cetak,false);
} catch (Exception ex) {
JOptionPane.showMessageDialog(null,"\nGagal mencetak\n"
+ex,"Kesalahan",JOptionPane.ERROR_MESSAGE);
}
}
}
}
import javax.swing.JOptionPane;
import java.util.HashMap;
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.engine.design.JasperDesign;
import net.sf.jasperreports.engine.xml.JRXmlLoader;
import net.sf.jasperreports.view.JasperViewer;
if (kelasComboBox.getSelectedIndex()==0){
kelas="";
} else {
kelas = kelasComboBox.getSelectedItem().toString();
}
nilai.cetakLaporan(semester,kelas);
}
int i;
char c[] = new char[1];
semesterComboBox.removeAllItems();
semesterComboBox.addItem("Semua");
for (i=0;i<14;i++){
semesterComboBox.addItem(i+1);
}
kelasComboBox.removeAllItems();
kelasComboBox.addItem("Semua");
for (i=0;i<26;i++){
c[0]=(char)(i+65);
kelasComboBox.addItem(new String(c));
}
import controller.NilaiController;
dengan cara mengklik pada bola lampu di sebelah kiri dan pilih add import for
import controller.NilaiController.
Terakhir, di dalam metode actionPerformed dari tutupButton tambahkan
pernyataan:
dispose();
Referensi:
1. Supriyanto, (2010), Pemrograman Database Menggunakan Java & MySQL Untuk
Pemula, Cetakan Pertama, Media Kita
2. Hariyanto, Bambang, (2007), Esensi-esensi Bahasa Pemrograman Java, Edisi 2,
Informatika Bandung, November 2007.
3. Utomo, EkoPriyo, (2009), Panduan Mudah Mengenal Bahasa Java, Yrama Widya,
Juni 2009.
4. Tim Pengembang JENI, JENI 1-6, Depdiknas, 2007
5. http://www.netbeans.com/
6. http://www.oracle.com/