Rabu, 22 Agustus 2012

Menampilkan JasperReport iReport pada Java NetBeans (Pemrograman Java Desktop)

Setelah bisa Membuat Report JasperReport dengan iReport sehingga siap pakai. Maka kali ini coba kita gunakan Report tersebut untuk ditampilkan pada Aplikasi Java Desktop yang dibuat menggunakan NetBeans.

Pertama kita buat Project Baru dengan cara Klik File-New Project



Kemudian Pilih Java - Java Application, klik Next






Masukkan nama Project, kemudian hilangkan cek (uncheck) pada Create Main Class. Klik Finish




Jadilah Project Baru.




Pada Project Tree View sebelah kiri, klik kanan pilih Properties.




Pada Dialog Project Properties, pilih Libraries. Kemudian klik Tombol Add Library.




Pada Dialog Add Library pilih MySQL JDBC Driver, kemudian klik Add Library.




Kemudian setelah kembali ke Jendela Project Properties, klik Add JAR/Folder. Pilih Folder tempar Instalasi iReport, misal di C:\Program Files\JasperSoft\iReport-4.7.0\ireport\modules\ext.




Kemudian Pilih Library JAR berikut : commons-beanutils.jar, commons-collections.jar, commons-digester.jar, commons-logging.jar, groovy-all.jar, iText.jar, japerreports.jar, spring.jar. Klik Open




Maka akan kembali ke Window NetBeans dan tampak Library sudah masuk semua.




Kemudian kita buat Jendela Baru di Aplikasi ini dengan pada Project TreeView klik kanan Source Packages, pilih New - Folder.




Masukkan nama Class dan nama Package nya. Klik Finish




Kemudian pada Pallete, Swing Controls pilih JButton.




Kemudian tambahkan satu buah JButton ke Form, dan klik kanan pilih Events-Action-actionPerformed.




Setelah itu ketikkan kode program berikut di dalam Event-nya, tetapi jangan lupa tambahkan dahulu import di bagian atas class :

// http://cariprogram.blogspot.com
// nuramijaya@gmail.com


import java.awt.Dimension;
import java.awt.Toolkit;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import javax.swing.JDialog;
import net.sf.jasperreports.engine.JRResultSetDataSource;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.swing.JRViewer;

Kemudian barulah masukkan kode program ke dalam Events-nya :


    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
        // TODO add your handling code here:
        try {
            //Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            //String url = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=" + 
            //        System.getProperties().getProperty("java.class.path").split(";")[System.getProperties().getProperty("java.class.path").split(";").length - 1] + 
            //        "\\world.mdb" + ";DriverID=22;READONLY=true}"; 
                    //JOptionPane.showMessageDialog(rootPane, url, "", JOptionPane.INFORMATION_MESSAGE);

            Class.forName("com.mysql.jdbc.Driver"); 

            String url = "jdbc:mysql://localhost:3306/rumahsakit";
            Connection cn = DriverManager.getConnection (url, "root", "");
        
            String SQL = "SELECT    dokter.`nip` AS dokter_nip,     dokter.`nama` AS dokter_nama,     dokter.`alamat` AS dokter_alamat,     dokter.`tgllahir` AS dokter_tgllahir,    dokter.`tunjangan` AS dokter_tunjangan FROM `dokter` dokter";

            Statement st = cn.createStatement();
            ResultSet rs = st.executeQuery(SQL);
  
            JasperPrint jasperPrint;       
            JRResultSetDataSource jrRS = new JRResultSetDataSource (rs);            
            JasperReport jasperReport = JasperCompileManager.compileReport(System.getProperties().getProperty("java.class.path").split(";")[System.getProperties().getProperty("java.class.path").split(";").length - 1] + "\\reportdokter.jrxml");          
            jasperPrint = JasperFillManager.fillReport(jasperReport, null, jrRS);
            JRViewer aViewer = new JRViewer(jasperPrint);                  
            JDialog viewer = new JDialog();
            viewer.setTitle(".: Jasper Report :.");             
            viewer.setAlwaysOnTop(true);
            viewer.getContentPane().add(aViewer);                  
            Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();     
            viewer.setBounds(0,0,screenSize.width, screenSize.height);
            viewer.setVisible(true);              

            st.close();
            cn.close();
          } catch(Exception e)
          {
               System.out.println(e);
          }

    }//GEN-LAST:event_jButton1ActionPerformed






Pada Project TreeView sebelah kiri, pilih nama Projectnya, klik kanan pilih Build.




Kemudian kita masukkan dahulu file Report yang pernah kita buat, dalam ini adalah reportdokter.jasper dan reportdokter.jrxml. Copy kemudian masukkan ke Direktori Project di dalam folder dist




Copy kemudian masukkan juga file  reportdokter.jasper dan reportdokter.jrxml ke Direktori Project di dalam folder build/classes




Untuk menjalankan Aplikasi bisa dilakukan pada Project TreeView, klik kanan nama Form, pilih Run File




Setelah muncul aplikasinya, coba klik tombol Cetak




Akan ditampilkan Jendela Preview Cetak dengan JasperReport



Project selengkapnya dapat didownload disini. Pada Google - Docs, klik File-Download

Semoga bermanfaat.

9 komentar:

  1. gima ya caranya untuk membuat laporan bulanan dan perperiode

    BalasHapus
    Balasan
    1. Sebenarnya ada beberapa cara yang bisa dilakukan, tetapi saya pribadi lebih suka memodifikasi saja perintah SQL yang ada di program di atas, jadi tidak perlu mengubah JasperReport nya, cukup kode program di Java.
      Pada contoh di atas misalnya kita ingin menampilkan data dokter dengan TanggalLahir pada periode Januari 1980, maka edit pada baris perintah SQL menjadi seperti ini :
      ...
      String SQL = "SELECT dokter.`nip` AS dokter_nip, dokter.`nama` AS dokter_nama, dokter.`alamat` AS dokter_alamat, dokter.`tgllahir` AS dokter_tgllahir, dokter.`tunjangan` AS dokter_tunjangan FROM `dokter` dokter WHERE MONTH(tgllahir) = 1 AND YEAR(tgllahir) = 1980";
      ...
      Dimana angka bulan 1 (Januari) dan tahun 1980 bisa diambilkan dari sebuah ComboBox atau EditText, misal :
      ...WHERE MONTH(tgllahir) = " + edBln.getText() + " AND YEAR(tgllahir) = " + edThn.getText();
      Semoga membantu.

      Hapus
  2. kalau mengganti nama dokter itu dengan yang lain itu gimana gan ?

    BalasHapus
  3. Coba membuat tabel dengan nama lain saja mbak, atau mengganti perintah SQL nya dengan nama kolom yang lain. Kemudian ikuti langkah dari awal sampai akhir. Semoga berhasil..

    BalasHapus
  4. Mas minta link download pluginnya donk punya saya gak cocok terus sama import diatas

    BalasHapus
  5. mas bagaimana cara agar fungsi cetak ini bisa jalan setelah dicompler menjadi file exe...

    soalnya punyaku nggak mau jalan jika tombol cetaknya di klik..
    kalau menjalankan projectnya di netbeans bisa jalan tombol cetaknya,,
    mohon pencerahannya mas admin ?

    BalasHapus
  6. gan, minta sqlnya gan,,,

    BalasHapus
  7. Terimakasih Sangat membantu,,,

    BalasHapus