Aplikasi Penjualan dengan VB.net dan MariaDB V1: Membuat Form Pengolahan Data Barang Part 2


Assalamu’alaikum Wr Wb

Selamat datang di Web Sibukngoding.com. Pada Kesempatan kali ini saya akan melanjutkan pembuatan Aplikasi Penjualan menggunakan Vb.net dan database MariaDb. Pada postingan kali ini merupakan lanjutan dari postingan sebelumnya tentang Membuat Form Pengolahan Data Barang. Disini akan dijelaskan sourcode yang akan digunakan di form pengolahan data barang.

Untuk langkah penulisan sourcodenya sebagai berikut:
1. Import Data ODBC

Tekan F7 untuk masuk ke layar coding, kita import dulu ODBC nya karena untuk koneksi kita menggunakan Connector ODBC. Tuliskan Source Code dibawah ini di bagian paling atas.
Imports System.Data.Odbc


2. Sub Bersihkan
Berfungsi untuk membersihkan bagian Textbox
    Sub bersihkan()
        txtkodebarang.Focus()
        txtkodebarang.Clear()
        txtnamabarang.Clear()
        txtstok.Text = "0"
        cbsatuan.Text = ""
        txthargabeli.Text = "0"
        txthargajual.Text = "0"
    End Sub


3.Sub Tampilkan Data

Untuk menampilkan data dari database ke DataGridView
   Sub tampilkan_data()
        Koneksi()
        DA = New OdbcDataAdapter("SELECT * FROM barang", Conn)
        DS = New DataSet
        DA.Fill(DS, 0)
        dgvbarang.DataSource = DS.Tables(0)
        Conn.Close()
    End Sub

4. Sub Auto Complete
Untuk membuat sugesti pada txtkodebarang
    Sub Autocomplete()
        Koneksi()
        CMD = New OdbcCommand("SELECT kode_barang FROM barang", Conn)
        RD = CMD.ExecuteReader
        While RD.Read
            With txtkodebarang
                .AutoCompleteCustomSource.Add(RD(0).ToString)
                .AutoCompleteMode = AutoCompleteMode.Suggest
                .AutoCompleteSource = AutoCompleteSource.CustomSource
            End With
        End While
        Conn.Close()
    End Sub


5. Sub Isi combo box

Untuk membuat isian item pada combo box. Untuk isian item, bisa diisikan sesuai yang anda inginkan.
    Sub isicombobox()
        cbsatuan.Items.Clear()
        cbsatuan.Items.Add("Kg")
        cbsatuan.Items.Add("Buah")
        cbsatuan.Items.Add("Pack")
    End Sub

6. Sub call all
Untuk menggabungakan semua sub sehingga nanti pemanggilan cukup sub ini saja yang akan dipanggil.
    Sub call_all()
        bersihkan()
        isicombobox()
        tampilkan_data()
        Autocomplete()
    End Sub

7. Event Form load
Klik 2x pada bagian form barang kemudian ketikkan coding berikut
    Private Sub FrmBarang_Load(sender As Object, e As EventArgs) Handles Me.Load
        call_all()
    End Sub


8. Event KeyPress pada txtstok,txthargabeli dan txthargajual

Membuat Text Stock, Harga Beli dan Harga Jual hanya dapat diinput dengan Angka. Event yang digunakan adalah KeyPress.
    Private Sub txtstok_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtstok.KeyPress
        'agar cuma angka yang bisa diinputkan
        If Not IsNumeric(e.KeyChar) And e.KeyChar <> Chr(13) And e.KeyChar <> vbBack Then e.Handled = True
    End Sub
    '--------
    Private Sub txthargabeli_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txthargabeli.KeyPress
        'agar cuma angka yang bisa diinputkan
        If Not IsNumeric(e.KeyChar) And e.KeyChar <> Chr(13) And e.KeyChar <> vbBack Then e.Handled = True
    End Sub
    '-------------
    Private Sub txthargajual_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txthargajual.KeyPress
        'agar cuma angka yang bisa diinputkan
        If Not IsNumeric(e.KeyChar) And e.KeyChar <> Chr(13) And e.KeyChar <> vbBack Then e.Handled = True
    End Sub

