Reporting dengan NetBeans

Kemaren dulu ada pertanyaan di milis netbeans-indonesia@yahoogroups tentang masalah Report di Netbeans. Inti kasusnya adalah seperti berikut:

Aplikasi beserta report-nya jalan dengan sukses pada komputer si programmer, tapi ketika si programmer memindahkan aplikasi-nya ke komputer lain reportnya tidak mau jalan atau tidak mau tampil.

OK sekarang mari kita coba membuat sebuah latihan tentang reporting menggunakan iReport dan NetBeans IDE dan peralatan-peralatan yang perlu dipersiapkan adalah sebagai berikut :
- NetBeans 5.5
- iReport 1.3.1
- MySQL Server (atau bisa juga database server yang lain)
- JDK 1.6

Setelah peralatan telah siap, mari kita buat latihannya dan langkah-langkahnya adalah sebagai berikut:

  1. Bikinlah sebuah New Project dan berilah nama ReportingInNetBeans.
  2. Pada project inspector, klik kanan root project kemudian pilih New > JFrame Form kemudian pada jendela New JFrame isikan Frame Report pada Class Name, dan pada kolom isian Package pilihlah reportinginnetbeans. Setelah itu tambahkanlah beberapa komponen pada JFrame tersebut sehingga tampilannya menjadi seperti gambar dibawah ini:
    jframe_report
    Click to large
  3. Setelah mengatur tampilan JFrame seperti pada gambar diatas, sekarang tekanlah tombol SHIFT+F11 agar NetBeans membuatkan sebuah direktori distribusi untuk kita yaitu direktori dist. Setelah itu, masuklah pada files inspector kemudian buatlah sebuah direktori yaitu direktori Report dibawah direktori dist yang berfungsi untuk menampung seluruh file template yang kita desain pada iReport dan tampilan dari langkah ke 3 ini terlihat seperti gambar dibawah ini:
    direktori_dist_report
    Click to large
  4. Setelah membuat sebuah direktori Report sekarang waktunya untuk mengkonfigurasi file build-impl.xml agar ketika kita melakukan proses Clean direktori Report ini tidak ikut terhapus. Sekarang bukalah file build-impl.xml yang terdapat pada direktori nbproject seperti gambar dibawah ini:
    build-impl-xml
    Click to large

    Setelah file build-impl.xml terbuka, sekarang carilah CLEANUP SECTION seperti dibawah ini:

    526
    527
    528
    529
    530
    531
    532
    533
    534
    535
    536
    537
    538
    539
    540
    
       <!--
        ===============
        CLEANUP SECTION
        ===============
        -->
        <target name="deps-clean" depends="init" unless="no.deps"/>
        <target name="-do-clean" depends="init">
            <delete dir="${build.dir}"/>
            <delete dir="${dist.dir}"/>
        </target>
        <target name="-post-clean">
            <!-- Empty placeholder for easier customization. -->
            <!-- You can override this target in the ../build.xml file. -->
        </target>
        <target name="clean" depends="init,deps-clean,-do-clean,-post-clean" description="Clean build products."/>

    Setelah itu editlah baris 534 sehingga hasilnya menjadi seperti dibawah ini:

    526
    527
    528
    529
    530
    531
    532
    533
    534
    535
    536
    537
    538
    539
    540
    541
    
    	<!--
        ===============
        CLEANUP SECTION
        ===============
        -->
        <target name="deps-clean" depends="init" unless="no.deps"/>
        <target name="-do-clean" depends="init">
            <delete dir="${build.dir}"/>
            <delete file="${dist.jar}"/>
            <delete dir="${dist.javadoc.dir}"/>
        </target>
        <target name="-post-clean">
            <!-- Empty placeholder for easier customization. -->
            <!-- You can override this target in the ../build.xml file. -->
        </target>
        <target name="clean" depends="init,deps-clean,-do-clean,-post-clean" description="Clean build products."/>

    Setelah melakukan proses pengeditan seperti diatas simpanlah file konfigurasinya dan tutuplah NetBeans-nya agar mengurangi resource CPU :D dan sekarang waktunya untuk membuat contoh report melalui iReport. :)

  5. Sebelum mulai menggunakan iReport, aturlah dahulu Data Source yang akan digunakan dengan cara pilih Data > Connections/Data Source dan aturlah koneksinya menjadi seperti gambar dibawah ini:
    SettingKoneksiIreport
    Click to large
  6. Setelah selesai mengkonfigurasi Data Source, sekarang buatlah report baru dengan cara menekan File > New Document. Setelah template report muncul, sekarang tentukanlah Report Query yang akan digunakan untuk report ini. Untuk menentukan Report Query yang akan digunakan tekanlah Data > Report Query dan masukkanlah statement SQL sehingga tampilannya menjadi seperti dibawah ini:
    Qry_iReport
    Click to large
  7. Setelah menentukan Report Query, sekarang design-lah report-nya hingga menjadi seperti gambar dibawah ini:
    report_template
    Click to large

    kemudian simpanlah dengan nama Mahasiswa_Report.jrxml pada direktori Report yang telah dibuat pada langkah ke 3 hingga struktur direktori project NetBeans kita menjadi seperti gambar dibawah ini:
    gambar_dir_prj_Nb
    Click to large

  8. Setelah melakukan proses penyimpanan, sekarang coba jalankan report-nya dengan menggunakan active connection dengan cara tekan menu Build > Execute (with active connection) dan jika tidak ada masalah maka report yang telah anda design akan tampak seperti gambar dibawah ini:
    Report_Jadi
    Click to large
  9. Report telah jadi, sekarang coba bukalah project ReportingInNetBeans kemudian pada tombol yang berfungsi untuk menampilkan reportnya berikanlah evet dengan cara klik kanan kemudian pilih Events > Action > actionPerformed kemudian pastekanlah kode dibawah ini:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    
    // TODO add your handling code here:
            jButton1.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
            Connection con = null;
            try {
                String jdbcDriver = "com.mysql.jdbc.Driver";
                Class.forName(jdbcDriver);
     
                String url = "jdbc:mysql://localhost/latihanibatis";
                String user = "root";
                String pass = "rahasia";
     
                con = DriverManager.getConnection(url, user, pass);
                Statement stm = con.createStatement();
     
                try {
                    Map<string, Object> prs = new HashMap<string, Object>();
                    JasperReport JRpt = JasperCompileManager.compileReport("./dist/Report/Mahasiswa_Report.jrxml");
                    JasperPrint JPrint = JasperFillManager.fillReport(JRpt, prs, con);
                    JasperViewer.viewReport(JPrint, false);
                } catch (Exception rptexcpt) {
                    System.out.println("Report Can't view because : " + rptexcpt);
                }
            } catch (Exception e) {
                System.out.println(e);
            }
            jButton1.setCursor(Cursor.getDefaultCursor());

    Setelah itu, coba tekanlah tombol F6 untuk menjalankan projectnya dan jika tidak ada masalah maka report yang telah anda design di iReport akan tampil jika tombol yang berfungsi menampilkan reportnya ditekan :)

  10. Report sudah jalan dengan sangat sempurna di NetBeans, sekarang bagaimana jika kita ingin mencoba aplikasi ini pada komputer lain yang hanya mempunyai JRE saja ? Untuk menjawab pertanyaan ini, sekarang tekanlah tombol SHIFT+F11 agar netbeans membuatkan file *.jar untuk aplikasi kita. Setelah proses CLEAN and BUILD selesai, sekarang cobalah kopikan direktori dist/ ke komputer yang lain dan coba jalankan. Berhubung saya dirumah tidak mempunyai 2 komputer, maka saya kopikan ke user yang lain dan hasilnya seperti berikut :
    Ini tampilan di user anton ( Anggap saja di PC Lain :D )
    Report_di_PC_LAIN
    Click to large

    Ini tampilan di user javamaniac ( Anggap saja di PC Lokal )
    RptDiPCLokal
    Click to large

