Cara cek duplikat data di tabel arraylist?

Halo, saya lagi buat aplikasi penjualan pake java & mysql.Berikut form penjualannya : <a href='https://drive.google.com/open?id=0B-CpAcAUqtVkSXl4Tzl3VjFCS2s '>https://drive.google.com/open?id=0B-CpAcAUqtVkSXl4Tzl3VjFCS2s </a>

masalahnya ada pada saat input barang. Saya klik button kode barang, lalu akan muncul daftar barang dan tinggal pilih saja, setelah itu nama dan harga barang akan muncul otomatis, dan input jumlah yg mau dibeli. setelah itu klik button'+' dan barang yang dipilih tadi akan muncul di tabel untuk ditampung sementara. pertanyaan saya, gimana ya caranya, misal saya udah pilih item 1 dan ditampung di tabel, trus kalo saya klik lagi item1 akan muncul pesan "Barang sudah dipilih"? Mohon bantuannya..

Ini coding form penjualan :

private void btnTambahActionPerformed(java.awt.event.ActionEvent evt) {
        // TODO add your handling code here:
         if(txtkodebrg.getText().equals("") || txtnota.getText().equals("") || txtnama.getText().equals("")){
            JOptionPane.showMessageDialog(null, "Lengkapi inputan pembelian barang");
        } else{
             int jml=Integer.parseInt(txtjumlah.getText());
             int stok=Integer.parseInt(txtstok.getText());
             if(jml>stok){
                JOptionPane.showMessageDialog(null, "Stok barang tidak mencukupi");
             }else{
                listEDB=dbc.CekBarang(txtnota.getText(),txtkodebrg.getText());
                if(listEDB.size()>0){
                    JOptionPane.showMessageDialog(null, Barang ini sudah dipilih");
                } else{
                    int harga=Integer.parseInt(txtharga.getText());
                    EntitasDetail_Beli edb=new EntitasDetail_Beli();
                   // edb.setNonota(txtnota.getText());
                    edb.setKdbarang(txtkodebrg.getText());
                    edb.setNmbarang(txtnamabrg.getText());
                    edb.setHarga(harga);
                    edb.setJml(jml);
                    edb.setTotal(harga*jml);
                    if (dbc.tambahDetailBeli(edb)==0){
                        JOptionPane.showMessageDialog(null, "Simpan detail data barang gagal, Mohon periksa kembali");
                    } else{
                        int sisaStok=stok-jml;
                        brgc.updateStok(sisaStok, txtkodebrg.getText());
                        buatTabelBeli();
                        tampilBarang();
                        int total=Integer.parseInt(txttotal.getText());
                        int totalBayar=total+(harga*jml);
                        txttotal.setText(Integer.toString(totalBayar));

                        txtkodebrg.setText("");
                        txtnamabrg.setText("");
                        txtharga.setText("");
                        txtjumlah.setText("");
                        txtstok.setText("");
                    }
                }
             }
        }
    }
 public class EntitasDetail_Beli {
String nonota,kdbarang,nmbarang;
int harga,jml,total;

    public int getHarga() {
        return harga;
    }

    public void setHarga(int harga) {
        this.harga = harga;
    }

    public int getJml() {
        return jml;
    }

    public void setJml(int jml) {
        this.jml = jml;
    }

    public String getKdbarang() {
        return kdbarang;
    }

    public void setKdbarang(String kdbarang) {
        this.kdbarang = kdbarang;
    }

    public String getNmbarang() {
        return nmbarang;
    }

    public void setNmbarang(String nmbarang) {
        this.nmbarang = nmbarang;
    }

    public String getNonota() {
        return nonota;
    }

    public void setNonota(String nonota) {
        this.nonota = nonota;
    }

    public int getTotal() {
        return total;
    }

    public void setTotal(int total) {
        this.total = total;
    }
}
   public List CekBarang(String noNota,String kdBarang){
        List logDetailBeli = new ArrayList();

        sql="select kd_barang,namabarang,harga,jumlah,total from tbl_detailjual where kd_barang='"+kdBarang+"'";
        try{
            rs=st.executeQuery(sql);

            while(rs.next()){
                EntitasDetail_Beli eb=new EntitasDetail_Beli();
                eb.setKdbarang(rs.getString("kd_barang"));
                eb.setNmbarang(rs.getString("namabarang"));
                eb.setHarga(rs.getInt("harga"));
                eb.setJml(rs.getInt("jumlah"));
                eb.setTotal(rs.getInt("total"));
                logDetailBeli.add(eb);
            }
        } catch(SQLException a){
            JOptionPane.showMessageDialog(null, "Terjadi kesalahaan Cek barang, pada :\n"+a);
        }
        return logDetailBeli;
    }
avatar sally31
@sally31

2 Kontribusi 0 Poin

Diperbarui 7 tahun yang lalu

3 Jawaban:

sory ikut nimbrung, sy tidak punya pengalaman sm sekali mengenai java, tapi sepertinya mirip2 javascript ya. penggunaan if else untuk cek apakah sudah ada barang atau belum ada di bagian sini ya?


listEDB=dbc.CekBarang(txtnota.getText(),txtkodebrg.getText());
if(listEDB.size()>0){
   JOptionPane.showMessageDialog(null, Barang ini sudah dipilih");
}
...
// kemudian function CekBarang() return logDetailBeli adapun logDetailBeli didefenisikan
// List logDetailBeli = new ArrayList().
// Bukan kah ini akan buat array baru?
// Yang artinya tiap kali kode ini dieksekusi maka akan buat array baru alias tidak menampung data item sebelumnya yg telah ditambahkan?
// Jadi yg if bagian ini if(listEDB.size()>0) artinya kita mengecek apakah ada data di listEDB buka mengecek apakah sudah ada barang dengan kode tertentu

avatar onirusama
@onirusama

265 Kontribusi 184 Poin

Dipost 7 tahun yang lalu

iya, itu koding untuk mengecek duplikat barang. dan koding nya ga berfungsi. jadi gimana ya solusinya?

avatar sally31
@sally31

2 Kontribusi 0 Poin

Dipost 7 tahun yang lalu

Saya kurang tahu syntaxnya bagaimana karena sy belum tahu sama sekali mengenai java. Tapi kalau dari kode agan itu yang perlu agan lakukan adalah ini: 1. Agan perlu sebuah sebuah variable yang menampung seluruh barang yg dipilih. 2. Buat juga function untuk memasukkan barang 3. Yang tidak kalah pentingnya buat function untuk cek barang sudah ada atau belum

# Kalau dari kode agan di atas, agan belum punya point 1 dan point 3. Point 2 sudah ada tapi kurang tepat, semestinya new arraylist itu di buat di luar function (bagian ini nanti menjadi point nomor 1).

avatar onirusama
@onirusama

265 Kontribusi 184 Poin

Dipost 7 tahun yang lalu

Login untuk ikut Jawaban