9. Event KeyDown Pada txtkodebarang
Bertujuan untuk mengisi data yang ada pada tabel barang ke TextBox-TextBox yang lainnya setelah txtkodebarang diisi lalu ditekan Enter. Event ini dibuat di txtkodebarang. Klik pada bagian (General) pilih txtkodebarang, kemudian pada bagian (Declaration) pilih KeyDown. Ketikkan coding berikut.
    Private Sub txtkodebarang_KeyDown(sender As Object, e As KeyEventArgs) Handles txtkodebarang.KeyDown
        If e.KeyCode = Keys.Enter Then
            Koneksi()
            CMD = New OdbcCommand("SELECT * FROM barang WHERE kode_barang = '" + txtkodebarang.Text + "'", Conn)
            RD = CMD.ExecuteReader
            If RD.Read Then
                txtkodebarang.Text = RD(0).ToString
                txtnamabarang.Text = RD(1).ToString
                txtstok.Text = RD(2).ToString
                cbsatuan.Text = RD(3).ToString
                txthargabeli.Text = RD(4).ToString
                txthargajual.Text = RD(5).ToString
            End If
            Conn.Close()
            txtnamabarang.Focus()
        End If
    End Sub

10. Fasilitas Pencarian
Fasilitas pencarian ini mungkin diperlukan, terlebih lagi jika data mencapai ribuan. Sangat tidak efektif jika mencari data satu persatu. Pencarian ini diletakkan pada txtcari yang letaknya dibawah button, jika mengetikan Kode Barang atau nama barang maka data langsung tersortir pada bagian DataGridView. Evetnnya adalah TextChanged. Double klik saja pada bagian txtcari lalu ketikkan coding berikut.
    Private Sub txtcari_TextChanged(sender As Object, e As EventArgs) Handles txtcari.TextChanged
        Try
            Koneksi()
            DA = New OdbcDataAdapter("SELECT * FROM barang WHERE kode_barang LIKE '%" + txtcari.Text + "%' or nama_barang LIKE '%" + txtcari.Text + "%'", Conn)
            DS = New DataSet
            DA.Fill(DS, 0)
            dgvbarang.DataSource = DS.Tables(0)
            Conn.Close()
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub

11. Event CellClick pada DataGridView
Saat data yang diklik pada DataGridView, maka akan otomatis tampil pada tiap-tiap TextBox. Event yang digunakan adalah CellClick. Pada bagian (General) pilih dgvbarang (DataGridView), kemudian pada bagian (Declaration) pilih CellClick. Setelah itu ketikkan coding berikut ini
    Private Sub dgvbarang_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgvbarang.CellClick
        Try
            Dim i = e.RowIndex
            Koneksi()
            CMD = New OdbcCommand("SELECT * FROM barang WHERE kode_barang = '" + dgvbarang.Item(0, i).Value + "'", Conn)
            RD = CMD.ExecuteReader
            If RD.HasRows Then
                txtkodebarang.Text = RD(0).ToString
                txtnamabarang.Text = RD(1).ToString
                txtstok.Text = RD(2).ToString
                cbsatuan.Text = RD(3).ToString
                txthargabeli.Text = RD(4).ToString
                txthargajual.Text = RD(5).ToString
            End If
            Conn.Close()
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub


