Pages

Rabu, 17 Juli 2013

Laporan Stok Barang Aplikasi Minimarket - Java MySQL


    Setelah saya memposting sebuah tutorial mengenai panduan bagaimana cara membuat laporan menggunakan iReport. Berikutnya adalah Membuat laporan sekaligus menampilkannya kedalam aplikasi java. Jika belum bisa membuat laporan, bisa dilihat disini. Ikuti langkah berikut ini :
1. Desain sebuah form yang menampilkan ID Barang, Nama Barang, Kategori dan Stok. Atau gunakan query dibawah ini :
Desain Form Laporan Stok

SELECT
     barang.`ID_BARANG` AS "D BARANG",
barang.`NAMA_BARANG` AS "NAMA BARANG",
     barang.`KATEGORI` AS "KATEGORI",
     barang.`STOK` AS "STOK"
FROM
     `barang` barang
2. Setelah itu menampilkan stok barang tersebut berdasarkan kategori dengan jumlah terendah sampai tertinggi. Langkah nya adalah menambah kan " order by stok asc,kategori " pada syntax. Kemudian test dengan meng-klik preview pada desain iReport. 

3. Bagaimana cara menampilkannya pada netbeans? Pertama, membutuhkan sebuah library yaitu :
      commons-beanutils-1.8 
      commons-collections-3.2 
      commons-digester-2.1 
      commons-logging-1.1.2 
      groovy-all-1.8 
      jdt-compiler/jasper-compiler-jdt 
    Dapat di download pada http://jasperforge.org

4. Kemudian pastikan sudah membuat menu item seperti gambar berikut :

5. Double klik pada menu item stok barang. Kemudian isi source code dengan code dibawah ini :
 String filename = "src/reportstok.jasper";
        Map param = new HashMap();
        try {
            koneksi = new koneksi();
            JasperPrint cetak = JasperFillManager.fillReport(filename, param, koneksi.con);
            JasperViewer.viewReport(cetak, false);
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e.getMessage());
        }
Keterangan : jangan salah meletakkan filename .jasper karena jika salah format maka laporan tidak akan ditampilkan pada String filename = "src/reportstok.jasper" berarti file jasper yang telah saya buat di taruh dalam folder src.

6. Pastikan library sudah di tambahkan pada project aplikasi minimarket :

7. Kemudian jalankan aplikasi, dan klik pada menu item stok barang. Jika muncul dalam bentuk laporan berikut, maka menampilkan laporan dari iReport ke Netbeans telah berhasil :


»»  READMORE...

Laporan Barang Kadaluarsa Aplikasi Minimarket - Java MySQL


     Pada dasarnya pembuatan laporan laporan ini sama halnya dengan pembuatan laporan stok barang, yang berbeda hanyalah pada saat membuat query untuk menampilkan data pada iReport. Simak panduan berikut :
1. Buat desain iReport seperti berikut :


2. Kemudian buat query seperti berikut untuk menampilkan id transaksi, id barang, kategori, nama barang dan tanggal :
SELECT
     rel_pengadaan_barang.`ID_PENGADAAN` AS "ID TRANSAKSI",
     rel_pengadaan_barang.`ID_BARANG` AS "ID BARANG",
     rel_pengadaan_barang.`TGL_KADALUARSA` AS "TANGGAL KADALUARSA",
     barang.`KATEGORI` AS KATEGORI,
     barang.`NAMA_BARANG` AS "NAMA BARANG"
FROM
     `barang` barang INNER JOIN `rel_pengadaan_barang` rel_pengadaan_barang ON barang.`ID_BARANG` = rel_pengadaan_barang.`ID_BARANG` and rel_pengadaan_barang.tgl_kadaluarsa < curdate()
Keterangan : pada script di atas akan menampilkan barang barang yang sudah kadaluarsa. 

3. Setelah itu membuat script yang akan ditampilkan ke java netbeans
   String filename = "src/reportkadaluarsa.jasper";
        Map param = new HashMap();
        try {
            koneksi = new koneksi();
            JasperPrint cetak = JasperFillManager.fillReport(filename, param, koneksi.con);
            JasperViewer.viewReport(cetak, false);
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e.getMessage());
        }
4. Jalankan program, dan data akan tampil seperti berikut :



»»  READMORE...

Laporan 10 Barang Terlaris Aplikasi Minimarket - Java MySQL


     Pada postingan ini, sama dengan membuat laporan-laporan sebelumnya. Untuk itu ikuti langkah pembuatannya dalam menampilkan 10 barang terlaris :
1. Desain pada iReport :


2. Query untuk menampilkan id barang, kategori, nama barang dan jumlah dapat dilihat sebagai berikut :
SELECT
     barang.`KATEGORI` AS KATEGORI,
     barang.`NAMA_BARANG` AS "NAMA BARANG",
     SUM(rel_penjualan_barang.`JUMLAH_PENGADAAN_BARANG`) AS JUMLAH,
     barang.`ID_BARANG` AS "ID BARANG"