Silahkan dicoba dikomputer lain kalau tidak percaya, reportnya pasti akan jalan dengan sempurna seperti pada waktu kita jalankan dari NetBeans IDE :)

Resource :
- Sample Project ReportingInNetBeans.zip
- Mahasiswa.sql

  • Share/Bookmark
Print This Post

57 Responses to “Reporting dengan NetBeans”

  1. @khairan: bisa dimasukin di variabel mas, buat dulu 1 variabel dengan nama misalkan result, trs didalam variabel tsb memanggil field yg dr database kemudian bisa dipakai if didalam variabel tsb (di dlm variabel expression) :)

    Utk masalah yg ke 2,coba di cek dulu apakah di direktori yg ditampilkan dipesan error itu file-nya ada atau tidak ?

    @Deny: Apakah pak Deny ingin sampai ada koma-nya ? Soalnya saya ga pernah pakai koma pak. Biasanya sih cuma menambahkan thousand separator ajah sih.

  2. mas saya mau tanya nech..
    tentang masalah report di netbeans.. saya pakek ireport versi 3.1.1,
    setelah saya buat di IDE netbeansnya bisa di tampilkan dan di previus..
    tapi kenapa kok mo di tampilkan di javanya tidak bisa jasper Reportnya tidak mau muncul apa karna pengaruh salah intall ireport ya mass..
    tolong pencerahaannya..

  3. ardy says:

    Mas saya ingin tanya jalan keluar dari pertanyaan alam32 dan Senja yang mempunyai kesalahan seperti
    Terima Kasih Sebelumnya
    Exception in thread “AWT-EventQueue-0″ java.lang.NoClassDefFoundError: org/apache/commons/digester/Digester
    at net.sf.jasperreports.engine.JasperCompileManager.compileReport(JasperCompileManager.java:146)
    at pemesanan.PemesananView.makePreview(PemesananView.java:468)
    at pemesanan.PemesananView.daftarPelangganActionPerformed(PemesananView.java:391)
    at pemesanan.PemesananView.access$1600(PemesananView.java:32)
    at pemesanan.PemesananView$12.actionPerformed(PemesananView.java:250)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
    at javax.swing.AbstractButton.doClick(AbstractButton.java:357)
    at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1220)
    at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1261)
    at java.awt.Component.processMouseEvent(Component.java:6041)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
    at java.awt.Component.processEvent(Component.java:5806)
    at java.awt.Container.processEvent(Container.java:2058)
    at java.awt.Component.dispatchEventImpl(Component.java:4413)
    at java.awt.Container.dispatchEventImpl(Container.java:2116)
    at java.awt.Component.dispatchEvent(Component.java:4243)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
    at java.awt.Container.dispatchEventImpl(Container.java:2102)
    at java.awt.Window.dispatchEventImpl(Window.java:2440)
    at java.awt.Component.dispatchEvent(Component.java:4243)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
    Caused by: java.lang.ClassNotFoundException: org.apache.commons.digester.Digester
    at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
    … 32 more

  4. @ardy: Itu kurang library commons-digester, coba tambahin dulu library-nya :)

  5. ardy says:

    Sudah mas karena sebelumnya menggunakan versi 0.9.1 dan bisa berjalan karena penggabungan tabel nya sudah terlalu banyak dan tidak adanya sum otomatis maka saya upgrade ke versi 3.5.1 beserta project 3.5.1 nya.
    Bagaimana caranya mas??
    thanks

  6. Ocky Galih says:

    Makasih ya mas…. Tutorialnya berguna banget… Saya mau langsung nyobain nih

  7. ardy says:

    Sudah jalan mas setelah saya ganti versi lib dengan yang lebih baru jasperreport-project3.5.2. walaupun halan tapi ada keterangan seperti dibawah
    Feb 9, 2010 5:31:09 AM net.sf.jasperreports.engine.component.ComponentsEnvironment findComponentBundles
    WARNING: Found two components for namespace http://jasperreports.sourceforge.net/jasperreports/components
    Apa maksudnya mas???
    Thanks

Leave a Reply