12. Event Click pada tombol Simpan
Double Click tombol simpan kemudian ketikkan coding dibawah ini:
    Private Sub btsimpan_Click(sender As Object, e As EventArgs) Handles btsimpan.Click
        Try
            'validasi jika data masih kosong
            If txtkodebarang.Text = "" Then
                MsgBox("Isi terlebih dahulu Kode barang")
            ElseIf txtnamabarang.Text = "" Then
                MsgBox("Isi terlebih dahulu Nama barang")
            ElseIf txtstok.Text = "" Then
                MsgBox("Isi terlebih dahulu Stok barang")
            ElseIf cbsatuan.Text = "" Then
                MsgBox("Isi terlebih dahulu Satuan")
            ElseIf txthargabeli.Text = "" Then
                MsgBox("Isi terlebih dahulu Harga Beli")
            ElseIf txthargajual.Text = "" Then
                MsgBox("Isi terlebih dahulu Harga Jual")
                'validasi jika harga beli lebih besar dari harga jual
            ElseIf Val(txthargajual.Text) <= Val(txthargabeli) Then
                MsgBox("Harga jual harus lebih besar dari harga beli")
            Else
                Koneksi()
                CMD = New OdbcCommand("SELECT kode_barang FROM barang WHERE kode_barang = '" + txtkodebarang.Text + "'", Conn)
                RD = CMD.ExecuteReader
                RD.Read()
                If Not RD.HasRows Then
                    Koneksi()
                    'program untuk simpan data
                    CMD = New OdbcCommand("INSERT INTO barang VALUES (?,?,?,?,?,?)", Conn)
                    With CMD
                        .Parameters.AddWithValue("?", txtkodebarang.Text)
                        .Parameters.AddWithValue("?", txtnamabarang.Text)
                        .Parameters.AddWithValue("?", txtstok.Text)
                        .Parameters.AddWithValue("?", cbsatuan.Text)
                        .Parameters.AddWithValue("?", txthargabeli.Text)
                        .Parameters.AddWithValue("?", txthargajual.Text)
                        .ExecuteNonQuery()
                    End With
                    Conn.Close()
                Else
                    Koneksi()
                    'program untuk hapus data
                    CMD = New OdbcCommand("UPDATE barang set nama_barang=?, stok=?, satuan=?, harga_beli=?, harga_jual=? WHERE kode_barang=?", Conn)
                    With CMD
                        .Parameters.AddWithValue("?", txtnamabarang.Text)
                        .Parameters.AddWithValue("?", txtstok.Text)
                        .Parameters.AddWithValue("?", cbsatuan.Text)
                        .Parameters.AddWithValue("?", txthargabeli.Text)
                        .Parameters.AddWithValue("?", txthargajual.Text)
                        .Parameters.AddWithValue("?", txtkodebarang.Text)
                        .ExecuteNonQuery()
                    End With
                    Conn.Close()
                End If
                Conn.Close()
                call_all()
            End If
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub

Pada coding simpan, Insert atau Update saya menggunakan tanda “?”(tanda tanya) karena Itu adalah ketentuan dari ODBC, jika Anda menggunakan mysqlconnector .net maka tidak bisa menggunakan tanda tanya “?”, melainkan menggunakan karakter @ diikuti karakter huruf atau angka. Contohnya “INSERT INTO barang VALUES (@1, @2, @3, ….).