FROM
     `barang` barang INNER JOIN `rel_penjualan_barang` rel_penjualan_barang ON barang.`ID_BARANG` = rel_penjualan_barang.`ID_BARANG` group by rel_penjualan_barang.id_barang order by rel_penjualan_barang.jumlah_pengadaan_barang desc limit 10
3. Kemudian menampilkan laporan .jasper kedalam java netbeans :
    String filename = "src/reportterlaris.jasper";
        Map param = new HashMap();
        try {
            koneksi = new koneksi();
            JasperPrint cetak = JasperFillManager.fillReport(filename, param, koneksi.con);
            JasperViewer.viewReport(cetak, false);
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e.getMessage());
        }
4. Run program dan jalankan. maka akan tampil seperti dibawah ini :


»»  READMORE...

Laporan Laba Aplikasi Minimarket - Java MySQL


     Pada pembuatan laporan ini sedikit berbeda dengan membuat laporan stok barang. Karena membutuhkan JInternalFrame untuk meampilkannya, serta jDateChooser. Langkah pertama :
1. Desain sebuah JInternalFrame seperti dibawah ini :

2. Kemudian setelah mendesain form, berikutnya adalah mendesain laporan dengan iReport. Desain seperti gambar dibawah ini :

3. Kemudian untuk menampilkan data-data seperti tanggal, id barang, nama barang dan laba dapat menggunakan source code :    
SELECT
     penjualan.`TANGGAL_PENJUALAN` AS " TANGGAL",
     barang.`ID_BARANG` AS "ID BARANG",
     barang.`NAMA_BARANG` AS "NAMA BARANG",
     SUM(rel_penjualan_barang.`LABA`) AS "LABA"
FROM
     `penjualan` penjualan INNER JOIN `rel_penjualan_barang` rel_penjualan_barang ON penjualan.`ID_PENJUALAN` = rel_penjualan_barang.`ID_PENJUALAN`
     INNER JOIN `barang` barang ON rel_penjualan_barang.`ID_BARANG` = barang.`ID_BARANG` AND PENJUALAN.`TANGGAL_PENJUALAN` BETWEEN $P{tglAwal} AND $P{tglAkhir} GROUP BY BARANG.`ID_BARANG`
Keterangan : pada source code di atas menggunakan sebuah parameter tglAwal dan tglAkhir.
4. Berikutnya adalah menampilkan laba toko dengan membuat parameter tanggal. Caranya adalah pada Report Inspector, klik kanan dan Add Parameter.


5. Setelah itu, menampilkan laporan tersebut ke java netbeans. Caranya sedikit berbeda dengan menampilkan laporan stok barang, karena pada laporan ini terdapat parameter. sehingga untuk menampilkannya, dapat melihat source code berikut :
String filename = "src/report1.jasper";
        Map param = new HashMap();
        param.put("tglAwal", dateFormat.format(jDateChooser1.getDate()));
        param.put("tglAkhir", dateFormat.format(jDateChooser2.getDate()));
        
        try {
            koneksi = new koneksi();
            JasperPrint cetak = JasperFillManager.fillReport(filename, param, koneksi.con);
            JasperViewer.viewReport(cetak, false);
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e.getMessage());
        }
Keterangan : pada script di atas sebenarnya sama halnya dnegan script pada laporan stok barang, perbedaannya adalah laporan ini di tampilkan dengan menggunakan jDateChooser, dimana jDateChooser tersebut berhubungan dengan parameter tglAwal dan tglAkhir.

6. Pada menu item laba, Double klik dan link kan kehalaman JInternalFrame dengan meletakkan source code berikut :
NewJInternalFrame_Laporan_Laba l = new NewJInternalFrame_Laporan_Laba();
        l.setVisible(true);
        add(l);
Kemudian coba jalankan aplikasi minimarket, dan lakukan pembuatan laporan :

Tampilan JInternalFrame

Inputan tglAwal dan tglAkhir

Laporan Laba dari : 1 Mei 2013 hingga 18 Juni 2013

»»  READMORE...

Tutorial Membuat Laporan Menggunakan iReport 4.5.1 - Java MySQL



     Setelah kita mendesain sebuah form pada aplikasi minimarket. Sekarang saya akan membuat tutor. bagaimana cara membuat laporan pada aplikasi tersebut. Untuk menampilkan sebuah laporan kita perlu suatu library (JasperReport) dan iReport. Untuk melakukan penginstallan ini bisa menggunakan plugin pada Netbeans, bisa juga menginstall .exe. Saya membuat tutor. ini dengan menggunakan sebuah installan .exe dan menggunakan versi iReport 4.5.1. Akan tetapi saya tidak akan menjelaskan bagaimana menginstallnya karena sama halnya dengan menginstall software-softaware lain. Baiklah setelah anda menginstall iReport, langkah yang dilakukan selanjutnya adalah :
