Aplikasi Penjualan dengan VB.net dan MariaDB V1: Membuat Form Data Pelanggan 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 Data Pelanggan. Disini akan dijelaskan sourcode yang akan digunakan di form pengolahan Pelanggan.

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()
        TxtKodePelanggan.Focus()
        TxtKodePelanggan.Clear()
        TxtNamaPelanggan.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 pelanggan", Conn)
        DS = New DataSet
        DA.Fill(DS, 0)
        DGVPelanggan.DataSource = DS.Tables(0)
        Conn.Close()
    End Sub

4. Sub Auto Complete
Untuk membuat sugesti pada txtkodepelanggan.
    Sub Autocomplete()
        Koneksi()
        CMD = New OdbcCommand("SELECT kode_pelanggan FROM pelanggan", Conn)
        RD = CMD.ExecuteReader
        While RD.Read
            With TxtKodePelanggan
                .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()
        TxtKodePelanggan.Enabled=True
    End Sub

6. Event Form load
Klik 2x pada bagian form pelanggan kemudian ketikkan coding berikut:
    Private Sub FormPelanggan_Load(sender As Object, e As EventArgs) Handles MyBase.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 txtkodepelanggan
Bertujuan untuk mengisi data yang ada pada tabel pelanggan ke TextBox-TextBox yang lainnya setelah txtkodepelanggan diisi lalu ditekan Enter. Event ini dibuat di txtkodepelanggan pada event KeyDown. Klik pada bagian (General) pilih txtkodepelanggan, kemudian pada bagian (Declaration) pilih KeyDown. Ketikkan coding berikut.
    Private Sub TxtKodePelanggan_KeyDown(sender As Object, e As KeyEventArgs) Handles TxtKodePelanggan.KeyDown
        If e.KeyCode = Keys.Enter Then
            Koneksi()
            CMD = New OdbcCommand("SELECT * FROM pelanggan WHERE kode_pelanggan = '" + TxtKodePelanggan.Text + "'", Conn)
            RD = CMD.ExecuteReader
            If RD.Read Then
                TxtKodePelanggan.Text = RD(0).ToString
                TxtNamaPelanggan.Text = RD(1).ToString
                TxtAlamat.Text = RD(2).ToString
                TxtNoHp.Text = RD(3).ToString
            End If
            Conn.Close()
            TxtNamaPelanggan.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 pelanggan atau nama pelanggan 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 pelanggan WHERE kode_pelanggan LIKE '%" + txtcari.Text + "%' or nama_pelanggan LIKE '%" + txtcari.Text + "%'", Conn)
            DS = New DataSet
            DA.Fill(DS, 0)
            DGVPelanggan.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 DGVpelanggan (DataGridView), kemudian pada bagian (Declaration) pilih CellClick. Setelah itu ketikkan coding berikut ini.
    Private Sub DGVPelanggan_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles DGVPelanggan.CellClick
        Try
            Dim i = e.RowIndex
            Koneksi()
            CMD = New OdbcCommand("SELECT * FROM pelanggan WHERE kode_pelanggan = '" + DGVPelanggan.Item(0, i).Value + "'", Conn)
            RD = CMD.ExecuteReader
            If RD.HasRows Then
                TxtKodePelanggan.Text = RD(0).ToString
                TxtNamaPelanggan.Text = RD(1).ToString
                TxtAlamat.Text = RD(2).ToString
                TxtNoHp.Text = RD(3).ToString
            End If
            Conn.Close()
            TxtKodePelanggan.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 TxtKodePelanggan.Text = "" Then
                MsgBox("Isi terlebih dahulu Kode Pelanggan")
            ElseIf TxtNamaPelanggan.Text = "" Then
                MsgBox("Isi terlebih dahulu Nama Pelanggan")
            ElseIf TxtAlamat.Text = "" Then
                MsgBox("Isi terlebih dahulu Alamat Pelanggan")
            ElseIf TxtNoHp.Text = "" Then
                MsgBox("Isi terlebih dahulu No HP Pelanggan")
            Else
                Koneksi()
                CMD = New OdbcCommand("SELECT kode_pelanggan FROM pelanggan WHERE kode_pelanggan = '" + TxtKodePelanggan.Text + "'", Conn)
                RD = CMD.ExecuteReader
                RD.Read()
                If Not RD.HasRows Then
                    Koneksi()
                    'program untuk simpan data
                    CMD = New OdbcCommand("INSERT INTO pelanggan VALUES (?,?,?,?)", Conn)
                    With CMD
                        .Parameters.AddWithValue("?", TxtKodePelanggan.Text)
                        .Parameters.AddWithValue("?", TxtNamaPelanggan.Text)
                        .Parameters.AddWithValue("?", TxtAlamat.Text)
                        .Parameters.AddWithValue("?", TxtNoHp.Text)
                        .ExecuteNonQuery()
                    End With
                    Conn.Close()
                Else
                    Koneksi()
                    'program untuk edit data
                    CMD = New OdbcCommand("UPDATE pelanggan set nama_pelanggan=?, alamat=?, no_hp=? WHERE kode_pelanggan=?", Conn)
                    With CMD
                        .Parameters.AddWithValue("?", TxtKodePelanggan.Text)
                        .Parameters.AddWithValue("?", TxtNamaPelanggan.Text)
                        .Parameters.AddWithValue("?", TxtAlamat.Text)
                        .Parameters.AddWithValue("?", TxtNoHp.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

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 TxtKodePelanggan.Text = "" Then
            MsgBox("Isi terlebih dahulu kode pelanggan")
        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 pelanggan WHERE kode_pelanggan ='" + TxtKodePelanggan.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 FormPelanggan
    Sub bersihkan()
        TxtKodePelanggan.Focus()
        TxtKodePelanggan.Clear()
        TxtNamaPelanggan.Clear()
        TxtAlamat.Clear()
        TxtNoHp.Clear()
    End Sub
'----------------------
    Sub tampilkan_data()
        Koneksi()
        DA = New OdbcDataAdapter("SELECT * FROM pelanggan", Conn)
        DS = New DataSet
        DA.Fill(DS, 0)
        DGVPelanggan.DataSource = DS.Tables(0)
        Conn.Close()
    End Sub
'----------------------
    Sub Autocomplete()
        Koneksi()
        CMD = New OdbcCommand("SELECT kode_pelanggan FROM pelanggan", Conn)
        RD = CMD.ExecuteReader
        While RD.Read
            With TxtKodePelanggan
                .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()
        TxtKodePelanggan.Enabled=True
    End Sub
'----------------------
    Private Sub FormPelanggan_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        call_all()
    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 TxtKodePelanggan_KeyDown(sender As Object, e As KeyEventArgs) Handles TxtKodePelanggan.KeyDown
        If e.KeyCode = Keys.Enter Then
            Koneksi()
            CMD = New OdbcCommand("SELECT * FROM pelanggan WHERE kode_pelanggan = '" + TxtKodePelanggan.Text + "'", Conn)
            RD = CMD.ExecuteReader
            If RD.Read Then
                TxtKodePelanggan.Text = RD(0).ToString
                TxtNamaPelanggan.Text = RD(1).ToString
                TxtAlamat.Text = RD(2).ToString
                TxtNoHp.Text = RD(3).ToString
            End If
            Conn.Close()
            TxtNamaPelanggan.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 pelanggan WHERE kode_pelanggan LIKE '%" + txtcari.Text + "%' or nama_pelanggan LIKE '%" + txtcari.Text + "%'", Conn)
            DS = New DataSet
            DA.Fill(DS, 0)
            DGVPelanggan.DataSource = DS.Tables(0)
            Conn.Close()
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub
'----------------------
    Private Sub DGVPelanggan_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles DGVPelanggan.CellClick
        Try
            Dim i = e.RowIndex
            Koneksi()
            CMD = New OdbcCommand("SELECT * FROM pelanggan WHERE kode_pelanggan = '" + DGVPelanggan.Item(0, i).Value + "'", Conn)
            RD = CMD.ExecuteReader
            If RD.HasRows Then
                TxtKodePelanggan.Text = RD(0).ToString
                TxtNamaPelanggan.Text = RD(1).ToString
                TxtAlamat.Text = RD(2).ToString
                TxtNoHp.Text = RD(3).ToString
            End If
            Conn.Close()
            TxtKodePelanggan.Enabled=False
        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 TxtKodePelanggan.Text = "" Then
                MsgBox("Isi terlebih dahulu Kode Pelanggan")
            ElseIf TxtNamaPelanggan.Text = "" Then
                MsgBox("Isi terlebih dahulu Nama Pelanggan")
            ElseIf TxtAlamat.Text = "" Then
                MsgBox("Isi terlebih dahulu Alamat Pelanggan")
            ElseIf TxtNoHp.Text = "" Then
                MsgBox("Isi terlebih dahulu No HP Pelanggan")
            Else
                Koneksi()
                CMD = New OdbcCommand("SELECT kode_pelanggan FROM pelanggan WHERE kode_pelanggan = '" + TxtKodePelanggan.Text + "'", Conn)
                RD = CMD.ExecuteReader
                RD.Read()
                If Not RD.HasRows Then
                    Koneksi()
                    'program untuk simpan data
                    CMD = New OdbcCommand("INSERT INTO pelanggan VALUES (?,?,?,?)", Conn)
                    With CMD
                        .Parameters.AddWithValue("?", TxtKodePelanggan.Text)
                        .Parameters.AddWithValue("?", TxtNamaPelanggan.Text)
                        .Parameters.AddWithValue("?", TxtAlamat.Text)
                        .Parameters.AddWithValue("?", TxtNoHp.Text)
                        .ExecuteNonQuery()
                    End With
                    Conn.Close()
                Else
                    Koneksi()
                    'program untuk edit data
                    CMD = New OdbcCommand("UPDATE pelanggan set nama_pelanggan=?, alamat=?, no_hp=? WHERE kode_pelanggan=?", Conn)
                    With CMD
                        .Parameters.AddWithValue("?", TxtKodePelanggan.Text)
                        .Parameters.AddWithValue("?", TxtNamaPelanggan.Text)
                        .Parameters.AddWithValue("?", TxtAlamat.Text)
                        .Parameters.AddWithValue("?", TxtNoHp.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 TxtKodePelanggan.Text = "" Then
            MsgBox("Isi terlebih dahulu kode pelanggan")
        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 pelanggan WHERE kode_pelanggan ='" + TxtKodePelanggan.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 btbatal_Click(sender As Object, e As EventArgs) Handles btbatal.Click
        call_all()
    End Sub
End Class

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

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

Terimakasih atas kunjungannya, Selamat belajar dan jangan mudah menyerah.

Wassalamu'alaikum Wr Wb

Comments