13. Event Click pada tombol Hapus
Double Click tombol hapuskemudian ketikkan coding dibawah ini:
    Private Sub bthapus_Click(sender As Object, e As EventArgs) Handles bthapus.Click
        If txtkodebarang.Text = "" Then
            MsgBox("Isi terlebih dahulu kode barang")
        ElseIf MsgBox("Apakah Anda yakin ingin menghapus data ini?", MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
            Try
                Koneksi()
                'program untuk hapus data
                CMD = New OdbcCommand("DELETE FROM barang WHERE kode_barang ='" + txtkodebarang.Text + "'", Conn)
                CMD.ExecuteNonQuery()
                Conn.Close()

                call_all()
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
        Else
            bersihkan()
        End If
    End Sub

14. Event Click pada Tombol Batal
Double Click pada tombol batal kemudian ketikkan coding dibawah ini:
    Private Sub btbatal_Click(sender As Object, e As EventArgs) Handles btbatal.Click
        call_all()
    End Sub

15. Event Click pada Tombol Keluar
Double click pada tombol keluar kemudian ketikkan coding dibawah ini:
    Private Sub btkeluar_Click(sender As Object, e As EventArgs) Handles btkeluar.Click
        Close()
    End Sub

Untuk Full source Codenya sebagai berikut:
Imports System.Data.Odbc
Public Class FrmBarang
    Sub bersihkan()
        txtkodebarang.Focus()
        txtkodebarang.Clear()
        txtnamabarang.Clear()
        txtstok.Text = "0"
        cbsatuan.Text = ""
        txthargabeli.Text = "0"
        txthargajual.Text = "0"
    End Sub
'-----------------------------
    Sub tampilkan_data()
        Koneksi()
        DA = New OdbcDataAdapter("SELECT * FROM barang", Conn)
        DS = New DataSet
        DA.Fill(DS, 0)
        dgvbarang.DataSource = DS.Tables(0)
        Conn.Close()
    End Sub
'-----------------------------
    Sub Autocomplete()
        Koneksi()
        CMD = New OdbcCommand("SELECT kode_barang FROM barang", Conn)
        RD = CMD.ExecuteReader
        While RD.Read
            With txtkodebarang
                .AutoCompleteCustomSource.Add(RD(0).ToString)
                .AutoCompleteMode = AutoCompleteMode.Suggest
                .AutoCompleteSource = AutoCompleteSource.CustomSource
            End With
        End While
        Conn.Close()
    End Sub
'-----------------------------
    Sub isicombobox()
        cbsatuan.Items.Clear()
        cbsatuan.Items.Add("Kg")
        cbsatuan.Items.Add("Buah")
        cbsatuan.Items.Add("Pack")
    End Sub
'-----------------------------
    Sub call_all()
        bersihkan()
        isicombobox()
        tampilkan_data()
        Autocomplete()
    End Sub
'-----------------------------
    Private Sub FrmBarang_Load(sender As Object, e As EventArgs) Handles Me.Load
        call_all()
    End Sub
'-----------------------------
    Private Sub txtstok_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtstok.KeyPress
        'agar cuma angka yang bisa diinputkan
        If Not IsNumeric(e.KeyChar) And e.KeyChar <> Chr(13) And e.KeyChar <> vbBack Then e.Handled = True
    End Sub
'-----------------------------
    Private Sub txthargabeli_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txthargabeli.KeyPress
        'agar cuma angka yang bisa diinputkan
        If Not IsNumeric(e.KeyChar) And e.KeyChar <> Chr(13) And e.KeyChar <> vbBack Then e.Handled = True
    End Sub
'-----------------------------
    Private Sub txthargajual_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txthargajual.KeyPress
        'agar cuma angka yang bisa diinputkan
        If Not IsNumeric(e.KeyChar) And e.KeyChar <> Chr(13) And e.KeyChar <> vbBack Then e.Handled = True
    End Sub
'-----------------------------
    Private Sub txtkodebarang_KeyDown(sender As Object, e As KeyEventArgs) Handles txtkodebarang.KeyDown
        If e.KeyCode = Keys.Enter Then
            Koneksi()
            CMD = New OdbcCommand("SELECT * FROM barang WHERE kode_barang = '" + txtkodebarang.Text + "'", Conn)
            RD = CMD.ExecuteReader
            If RD.Read Then
                txtkodebarang.Text = RD(0).ToString
                txtnamabarang.Text = RD(1).ToString
                txtstok.Text = RD(2).ToString
                cbsatuan.Text = RD(3).ToString
                txthargabeli.Text = RD(4).ToString
                txthargajual.Text = RD(5).ToString
            End If
            Conn.Close()
            txtnamabarang.Focus()
        End If
    End Sub
'-----------------------------
    Private Sub txtcari_TextChanged(sender As Object, e As EventArgs) Handles txtcari.TextChanged
        Try
            Koneksi()
            DA = New OdbcDataAdapter("SELECT * FROM barang WHERE kode_barang LIKE '%" + txtcari.Text + "%' or nama_barang LIKE '%" + txtcari.Text + "%'", Conn)
            DS = New DataSet
            DA.Fill(DS, 0)
            dgvbarang.DataSource = DS.Tables(0)
            Conn.Close()
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub
'-----------------------------
    Private Sub dgvbarang_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgvbarang.CellClick
        Try
            Dim i = e.RowIndex
            Koneksi()
            CMD = New OdbcCommand("SELECT * FROM barang WHERE kode_barang = '" + dgvbarang.Item(0, i).Value + "'", Conn)
            RD = CMD.ExecuteReader
            If RD.HasRows Then
                txtkodebarang.Text = RD(0).ToString
                txtnamabarang.Text = RD(1).ToString
                txtstok.Text = RD(2).ToString
                cbsatuan.Text = RD(3).ToString
                txthargabeli.Text = RD(4).ToString
                txthargajual.Text = RD(5).ToString
            End If
            Conn.Close()
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub
'-----------------------------
    Private Sub btsimpan_Click(sender As Object, e As EventArgs) Handles btsimpan.Click
        Try
            'validasi jika data masih kosong
            If txtkodebarang.Text = "" Then
                MsgBox("Isi terlebih dahulu Kode barang")
            ElseIf txtnamabarang.Text = "" Then
                MsgBox("Isi terlebih dahulu Nama barang")
            ElseIf txtstok.Text = "" Then
                MsgBox("Isi terlebih dahulu Stok barang")
            ElseIf cbsatuan.Text = "" Then
                MsgBox("Isi terlebih dahulu Satuan")
            ElseIf txthargabeli.Text = "" Then
                MsgBox("Isi terlebih dahulu Harga Beli")
            ElseIf txthargajual.Text = "" Then
                MsgBox("Isi terlebih dahulu Harga Jual")
                'validasi jika harga beli lebih besar dari harga jual
            ElseIf Val(txthargajual.Text) <= Val(txthargabeli) Then
                MsgBox("Harga jual harus lebih besar dari harga beli")
            Else
                Koneksi()
                CMD = New OdbcCommand("SELECT kode_barang FROM barang WHERE kode_barang = '" + txtkodebarang.Text + "'", Conn)
                RD = CMD.ExecuteReader
                RD.Read()
                If Not RD.HasRows Then
                    Koneksi()
                    'program untuk simpan data
                    CMD = New OdbcCommand("INSERT INTO barang VALUES (?,?,?,?,?,?)", Conn)
                    With CMD
                        .Parameters.AddWithValue("?", txtkodebarang.Text)
                        .Parameters.AddWithValue("?", txtnamabarang.Text)
                        .Parameters.AddWithValue("?", txtstok.Text)
                        .Parameters.AddWithValue("?", cbsatuan.Text)
                        .Parameters.AddWithValue("?", txthargabeli.Text)
                        .Parameters.AddWithValue("?", txthargajual.Text)
                        .ExecuteNonQuery()
                    End With
                    Conn.Close()
                Else
                    Koneksi()
                    'program untuk hapus data
                    CMD = New OdbcCommand("UPDATE barang set nama_barang=?, stok=?, satuan=?, harga_beli=?, harga_jual=? WHERE kode_barang=?", Conn)
                    With CMD
                        .Parameters.AddWithValue("?", txtnamabarang.Text)
                        .Parameters.AddWithValue("?", txtstok.Text)
                        .Parameters.AddWithValue("?", cbsatuan.Text)
                        .Parameters.AddWithValue("?", txthargabeli.Text)
                        .Parameters.AddWithValue("?", txthargajual.Text)
                        .Parameters.AddWithValue("?", txtkodebarang.Text)
                        .ExecuteNonQuery()
                    End With
                    Conn.Close()
                End If
                Conn.Close()
                call_all()
            End If
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub
'-----------------------------
    Private Sub bthapus_Click(sender As Object, e As EventArgs) Handles bthapus.Click
        If txtkodebarang.Text = "" Then
            MsgBox("Isi terlebih dahulu kode barang")
        ElseIf MsgBox("Apakah Anda yakin ingin menghapus data ini?", MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
            Try
                Koneksi()
                'program untuk hapus data
                CMD = New OdbcCommand("DELETE FROM barang WHERE kode_barang ='" + txtkodebarang.Text + "'", Conn)
                CMD.ExecuteNonQuery()
                Conn.Close()

                call_all()
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
        Else
            bersihkan()
        End If
    End Sub
'-----------------------------
    Private Sub btbatal_Click(sender As Object, e As EventArgs) Handles btbatal.Click
        call_all()
    End Sub
'-----------------------------
    Private Sub btkeluar_Click(sender As Object, e As EventArgs) Handles btkeluar.Click
        Close()
    End Sub
End Class

Jika dijalankan, tampilan akhir form Pengolahan Data Barangnya seperti berikut:

Sampai disini pembahasan tentang Pengolahan Data Barang. Anda tidak harus terpaku pada Coding di atas. Anda dapat menambahkan sendiri kreasi coding Anda jika coding di atas dirasa masih kurang menurut Anda karena coding diatas memang masih sederhana. Jika ada pertanyaan terkait pembuatan Form Pengolahan Data Barang bisa ditanyakan lewat kolom komentar. Jika sudah berhasil dalam pembuatan Form Pengolahan Data Barang, bisa lanjut ke pembuatan Form berikutnya.

Terimakasih atas kunjungannya, Selamat belajar dan jangan mudah menyerah.

Wassalamu'alaikum Wr Wb

Comments