1. Membuat koneksi dari iReport kedalam database. Klik langkah pada gambar berikut :

2. Setelah itu, akan muncul sebuah form, seperti gambar dibawah ini. Dan pilih "Database JDBC connection

3. Kemudian klik Next. Akan muncul form baru. Kemudian ada beberapa kolom yang harus diisi. Yang pertama adalah beri nama Koneksi_minimarket. Kemudian pada JDBC Driver pilih "MySQL (com.mysql.jdbc.Driver)". Masukkan url dari database anda, pada gambar dibawah ini url untuk database aplikasi minimarket yang bernama mini_market. Ingat cara menulis url? yaitu "jdbc:mysql://localhost:3306/mini_market". Username dan Password merupakan default dari XAMPP, biasanya username nya merupakan "root" dan passwordnya tidak ada, jika XAMPP anda di set suatu password maka inputan. Klik test untuk melihat koneksi sukses atau tidak.

Jika koneksi sukses akan seperti dibawah ini :

4. Setelah itu klik save untuk menyimpan koneksi tersebut.

5. Langkah berikutnya adalah menentukan desain laporan. Klik langkah ke-2. Lihat pada gambar dibawah ini :

6. Kemudian akan muncul sebuah form untuk memilih desain yang sudah ada pada iReport, akan tetapi jika ingin mendesain sendiri juga telah disediakan. Jika sudah klik "Launch Report Wizard".

7. Langkah selanjutnya menentukan direktori untuk menyimpan file yang kita buat. Klik Next :

8. Langkah kedelapan adalah menampilkan database dengan query untuk memanggilnya. Pada contoh dibawah ini menampilkan semua database pada tabel barang.

9. Kemudian langkah ini adalah menampilkan Fields yang akan ditampilkan pada form. Jika ingin menampilkan semua, maka pindah semua nama field dengan menggunakan tanda ">>". 

10. Dan yang terakhir adalah klik finish. Anda telah berhasil membuat laporan dengan iReport.
»»  READMORE...

Form Penjualan Barang Aplikasi Minimarket - Java MySQL


     Pada form ini, dibuat untuk melakukan penjualan barang. Nantinya, form ini akan terdapat dua buah tabel. Tabel yang pertama adalah tabel daftar barang, yaitu untuk melihat barang apa saja yang ada, dimana barang tersebut akan ditampilkan ketika stok-nya lebih dari nol, jika stok kurang maka tidak akan ditampilkan. Setelah dibeli, barang akan di tampung pada tabel kedua. Untuk itu simak lebih teliti pada panduan berikut ini :
1. Buatlah sebuah JForm, desain bebas akan tetapi juga dapat mengikuti desain form seperti berikut :


2. Dan beri nama masing-masing txtfield, jDateChooser, button, table, serta jLabel. Selanjutnya, dalam form ini, ketika user belum melakukan transaksi baru. ada beberapa fungsi yang di setEnabled False pada kondisi awal, yaitu :
private void kondisiawal() {
        btninsert.setEnabled(false);
        btndelete.setEnabled(false);
        txt_idbarang.setEnabled(false);
        txt_jmlh.setEnabled(false);
        tbl_barangbeli.setEnabled(false);
        txt_tot.setEnabled(false);
        txt_bayar.setEnabled(false);
        clear();
        btntransaksibaru.setEnabled(true);
        idPenjualan = "";
    }
Sedangkan setelah kondisi transaksi aktif akan di setEnabled True, yaitu :
 private void kondisiAktif() {
        btninsert.setEnabled(true);
        btndelete.setEnabled(true);
        txt_jmlh.setEnabled(true);
        tbl_barangbeli.setEnabled(true);
        btntransaksibaru.setEnabled(false);
        txt_bayar.setEnabled(true);
        clear();
    }
3. Setelah itu kita akan membuat kode tanggal secara otomatis pada saat button transaksi baru di klik. Sebelumnya kita juga pernah melakukannya pada transaksi pengadaan sebelumnya. Masih ingat? jika tidak saya akan memberikan source code diman source code tersebut termasuk bernama InsertTabelPenjualan ( ):
 private String insertTabelPenjualan() {
        try {
            Date date = new Date();
            SimpleDateFormat dateformat=new SimpleDateFormat ("yyyy-MM-dd");
            String tanggal=dateformat.format(date);
            txttanggal.setDate(date);

            SimpleDateFormat dateformat2=new SimpleDateFormat ("dd.MM.yyyy");
            String tanggal2=dateformat2.format(date);
            int count = 100;
            String sqltanggal = "select tanggal_penjualan,id_penjualan from penjualan";
            resultSet = statement.executeQuery(sqltanggal);
            while (resultSet.next()) {
                String data1 = resultSet.getString(1);
                String data2 = resultSet.getString(2);
                if (data1.equals(tanggal)) {
                    if (count == Integer.valueOf(data2.substring(14, 17))) {
                        count++;
                    }
                }
            }
            idPenjualan = "TJ." + tanggal2 + "." + count;
            String sql = "insert into penjualan values('" + idPenjualan + "','"+Form_Login.userLogin+"','" + tanggal + "',0)";
            statement.executeUpdate(sql);

        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e.getMessage());
        }
        return idPenjualan;
    }
