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


Assalamu’alaikum Wr Wb

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


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()
        TxtKodePemasok.Enabled = True
        TxtKodePemasok.Focus()
        TxtKodePemasok.Clear()
        TxtNamaPemasok.Clear()
        TxtAlamat.Clear()
        TxtNoHp.Clear()
    End Sub

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

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

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

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


7. Event KeyPress pada TxtNoHp
Membuat Text NoHp hanya dapat diinput dengan Angka. Event yang digunakan adalah KeyPress

    Private Sub TxtNoHp_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TxtNoHp.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


8. Event KeyDown Pada txtkodePemasok
Bertujuan untuk mengisi data yang ada pada tabel Pemasok ke TextBox-TextBox yang lainnya setelah txtkodePemasok diisi lalu ditekan Enter. Event ini dibuat di txtkodePemasok pada event KeyDown. Klik pada bagian (General) pilih txtkodePemasok, kemudian pada bagian (Declaration) pilih KeyDown. Ketikkan coding berikut.

    Private Sub TxtKodePemasok_KeyDown(sender As Object, e As KeyEventArgs) Handles TxtKodePemasok.KeyDown
        If e.KeyCode = Keys.Enter Then
            Koneksi()
            CMD = New OdbcCommand("SELECT * FROM pemasok WHERE kode_pemasok = '" + TxtKodePemasok.Text + "'", Conn)
            RD = CMD.ExecuteReader
            If RD.Read Then
                TxtKodePemasok.Text = RD(0).ToString
                TxtNamaPemasok.Text = RD(1).ToString
                TxtAlamat.Text = RD(2).ToString
                TxtNoHp.Text = RD(3).ToString
            End If
            Conn.Close()
            TxtNamaPemasok.Focus()
        End If
    End Sub

9. 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 Pemasok atau nama Pemasok 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 pemasok WHERE kode_pemasok LIKE '%" + txtcari.Text + "%' or nama_pemasok LIKE '%" + txtcari.Text + "%'", Conn)
            DS = New DataSet
            DA.Fill(DS, 0)
            DGVpemasok.DataSource = DS.Tables(0)
            Conn.Close()
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub


10. 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 DGVPemasok (DataGridView), kemudian pada bagian (Declaration) pilih CellClick. Setelah itu ketikkan coding berikut ini
    Private Sub DGVpemasok_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles DGVpemasok.CellClick
        Try
            Dim i = e.RowIndex
            Koneksi()
            CMD = New OdbcCommand("SELECT * FROM pemasok WHERE kode_pemasok = '" + DGVpemasok.Item(0, i).Value + "'", Conn)
            RD = CMD.ExecuteReader
            If RD.HasRows Then
                TxtKodePemasok.Text = RD(0).ToString
                TxtNamaPemasok.Text = RD(1).ToString
                TxtAlamat.Text = RD(2).ToString
                TxtNoHp.Text = RD(3).ToString
            End If
            Conn.Close()
            TxtKodePemasok.Enabled = False
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub

11. 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 TxtKodePemasok.Text = "" Then
                MsgBox("Isi terlebih dahulu Kode pemasok")
            ElseIf TxtNamaPemasok.Text = "" Then
                MsgBox("Isi terlebih dahulu Nama pemasok")
            ElseIf TxtAlamat.Text = "" Then
                MsgBox("Isi terlebih dahulu Alamat pemasok")
            ElseIf TxtNoHp.Text = "" Then
                MsgBox("Isi terlebih dahulu No HP pemasok")
            Else
                Koneksi()
                CMD = New OdbcCommand("SELECT kode_pemasok FROM pemasok WHERE kode_pemasok = '" + TxtKodePemasok.Text + "'", Conn)
                RD = CMD.ExecuteReader
                RD.Read()
                If Not RD.HasRows Then
                    Koneksi()
                    'program untuk simpan data
                    CMD = New OdbcCommand("INSERT INTO pemasok VALUES (?,?,?,?)", Conn)
                    With CMD
                        .Parameters.AddWithValue("?", TxtKodePemasok.Text)
                        .Parameters.AddWithValue("?", TxtNamaPemasok.Text)
                        .Parameters.AddWithValue("?", TxtAlamat.Text)
                        .Parameters.AddWithValue("?", TxtNoHp.Text)
                        .ExecuteNonQuery()
                    End With
                    Conn.Close()
                Else
                    Koneksi()
                    'program untuk hapus data
                    CMD = New OdbcCommand("UPDATE pemasok set nama_pemasok=?, alamat=?, no_hp=? WHERE kode_pemasok=?", Conn)
                    With CMD
                        .Parameters.AddWithValue("?", TxtNamaPemasok.Text)
                        .Parameters.AddWithValue("?", TxtAlamat.Text)
                        .Parameters.AddWithValue("?", TxtNoHp.Text)
                        .Parameters.AddWithValue("?", TxtKodePemasok.Text)
                        .ExecuteNonQuery()
                    End With
                    Conn.Close()
                End If
                Conn.Close()
                call_all()
                TxtKodePemasok.Enabled = True
            End If
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub


