Tutorial Netbeans dan JasperReport

30
Tutorial Netbeans dan JasperReport ©2006 Burhan Yang (last modified: Dec 3, 2006) Source Code: - Face Framework (simpan / ubah nama file menjadi Face.zip, soalnya di blok ama servernya T_T) - Project Inventory (simpan / ubah nama file menjadi Inventory.zip) - inventory.mdb (simpan / ubah nama file menjadi Inventory.mdb) Untuk anda yang ingin mempraktekkan langsung tutorial ini disarankan menggunakan software berikut: - Windows XP - Netbeans 5.0 (Saat tulisan ini dibuat Netbeans sudah mencapai versi 5.5) - iReport 1.2.7 (Saat tulisan ini dibuat 1.2.7 merupakan versi terbaru dari iReport) - Microsoft Access (tutorial ini menggunakan Microsoft Access 2003) - JDK 1.5 Supaya lebih cepat dan praktis saya akan mengunakan MS Access sebagai database, dan untuk itu kita membutuhkan Windows XP karena MS Access tidak dapat berjalan secara native di Linux. Netbeans bisa anda download di http://www.netbeans.org dan iReport bisa di download di http://ireport.sourceforge.net/. 1. Database Preparation Pertama kita harus menyiapkan database yg akan digunakan. Buat sebuah database dengan 2 tabel sbb: Nama file: C:\DB\Inventory.mdb Tabel: JenisBarang Field Name Data Type Field Size Kode Text 5 Keteranga Text 50

Transcript of Tutorial Netbeans dan JasperReport

Page 1: Tutorial Netbeans dan JasperReport

Tutorial Netbeans dan JasperReport©2006 Burhan Yang (last modified: Dec 3, 2006)

Source Code:- Face Framework (simpan / ubah nama file menjadi Face.zip, soalnya di blok ama servernya T_T)- Project Inventory (simpan / ubah nama file menjadi Inventory.zip)- inventory.mdb (simpan / ubah nama file menjadi Inventory.mdb)

Untuk anda yang ingin mempraktekkan langsung tutorial ini disarankan menggunakan software berikut:- Windows XP - Netbeans 5.0 (Saat tulisan ini dibuat Netbeans sudah mencapai versi 5.5) - iReport 1.2.7 (Saat tulisan ini dibuat 1.2.7 merupakan versi terbaru dari iReport) - Microsoft Access (tutorial ini menggunakan Microsoft Access 2003) - JDK 1.5

Supaya lebih cepat dan praktis saya akan mengunakan MS Access sebagai database, dan untuk itu kita membutuhkan Windows XP karena MS Access tidak dapat berjalan secara native di Linux. Netbeans bisa anda download di http://www.netbeans.org dan iReport bisa di download di http://ireport.sourceforge.net/. 

1. Database Preparation

Pertama kita harus menyiapkan database yg akan digunakan. Buat sebuah database dengan 2 tabel sbb:

Nama file: C:\DB\Inventory.mdb

Tabel: JenisBarang

Field Name Data Type Field SizeKode Text 5Keterangan Text 50

Tabel: Barang

Field Name Data Type Field SizeKode Text 10Nama Text 50Harga Number DoubleJumlah Number Long Integer Jenis Text 5

Buat relationships antar tabel sbb:

Page 2: Tutorial Netbeans dan JasperReport

Jangan lupa masukkan record sbb:

Tabel: JenisBarang

Tabel: Barang

 

2. Creating Netbeans Project

Setelah menyiapkan database yg akan digunakan, sekarang kita buat project baru di Netbeans.

Buat folder baru : C:\Project

Page 3: Tutorial Netbeans dan JasperReport

Jalankan Netbeans, pilih File -> New Project... , pilih Java Application

Tekan 'Next', masukkan nama dan lokasi project sbb:

Tekan 'Finish', dan di window Projects akan tampil package 'inventory' sbb:

Perhatikan, didalam class Main.java ada potongan code sbb:

Page 4: Tutorial Netbeans dan JasperReport