Keterangan : source code diatas akan menampilkan kode tanggal secara otomatis. sehingga tidak perlu melakukan inputan.

4. Berikutnya adalah , langkah untuk membuat bagaimana jika terjadi transaksi maka terdapat stok barang yang berkurang dan langsung ditampilkan pada tabel. Maka perlu adanya update stok barang. Jika terjadi cancel dalam melakukan transaksi, maka stok barang harus bertambah, sehingga kita membutuhkan update stok barang. kemudian laba akan dihitung pada tiap transaksi. Berikut source code untuk menghitung laba :
Source code memperoleh laba :
 private double hitungLaba() throws SQLException {
        Vector vektorIdPengadaan = new Vector();
        Vector vektorIdBarang = new Vector();
        Vector jum = new Vector();
        Vector hargaBeli = new Vector();
        Vector hargaJual = new Vector();
        double laba = 0;
        try {
            String sql = "select r.id_pengadaan,r.id_barang,r.harga_beli_satuan,b.harga_jual,r.belum_terjual "
                    + "from rel_pengadaan_barang r,barang b "
                    + "where r.id_barang=b.id_barang AND r.id_barang='" + txt_idbarang.getText() + "' and r.belum_terjual>0";
            resultSet = statement.executeQuery(sql);
            while (resultSet.next()) {
                vektorIdPengadaan.addElement(resultSet.getString(1));
                vektorIdBarang.addElement(resultSet.getString(2));
                hargaBeli.addElement(resultSet.getDouble(3));
                hargaJual.addElement(resultSet.getDouble(4));
                jum.addElement(resultSet.getInt(5));
            }
            int jumlah;
            int jumlahJual = Integer.valueOf(txt_jmlh.getText());
            for (int i = 0; i < vektorIdPengadaan.size(); i++) {
                jumlah = jum.elementAt(i) - jumlahJual;
                if (jumlah >= 0) {
                    try {
                        String query = "update rel_pengadaan_barang set belum_terjual=" + jumlah + " where id_pengadaan='" + vektorIdPengadaan.elementAt(i) + "' and id_barang='" + vektorIdBarang.elementAt(i) + "'";
                        statement.executeUpdate(query);
                        laba = laba + (hargaJual.elementAt(i) - hargaBeli.elementAt(i)) * jumlahJual;
                    } catch (Exception e) {
                        JOptionPane.showMessageDialog(null, e.getMessage());
                    }
                    break;
                } else {
                    try {
                        String query1 = "update rel_pengadaan_barang set belum_terjual=" + 0 + " where id_pengadaan='" + vektorIdPengadaan.elementAt(i) + "' and id_barang='" + vektorIdBarang.elementAt(i) + "'";
                        statement.executeUpdate(query1);
                    } catch (Exception e) {
                        JOptionPane.showMessageDialog(null, e.getMessage());
                    }
                    laba = laba + (hargaJual.elementAt(i) - hargaBeli.elementAt(i)) * jum.elementAt(i);
                    jumlahJual = -1 * jumlah;
                }
            }
        } catch (NumberFormatException n) {
            JOptionPane.showMessageDialog(null, n.getMessage());
        }
        return laba;
    }
Source code untuk update stok barang :
 private void UpdateStok(String ubah) {
        int stokBaru = 0;
        try {
            if(ubah.equals("insert")){
                stokBaru = cekStok() - Integer.parseInt(txt_jmlh.getText());
            }else if(ubah.equals("delete")){
                stokBaru=cekStok()+jml_awal;
            }
            String total = "UPDATE barang set stok ='" + stokBaru + "' where id_barang = '" + id_barang + "'";
            statement.executeUpdate(total);
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e.getMessage());
            System.out.println("" + e.getMessage());
        }
    }
5. Bagaimana untuk menampilkan data pada tabel pertama dan tabel kedua? Untuk tabel pertama merupakan tabel dimana tabel tersebut untuk melihat stok-stok yang tersedia atau sudah kosong. Langkahnya adalah :
private void selectTabelHargaJual(){
        Object header[] = {"ID BARANG","NAMA BARANG","HARGA JUAL","STOK"};
        DefaultTableModel defaultTable = new DefaultTableModel(null,header);
        tbl_barangjual.setModel(defaultTable);

        int baris = tbl_barangjual.getRowCount();
        for (int i = 0; i < baris; i++) {
            defaultTable.removeRow(i);
        }

        String sql_select = "select id_barang,nama_barang,harga_jual,stok from barang where stok > 0";
        try {
            statement = k.connection.createStatement();
            resultSet = statement.executeQuery(sql_select);

            while(resultSet.next()){
                String idBarang = resultSet.getString(1);
                String namaBarang = resultSet.getString(2);
                String harga_jual = resultSet.getString(3);
                String stok = resultSet.getString(4);

                String kolom[] = {idBarang,namaBarang,harga_jual,stok};
                defaultTable.addRow(kolom);
            }
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e.getMessage());
        }
    }