12. Event Click pada tombol Hapus
Double Click tombol hapus kemudian ketikkan coding dibawah ini:

    Private Sub bthapus_Click(sender As Object, e As EventArgs) Handles bthapus.Click
        If TxtKodePemasok.Text = "" Then
            MsgBox("Isi terlebih dahulu kode pemasok")
        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 pemasok WHERE kode_pemasok ='" + TxtKodePemasok.Text + "'", Conn)
                CMD.ExecuteNonQuery()
                Conn.Close()
                call_all()
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
        Else
            bersihkan()
        End If
    End Sub

13. 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

14. 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 FormPemasok
    Sub bersihkan()
        TxtKodePemasok.Enabled = True
        TxtKodePemasok.Focus()
        TxtKodePemasok.Clear()
        TxtNamaPemasok.Clear()
        TxtAlamat.Clear()
        TxtNoHp.Clear()
    End Sub
    '----------------------
    Sub tampilkan_data()
        Koneksi()
        DA = New OdbcDataAdapter("SELECT * FROM pemasok", Conn)
        DS = New DataSet
        DA.Fill(DS, 0)
        DGVpemasok.DataSource = DS.Tables(0)
        Conn.Close()
    End Sub
    '--------------------------------------
    Sub Autocomplete()
        Koneksi()
        CMD = New OdbcCommand("SELECT kode_pemasok FROM pemasok", Conn)
        RD = CMD.ExecuteReader
        While RD.Read
            With TxtKodepemasok
                .AutoCompleteCustomSource.Add(RD(0).ToString)
                .AutoCompleteMode = AutoCompleteMode.Suggest
                .AutoCompleteSource = AutoCompleteSource.CustomSource
            End With
        End While
        Conn.Close()
    End Sub
    '----------------------------------
    Sub call_all()
        bersihkan()
        tampilkan_data()
        Autocomplete()
    End Sub
    '----------------------
    Private Sub FormPemasok_Load(sender As Object, e As EventArgs) Handles Me.Load
        call_all()
    End Sub
    '----------------------
    Private Sub TxtKodePemasok_KeyDown(sender As Object, e As KeyEventArgs) Handles TxtKodePemasok.KeyDown
        If e.KeyCode = Keys.Enter Then
            Koneksi()
            CMD = New OdbcCommand("SELECT * FROM pemasok WHERE kode_pemasok = '" + TxtKodePemasok.Text + "'", Conn)
            RD = CMD.ExecuteReader
            If RD.Read Then
                TxtKodePemasok.Text = RD(0).ToString
                TxtNamaPemasok.Text = RD(1).ToString
                TxtAlamat.Text = RD(2).ToString
                TxtNoHp.Text = RD(3).ToString
            End If
            Conn.Close()
            TxtNamaPemasok.Focus()
        End If
    End Sub
    '----------------------
    Private Sub TxtNoHp_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TxtNoHp.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 btsimpan_Click(sender As Object, e As EventArgs) Handles btsimpan.Click
        Try
            'validasi jika data masih kosong
            If TxtKodePemasok.Text = "" Then
                MsgBox("Isi terlebih dahulu Kode pemasok")
            ElseIf TxtNamaPemasok.Text = "" Then
                MsgBox("Isi terlebih dahulu Nama pemasok")
            ElseIf TxtAlamat.Text = "" Then
                MsgBox("Isi terlebih dahulu Alamat pemasok")
            ElseIf TxtNoHp.Text = "" Then
                MsgBox("Isi terlebih dahulu No HP pemasok")
            Else
                Koneksi()
                CMD = New OdbcCommand("SELECT kode_pemasok FROM pemasok WHERE kode_pemasok = '" + TxtKodePemasok.Text + "'", Conn)
                RD = CMD.ExecuteReader
                RD.Read()
                If Not RD.HasRows Then
                    Koneksi()
                    'program untuk simpan data
                    CMD = New OdbcCommand("INSERT INTO pemasok VALUES (?,?,?,?)", Conn)
                    With CMD
                        .Parameters.AddWithValue("?", TxtKodePemasok.Text)
                        .Parameters.AddWithValue("?", TxtNamaPemasok.Text)
                        .Parameters.AddWithValue("?", TxtAlamat.Text)
                        .Parameters.AddWithValue("?", TxtNoHp.Text)
                        .ExecuteNonQuery()
                    End With
                    Conn.Close()
                Else
                    Koneksi()
                    'program untuk hapus data
                    CMD = New OdbcCommand("UPDATE pemasok set nama_pemasok=?, alamat=?, no_hp=? WHERE kode_pemasok=?", Conn)
                    With CMD
                        .Parameters.AddWithValue("?", TxtNamaPemasok.Text)
                        .Parameters.AddWithValue("?", TxtAlamat.Text)
                        .Parameters.AddWithValue("?", TxtNoHp.Text)
                        .Parameters.AddWithValue("?", TxtKodePemasok.Text)
                        .ExecuteNonQuery()
                    End With
                    Conn.Close()
                End If
                Conn.Close()
                call_all()
                TxtKodePemasok.Enabled = True
            End If
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub
    '----------------------
    Private Sub btbatal_Click(sender As Object, e As EventArgs) Handles btbatal.Click
        call_all()
    End Sub
    '----------------------
    Private Sub bthapus_Click(sender As Object, e As EventArgs) Handles bthapus.Click
        If TxtKodePemasok.Text = "" Then
            MsgBox("Isi terlebih dahulu kode pemasok")
        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 pemasok WHERE kode_pemasok ='" + TxtKodePemasok.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 btkeluar_Click(sender As Object, e As EventArgs) Handles btkeluar.Click
        Close()
    End Sub
    '----------------------
    Private Sub DGVpemasok_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles DGVpemasok.CellClick
        Try
            Dim i = e.RowIndex
            Koneksi()
            CMD = New OdbcCommand("SELECT * FROM pemasok WHERE kode_pemasok = '" + DGVpemasok.Item(0, i).Value + "'", Conn)
            RD = CMD.ExecuteReader
            If RD.HasRows Then
                TxtKodePemasok.Text = RD(0).ToString
                TxtNamaPemasok.Text = RD(1).ToString
                TxtAlamat.Text = RD(2).ToString
                TxtNoHp.Text = RD(3).ToString
            End If
            Conn.Close()
            TxtKodePemasok.Enabled = False
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub
    '----------------------
    Private Sub txtcari_TextChanged(sender As Object, e As EventArgs) Handles txtcari.TextChanged
        Try
            Koneksi()
            DA = New OdbcDataAdapter("SELECT * FROM pemasok WHERE kode_pemasok LIKE '%" + txtcari.Text + "%' or nama_pemasok LIKE '%" + txtcari.Text + "%'", Conn)
            DS = New DataSet
            DA.Fill(DS, 0)
            DGVpemasok.DataSource = DS.Tables(0)
            Conn.Close()
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub

End Class

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

Sampai disini pembahasan tentang Pengolahan Data Pemasok. 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 Pemasok bisa ditanyakan lewat kolom komentar. Jika sudah berhasil dalam pembuatan Form Pengolahan Data Pemasok, bisa lanjut ke pembuatan Form lainnya.

Terimakasih atas kunjungannya, Selamat belajar dan jangan mudah menyerah.

Wassalamu'alaikum Wr Wb


Comments