public static void main(String[] args) {      // TODO code application logic here}

Ketika program dieksekusi, JVM akan mencari Main Class utk dijalankan. Setelah Main Class ditemukan maka fungsi main akan dijalankan. Anda bisa merubah Main Class dari project anda melalui Project Properties.

 

3. Basic Application

Sebuah aplikasi desktop minimal memiliki sebuah form yg akan ditampilkan ketika program dijalankan. Sekarang kita akan menambahkan sebuah form ke dalam project kita.

Pilih File -> New File... , pilih JFrame Form

Page 5: Tutorial Netbeans dan JasperReport

Tekan 'Next' lalu isi nama class dan package seperti gambar berikut:

Tekan 'Finish' dan di window Projects akan terlihat frmMain.java

Masukkan code berikut ke dalam Main.java

Page 6: Tutorial Netbeans dan JasperReport

public static void main(String[] args) {      // TODO code application logic here      frmMain frm = new frmMain();      frm.setTitle("Inventory");      frm.setSize(500,300);      frm.setLocationRelativeTo(null);      frm.setVisible(true);}

Tekan F6 untuk menjalankan program, maka akan tampil dilayar sbb:

Untuk mengganti icon pada form, masukkan file icon (gif atau png) ke dalam project:

Masukkan code berikut ke dalam frmMain.java

Page 7: Tutorial Netbeans dan JasperReport

/** Creates new form frmMain */public frmMain() {      initComponents();

      // set icon      this.setIconImage(new ImageIcon(getClass().getResource("/inventory/resources/tux.png")).getImage());

}

Bila anda melihat error seperti ini berarti ada referensi class yg belum didefinisikan.

Caranya gampang, klik tombol kanan mouse terus pilih 'Fix Imports' atau tekan Alt + Shift + F. Maka secara otomatis Netbeans akan menambahkan code berikut:

import javax.swing.ImageIcon;

Tekan F6 untuk menjalankan program, maka akan tampil dilayar sbb:

Page 8: Tutorial Netbeans dan JasperReport

Untuk icon disarankan menggunakan format gif atau png dengan ukuran gambar 16 x 16 pixel. 

4. JTable

Kita akan coba menampilkan isi dari database yg telah kita buat ke dalam sebuah JTable. Dari window Palette pilih JTable dan masukkan ke dalam frmMain.

Sekarang kita akan coba untuk meng-customize JTable. Caranya gampang, lihat gambar dibawah:

Page 9: Tutorial Netbeans dan JasperReport

Untuk saat ini kita set jumlah row sebanyak 50 walaupun seharusnya jumlah row di sesuaikan dengan jumlah data yang ada.

Page 10: Tutorial Netbeans dan JasperReport

Ubah gridColor dari JTable menjadi [204,204,204] sehingga warna gridnya seperti gambar diatas. Tekan F6 untuk menjalankan program, maka akan tampil dilayar sbb:

Bila kita tidak mendefinisikan Look & Feel maka secara default Look & Feel yg digunakan adalah Metal. Sekarang coba tambahkan code berikut kedalam Main.java

public static void main(String[] args) {      // TODO code application logic here

Page 11: Tutorial Netbeans dan JasperReport

      initializeLookAndFeel();

      frmMain frm = new frmMain();      frm.setTitle("Inventory");      frm.setSize(500,300);      frm.setLocationRelativeTo(null);      frm.setVisible(true);}

public static void initializeLookAndFeel() {      try {            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());      } catch (InstantiationException ex) {            ex.printStackTrace();      } catch (IllegalAccessException ex) {            ex.printStackTrace();      } catch (UnsupportedLookAndFeelException ex) {            ex.printStackTrace();      } catch (ClassNotFoundException ex) {            ex.printStackTrace();      }}

Tekan F6 untuk menjalankan program.

Perhatikan Look & Feel yang digunakan berubah menjadi default dari Windows. Bila dijalankan di Linux maka secara otomatis akan mengikuti default dari Linux. Anda juga bisa menggunakan

Page 12: Tutorial Netbeans dan JasperReport

Look & Feel lain yg banyak tersebar di Internet. 

5. Data Access

Copy source code project Face ke dalam C:\Project lalu buka project tsb di Netbeans. Masukkan project Face ke dalam libraries dari project Inventory.

Setelah selesai maka di bagian Libraries akan muncul icon project Face.

Sekarang saya akan menjelaskan cara pemakaian Face Framework.

Page 13: Tutorial Netbeans dan JasperReport

Ada 4 operasi dasar yg biasa dilakukan dengan database atau sering juga disebut CRUD (Create, Read, Update, Delete). Untuk melakukan CRUD kita akan memakai AccessHelper.

Berikut ini fungsi-fungsi yg sering dipakai di AccessHelper:

ExecuteUpdateUntuk melakukan Create, Update, Delete.

ExecuteDataTableUntuk melakukan Read. Hasil yg dikembalikan berupa keseluruhan result set (DataTable).

ExecuteScalarUntuk melakukan Read. Hasil yg dikembalikan hanya row pertama dan column pertama dari result set (Object).

Kali ini kita akan memakai ExecuteDataTable untuk membaca tabel Barang lalu menampilkan isinya kedalam JTable. Tetapi sebelumnya kita harus membuat sebuah class yg akan bertindak sebagai base class untuk class data access yang lain.

Buat package 'inventory.data' lalu buat java class 'BaseDataAccess.java'

Masukkan code berikut ke dalam BaseDataAccess.java

public class BaseDataAccess {

      String fileName = "C:/DB/Inventory.mdb";      String connURL = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=" +                         fileName + ";DriverID=22;READONLY=true}";

Page 14: Tutorial Netbeans dan JasperReport

      private Connection c = null;

      protected Connection getConnection() {return c;}

      protected boolean OpenConnection() {            try {                  Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");                  c = DriverManager.getConnection(connURL,"","");            }            catch (Exception ex) {                  ex.printStackTrace();                  return false;            }            return true;      }

      protected boolean CloseConnection() {            try {                  if (c != null) {                        if (!c.isClosed()) {c.close();}                  }                  c = null;            }            catch (SQLException ex) {                  ex.printStackTrace();                  return false;            }            return true;      }

}

Sekarang kita buat class 'daBarang.java'

Page 15: Tutorial Netbeans dan JasperReport

Masukkan code berikut ke dalam daBarang.java

public class daBarang extends BaseDataAccess {

      /** Creates a new instance of daBarang */      public daBarang() {      }

      public boolean testConnection() {            if (this.OpenConnection()) {                  // koneksi database berhasil, jgn lupa tutup koneksi                  this.CloseConnection();                  return true;            }            return false;      }

}

Sekarang buka frmMain.java dan tambahkan 2 buah JButton seperti gambar berikut:

Page 16: Tutorial Netbeans dan JasperReport

Masukkan code berikut ke event 'actionPerformed' dari btnTestConnection

private void btnTestConnectionActionPerformed(java.awt.event.ActionEvent evt) {      daBarang da = new daBarang();      if (da.testConnection()) {            // koneksi berhasil, tampilkan pesan berhasil            MessageHelper.showMessage(this, "Koneksi ke database berhasil");      } else {            // koneksi gagal, tampilkan pesan gagal            MessageHelper.showMessage(this, "Koneksi ke database gagal");      }}

Sekarang kita coba jalankan program dan tekan tombol 'Test Connection'

Page 17: Tutorial Netbeans dan JasperReport

Selamat !! anda sudah berhasil membuat koneksi ke database.

Sekarang tambahkan code berikut ke dalam daBarang.java

public DataTable getAllBarang() {

      DataTable dtb = null;

      DataColumn[] dc = new DataColumn[4];      dc[0] = new DataColumn("Kode", JDBCType.VARCHAR);      dc[1] = new DataColumn("Nama", JDBCType.VARCHAR);      dc[2] = new DataColumn("Harga", JDBCType.DOUBLE);      dc[3] = new DataColumn("Jumlah", JDBCType.BIGINT);

      String sql = "SELECT Kode,Nama,Harga,Jumlah FROM Barang";

      try {            if (this.OpenConnection()) {                  dtb = AccessHelper.ExecuteDataTable(this.getConnection(), sql, dc);            }      } catch (Exception ex) {            ex.printStackTrace();      } finally {            this.CloseConnection();      }

Page 18: Tutorial Netbeans dan JasperReport

      return dtb;}

Tambahkan juga code berikut ke event 'actionPerformed' dari btnLoadData

private void btnLoadDataActionPerformed(java.awt.event.ActionEvent evt) {

      daBarang da = new daBarang();      DataTable dtb = da.getAllBarang();

      if ((dtb != null) && (dtb.getRowCount() > 0)) {            int totalRow = dtb.getRowCount();            for (int i=0; i < totalRow; i++) {                  jTable1.setValueAt(dtb.getValue(i,"Kode"), i, 0);                  jTable1.setValueAt(dtb.getValue(i,"Nama"), i, 1);                  jTable1.setValueAt(dtb.getValue(i,"Harga"), i, 2);                  jTable1.setValueAt(dtb.getValue(i,"Jumlah"), i, 3);            }      }

}

Sekarang coba jalankan program dan tekan tombol 'Load Data'

Page 19: Tutorial Netbeans dan JasperReport

Selamat !! anda sudah berhasil membuat koneksi ke database, lalu membaca record yg terdapat dalam tabel Barang dan menampilkannya ke dalam JTable. Saya hanya akan membantu anda sampai tahap ini. Untuk operasi Create, Update dan Delete akan saya bahas di lain kesempatan. 

6. iReport for JasperReport

Sekarang kita akan membuat JasperReport menggunakan iReport.

Jalankan iReport, pilih File -> New Document

Ubah nama report menjadi 'DaftarBarang' lalu tekan OK. Simpan report dengan nama C:\Jasper\DaftarBarang.jrxml.

Pilih Data -> Connections / Datasources, lalu pilih New

Page 20: Tutorial Netbeans dan JasperReport

Beri nama Inventory. Untuk JDBC Driver pilih 'sun.jdbc.odbc.JdbcOdbcDriver'. Sedangkan untuk JDBC URL isi dengan 'jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=C:/DB/Inventory.mdb;DriverID=22;READONLY=true}'. Tekan Test untuk mengetahui apakah koneksi database berhasil atau gagal. Setelah test koneksi database berhasil tekan save. Setelah itu jangan lupa column default diberi tanda centang.

Page 21: Tutorial Netbeans dan JasperReport

Pilih Data -> Report query. Masukkan sintaks SQL seperti gambar dibawah.

Secara otomatis iReport akan membuat fields sesuai dengan query yang kita berikan. Pilih View -> Fields untuk melihat hasilnya.

Page 22: Tutorial Netbeans dan JasperReport

Pilih View -> Report Groups lalu tekan New. Beri nama 'JenisBarang'. Masukkan sintaks seperti gambar dibawah.

Masukkan fields dan static text seperti gambar dibawah ini. Jangan lupa Band yang tidak digunakan di set height-nya menjadi nol.

Page 23: Tutorial Netbeans dan JasperReport

Setelah selesai pilih Build -> Execute (with active connection).

Langkah selanjutnya adalah melakukan kompilasi DaftarBarang.jrxml menjadi DaftarBarang.jasper, caranya pilih Build -> Compile. Perhatikan window output untuk melihat

Page 24: Tutorial Netbeans dan JasperReport

lokasi file hasil kompilasi. Copy file tersebut ke directory C:\Jasper\.  

7. JasperReport in Action

Sekarang kita telah sampai di tahap terakhir yaitu menampilkan JasperReport di dalam aplikasi kita. Pertama kita harus menyiapkan file jar atau libraries yang akan digunakan. Cari directory tempat installasi iReport yang anda gunakan. Copy semua file jar (sekitar 27 MB) yang berada di folder lib ke C:\lib\jasper\. Sebetulnya tidak semua file jar dibutuhkan tetapi supaya mudah untuk saat ini kita copy semua jar yang ada. Atau cara kedua, anda download distribusi JasperReport (jasperreports-1.2.7-project.zip), esktrak lalu copy semua file jar yang ada di folder lib (sekitar 15 MB). Saya sarankan anda gunakan opsi kedua.

Pilih Tools -> Library Manager, lalu tekan New Library... Beri nama 'JasperReport' lalu tekan Add JAR/Folder dan pilih folder C:\lib\jasper\.

Jangan lupa masukkan referensi libraries JasperReport ke project.

Page 25: Tutorial Netbeans dan JasperReport

Buka daBarang.java lalu tambahkan code berikut:

public DataTable getDaftarBarang() {

      DataTable dtb = null;

      DataColumn[] dc = new DataColumn[5];      dc[0] = new DataColumn("Kode", JDBCType.VARCHAR);      dc[1] = new DataColumn("Nama", JDBCType.VARCHAR);      dc[2] = new DataColumn("Harga", JDBCType.DOUBLE);      dc[3] = new DataColumn("Jumlah", JDBCType.BIGINT);      dc[4] = new DataColumn("Keterangan", JDBCType.VARCHAR);

      String sql = "SELECT Barang.Kode, Barang.Nama, Barang.Harga, Barang.Jumlah, JenisBarang.Keterangan " +                        "FROM Barang INNER JOIN JenisBarang ON Barang.Jenis = JenisBarang.Kode";

      try {            if (this.OpenConnection()) {                  dtb = AccessHelper.ExecuteDataTable(this.getConnection(), sql, dc);            }      } catch (Exception ex) {            ex.printStackTrace();      } finally {            this.CloseConnection();      }

      return dtb;}

Tambahkan sebuah JDialog Form ke dalam project. Pilih File -> New File... , pilih JDialog Form. Beri nama frmReport.java.

Page 26: Tutorial Netbeans dan JasperReport

Masukkan sebuah JScrollPane yang akan berfungsi sebagai parent bagi JRViewer dan beri nama pnlViewer. Tambahkan code berikut:

 

 

bersambung...