Kemudian tabel kedua merupakan tabel untuk mengetahui pembelian barang :
   private void selectTabelHargaBeli() {
        Object header[] = {"ID PENJUALAN", "ID BARANG", "NAMA BARANG", "HARGA", "JUMLAH", "TOTAL HARGA"};
        DefaultTableModel defaultTable = new DefaultTableModel(null, header);
        tbl_barangbeli.setModel(defaultTable);

        int baris = tbl_barangbeli.getRowCount();
        for (int i = 0; i < baris; i++) {
            defaultTable.removeRow(i);
        }

        String sql_select = "select r.id_penjualan,r.id_barang,b.nama_barang,b.harga_jual,r.jumlah,r.total_harga "
                + "from rel_penjualan_barang r, barang b where r.id_barang = b.id_barang and r.id_penjualan ='" + idPenjualan + "'";
        try {
            statement = k.connection.createStatement();
            resultSet = statement.executeQuery(sql_select);

            while (resultSet.next()) {
                String idjual = resultSet.getString(1);
                String idBarang = resultSet.getString(2);
                String namaBarang = resultSet.getString(3);
                String harga = resultSet.getString(4);
                String jml = resultSet.getString(5);
                String total = resultSet.getString(6);

                String kolom[] = {idjual, idBarang, namaBarang, harga, jml, total};
                defaultTable.addRow(kolom);
            }
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e.getMessage());
            System.out.println("" + e.getMessage());
        }
    }
6. Kemudian berikutnya untuk melengkapi saya akan tampilkan source code insert dan delete. Dimana kedua fungsi tersebut sangat penting untuk melakukan insert data serta menghapus data jika terjadi kekeliruan peng-entrian data :
Source code insert data :
private void insertRelPenjualan() {
        double total = Integer.parseInt(txt_jmlh.getText()) * Double.parseDouble(txt_hrga.getText());

        try {
            String sql = "INSERT INTO rel_penjualan_barang "
                    + "VALUES('" + txt_idbarang.getText() + "','" + idPenjualan + "','" + txt_jmlh.getText() + "','"+hitungLaba()+"','" + total + "')";
            statement = k.connection.createStatement();
            statement.executeUpdate(sql);

        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e.getMessage());
            System.out.println("" + e.getMessage());
        }
    }
Source code delete data :
private void delete(){
        String sql_delete="DELETE FROM rel_penjualan_barang WHERE ID_PENJUALAN='"+idPenjualan+"' AND ID_BARANG='"+idHapus.getText()+"'";
        try {
            statement=k.connection.createStatement();
            statement.executeUpdate(sql_delete);
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, "Data masih digunakan!!");
            System.out.println(""+e.getMessage());
        }
    }
Kemudian jalankan programnya, dan coba lakukan transaksi :

SetEnabled False ( ) :
Sebelum transaksi baru di klik

SetEnabled True ( ) :
Sesudah transaksi baru di klik

Insert Data  :
Pembelian barang "Pensil" sejumlah 2 

Barang telah masuk dan stok berkurang

Delete data :
Delete pada nama barang : "Pensil"

Stok kembali seperti sebelum di jual

»»  READMORE...

Form Stok Barang Aplikasi Minimarket - Java MySQL


     Kesempatan kali ini, saya akan meneruskan postingan saya mengenai aplikasi minimarket yang telah saya publikasikan sebelumnya. Penjelasan kali ini, saya akan memposting mengenai form stok barang. Form ini dibuat bertujuan untuk melihat seberapa banyak stok barang yang telah tersisa saat melakukan transaksi barang. Langsung saja pada tahap pembuatannya :
1. Buatlah sebuah desain form menggunakan JForm seperti berikut :


2. Kemudian beri variable nama pada masing-masing textfield pencarian data button back :


3. Setelah itu langkah utama adalah mendeklarasikan variable koneksi, resutSet, serta statement. dan memanggil koneksi pada konstruktor.  
    koneksi k;
    Statement statement;
    ResultSet resultSet;
    public form_stok_barang() {
        initComponents();
        k = new koneksi();
    }
4. Setelah itu menampilkan database barang pada form stok barang. Caranya adalah dengan menggunakan perintah sql "select * from barang" maka semua yang berada pada tabel barang akan muncul. Atau dapat dilihat pada script berikut :
 private void select() {
        String header[] = {"ID BARANG", "KATEGORI", "NAMA BARANG", "JUMLAH STOK"};
        DefaultTableModel dt = new DefaultTableModel(null, header);
        tbl_stokbarang.setModel(dt);

        for (int i = 0; i < tbl_stokbarang.getRowCount(); i++) {
            dt.removeRow(i);
        }

        String sql = "select * from barang";
        try {
            statement = k.con.createStatement();
            resultSet = statement.executeQuery(sql);

            while (resultSet.next()) {
                String id = resultSet.getString(1);
                String kategori = resultSet.getString(2);
                String nama = resultSet.getString(3);
                int stok = resultSet.getInt(4);

                Object baris[] = {id, kategori, nama, stok};
                dt.addRow(baris);
            }
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e.getMessage());
        }
    }
Lihat hasilnya saat program dijalankan, jangan lupa meamnggil select ( ) pada konstruktor sebelum menjalankan program.


5. Berikutnya adalah membuat Events KeyTyped pada textfield pencarian data. Caranya adalah sebagai berikut :

6. Setelah membuat Events seperti di atas, maka perintah berikutnya adalah membuat source code dimana data akan ditampilkan berdasarkan nama barang. Bagaimana syntax-nya? dapat dilihat pada code dibawah ini :
private void search() {
        Object header[] = {"ID BARANG", "KATEGORI", "NAMA BARANG", "JUMLAH STOK"};
        DefaultTableModel defaultTable = new DefaultTableModel(null, header);
        tbl_stokbarang.setModel(defaultTable);

        int baris = tbl_stokbarang.getRowCount();
        for (int i = 0; i < baris; i++) {
            defaultTable.removeRow(i);
        }

        String sql_select = "select * from barang where nama_barang like '%"+txt_search.getText()+"%'";
        try {
            statement = k.con.createStatement();
            resultSet = statement.executeQuery(sql_select);

            while (resultSet.next()) {
                String id= resultSet.getString(1);
                String kategori = resultSet.getString(2);
                String nama = resultSet.getString(3);
                int stok = resultSet.getInt(4);

                Object kolom[] = {id, kategori, nama,stok};
                defaultTable.addRow(kolom);
            }
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e.getMessage());
        }
    }
7. Kemudian, membuat Events untuk action performed dari button back agar me-link ke form menu utama :


Source code Events button :
new Menu_Utama(Form_Login.kondisiLogin).setVisible(true);
        this.dispose();
Jalankan program dan coba untuk melakukan pencarian data :



8. Form Stok Barang telah selesai dibuat.
»»  READMORE...

Form Data Pembelian Aplikasi Minimarket - Java MySQL


     Form ini merupakan form lanjutan setelah form pengadaan barang. Pada form ini akan difungsikan ketika sebuah button bernama action pada form pengadaan barang di klik. Untuk lebih lengkapnya ikuti petunjuk-petunjuk berikut untuk membuatnya :
1. Buat sebuah form seperti berikut, dimana form ini menggunakan JTabbed Pane. Tab yang pertama mengenai detail barang dan yang kedua mengenai harga jual barang.

Tab Detail Barang

Tab Harga Jual Barang

2. Fokus pada Detail Barang terlebih dahulu. Pada langkah ini lebih membutuhkan banyak coding karena form ini merupakan form untuk melakukan transaksi barang. Selanjutnya adalah, bagaimana cara menampilkan data kategori barang yang di ambil melalui database kategori seperti dibawah ini ?


Untuk mendapatkan langkah diatas, menambahkan sebuah Events button yaitu itemStateChanged dengan cara klik kanan pada combo box kategori barang ==> Events ==> Item ==> itemStateChanged. Setelah itu isikan source code dibawah ini :
if(count>=2){
            LoadComboBoxNamaBarang(combo_kat.getSelectedItem().toString());

        }
        else{
            count++;
        }
Kemudian membuat kelas LoadComboBoxNamaBarang( ) :
private void LoadComboBoxNamaBarang(String data){
        try {
            String sql="select nama_barang from barang where kategori='"+data+"'";
            resultSet=statement.executeQuery(sql);
            combobarang.removeAllItems();
            combobarang.addItem("-->pilih<--");
          while(resultSet.next()){
                combobarang.addItem(resultSet.getString(1).toString());
            }
        } catch (Exception e) {
        }
3. Setelah itu, Bagaimana menampilkan data nama barang dari database barang berdasarkan kategori pada combo box nama barang?


Seperti langkah sebelumnya yaitu membuat events itemStateChanged pada combo box nama barang :
  if(count2>=2){
            if(combobarang.getSelectedItem().toString().equals("-->pilih<--")){
     }else{
               LoadIdBarang(combobarang.getSelectedItem().toString());
            }
        }
        else{
            count2++;
        }
Dan membuat kelas LoadIdBarang dengan source code sebagai berikut :
 private void LoadIdBarang(String data){
        try {
            String sql="select id_barang from barang where nama_barang='"+data+"'";
            statement=k.con.createStatement();
            resultSet=statement.executeQuery(sql);
            while(resultSet.next()){
                txt_idbarang.setText(resultSet.getString(1).toString());
            }
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e.getMessage());
        }
    }
4. Kemudian  selanjutnya menampilkan format automatis dari id pengadaan pada tabel pengadaan kedalam form data pembelian.


Bagian ini membutuhkan antara form satu dengan form lain sehingga didapat coding sebagai berikut :
Letakkan source code berikut pada form detail transaksi pengadaan :
Private String id_pengadaan; 
public form_detail_transaksi(String idTransaksi) { 
        initComponents(); 
        koneksi=new Koneksi(); 
        
        this. id_pengadaan =idTransaksi; 
         
            } 
Untuk memanggilnya dapat dilakukan perintah berikut :
idPengadaan=tabelPengadaan.getValueAt(tabelPengadaan.getSelectedRow(), 0).toString(); 
        if (tabelPengadaan.getSelectedColumn()==4) { 
            System.out.println(idPengadaan); 
            this.dispose(); 
           new FormDetailPengadaan(idPengadaan).setVisible(true); 
        } 
5. Selanjutnya adalah kita beralih pada tanggal kadaluarsa. Terdapat dua jRadioButton yaitu "ada" dan "tidak ada". Cara mengoperasikan pada form ini adalah jika meng-klik "ada" maka tanggal kadaluarsa akan dapat di set, sebaliknya jika meng-klik "tidak ada" maka tanggal tidak dapat dioperasikan. Bagaimana caranya? Letakkan source code dibawah ini :
   private void JRadioButton1MouseExited(java.awt.event.MouseEvent evt) {           
        JRadioButton1.setEnabled(true); 
        tglKadaluarsa.setEnabled(true); 
    }                                          
    private void JRadioButton1MouseEntered(java.awt.event.MouseEvent evt) {       
         
        JRadioButton1.setEnabled(true); 
        JRadioButton2.setEnabled(false); 
    }                                           
    private void JRadioButton2MouseEntered(java.awt.event.MouseEvent evt) {       
         JRadioButton2.setEnabled(true); 
        JRadioButton1.setEnabled(false); 
        tglKadaluarsa.setEnabled(false); 
    } 
Keterangan : diatas telah tersedia events apa saja yang dibutuhkan, yaitu MouseExited dan Mouse Entered.
6. Selanjutnya cara memasukkan data bagaimana ? anda dapat meletakkan source code berikut ini :
  private void insertdata(){
        String id_transaksi=txt_idtran.getText().toString();
        String id_barang=txt_idbarang.getText().toString();
        String nama_barang=combobarang.getSelectedItem().toString();
        String hrga_bli=txthrgabeli.getText().toString();
        String jumlah=txt_jumlah.getText().toString();
        String sql=null;
        if(ada.isSelected()){
            SimpleDateFormat dateformat=new SimpleDateFormat ("yyyy-MM-dd");
            String tanggal=dateformat.format(txt_tglkadaluarsa.getDate());
           sql = "INSERT INTO rel_pengadaan_barang VALUES ('" + id_transaksi + "', '" + id_barang + "', '" 
                   + jumlah + "', '" + hrga_bli + "','" + 
                   tanggal + "','" + jumlah + "')";

        }
        else if (tdk_ada.isSelected()) {
          // sql = "INSERT INTO rel_pengadaan_barang VALUES ('" + txtIdTransaksi.getText() + "', '" + txtIdBarang.getText() + "', '" + comboKategori.getSelectedItem().toString() + "', '" + comboNamaBarang.getSelectedItem().toString()+"','"+txtHargaBeli.getText()+ "',0,null)";
         sql = "INSERT INTO rel_pengadaan_barang VALUES ('" + id_transaksi + "', '" + id_barang
                 + "', '" + jumlah + "', '" + hrga_bli + "','Tidak ada','" + jumlah + "')";

        }
        
        try {
            statement.executeUpdate(sql);
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e.getMessage());
        }
    }
7.  Setelah melakukan insert data akan dilakukan update stok. Sehingga stok yang diinputkan akan mengalami pembaharuan : 
private void updateStokBarang(String ubah){
        int jml=0, stok=0;
        String sql_select="SELECT stok from barang WHERE ID_BARANG='"+txt_idbarang.getText()+"'";
        try {
            statement=k.con.createStatement();
            resultSet=statement.executeQuery(sql_select);
            while(resultSet.next()){
                jml=Integer.parseInt(resultSet.getString(1));
            }

            if(ubah.equals("insert")){
                stok=jml+Integer.parseInt(txt_jumlah.getText());
            }
            else if(ubah.equals("edit")){
                stok=(jml-jml_awal)+Integer.parseInt(txt_jumlah.getText());
            }
            else if(ubah.equals("delete")){
                stok=jml-Integer.parseInt(txt_jumlah.getText());
            }

            String sql_update="UPDATE barang SET STOK='"+stok+"' WHERE ID_BARANG='"+txt_idbarang.getText()+"'";
            try {
                statement=k.con.createStatement();
                statement.executeUpdate(sql_update);

            } catch (Exception e) {
                JOptionPane.showMessageDialog(null, e.getMessage());
            }
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e.getMessage());
        }
    }
8. Berikutnya adalah melakukan total transaksi, total transaksi ini perlu untuk mengetahui seberapa besar total dari transaksi yang telah dilakukan, untuk source code dapat dilihat pada coding dibawah ini :
 private void totalTransaksi(String data) {
        String sql_select = "SELECT SUM(JUMLAH_PENGADAAN_BARANG*HARGA_BELI_SATUAN) FROM rel_pengadaan_barang WHERE ID_PENGADAAN='" + data + "'";
        try {
            statement = k.con.createStatement();
            resultSet = statement.executeQuery(sql_select);

            while (resultSet.next()) {
                txt_total.setText(resultSet.getString(1));
                total_transaksi = resultSet.getDouble(1);
            }
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e.getMessage());
        }
    }
9. Setelah itu jika total transaksi telah dilakukan maka langkah selanjutnya adalah melakukan update transaksi :
 private void updateTotalTransaksi(){
        String sql="UPDATE pengadaan SET TOTAL_TRANSAKSI = '"+total_transaksi+"' WHERE ID_PENGADAAN = '"+id_pengadaan+"'";
        try {
            statement=k.con.createStatement();
            statement.executeUpdate(sql);
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e.getMessage());
        }
    }
Kemudian lakukan transaksi pada suatu barang :

Supplier adalah Riko

Insert Data pada Detail Transaksi Pengadaan

Hasil 

Total transaksi yang ter-update

10. Selanjutnya adalah melakukan delet data, buat sebuah kelas dan letakkan source code berikut ini :
public void deletedata(){
        String id_transaksi=txt_idtran.getText().toString();
        String id_barang=txt_idbarang.getText().toString();
        String sql="delete from rel_pengadaan_barang where id_pengadaan = '"+id_transaksi+"' AND id_barang='"+id_barang+"'" ;
        try {
            statement=k.con.createStatement();
            statement.execute(sql);
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e.getMessage());
        }
    }
Coba delete data yang telah kita insert sebelumnya :

Delete data

Data terhapus, Total ter-set 0 kembali

     Selanjutnya adalah beralih pada tab Harga Jual Barang, karena sebelumnya langkah di atas adalah untuk melakukan transaksi pada Detail Barang. Untuk Harga Jual Barang ini, berfungsi untuk melakukan set harga dan pencarian data. Setelah membuat formnya, langkah selanjutnya adalah membuat source code untuk mengatur harga jual. Dapat dilihat pada source code dibawah ini :
1. Set harga Jual :
 private void updatedata(){
        String harga_jual=txthrgjual.getText().toString();
        String id_barang=id_brg.getText().toString();
        String sql="update barang set hargajual = '"+harga_jual+"' where id_barang = '"+id_barang+"'";
        try {
            statement.executeUpdate(sql);
        } catch (Exception e) {
             JOptionPane.showMessageDialog(null, e.getMessage());
        }
    }
2. Kemudian letakkan perintah berikut ini pada textfield pencarian data dengan membuat Events KeyTyped :
  public void Search() {
        Object header[] = {"ID BARANG", "NAMA BARANG", "HARGA BELI TERMAHAL", "HARGA JUAL"};
        DefaultTableModel defaultTable = new DefaultTableModel(null, header);
        tbl_harga_jual.setModel(defaultTable);

        String cari = txt_search.getText();
        String sql = "select b.id_barang, b.nama_barang, max(r.harga_beli_satuan),b.hargajual from rel_pengadaan_barang r, barang b "
                + "where b.id_barang = r.id_barang  and b.id_barang LIKE '%" + cari + "%' or b.nama_barang LIKE '%" + cari + "%'";
        try {
            statement = k.con.createStatement();
            resultSet = statement.executeQuery(sql);
            while (resultSet.next()) {
                String idBarang = resultSet.getString(1);
                String namaBarang = resultSet.getString(2);
                String maxHarga = resultSet.getString(3);
                String harga_jual = resultSet.getString(4);

                String kolom[] = {idBarang, namaBarang, maxHarga, harga_jual};
                defaultTable.addRow(kolom);
            }
        } catch (Exception e) {
            System.out.println("Terjadi kesalahan, karena " + e.getMessage());
            JOptionPane.showMessageDialog(null, "Terjadi kesalahan, karena " + e.getMessage());
        }
    }
Coba lakukan set harga :

Cari data : Pensil, dan set harga : 2500

Harga jual berhasil di set
»»  READMORE...