Tuesday, March 24, 2015

penggunaan radio button dan checkbox dalam vb.net



Banyak pertanyaan yang diajukan tentang bagaimana cara mengolah data yang di dalamnya mengandung Radio Button (dalam vb 6.0 disebut option button) dan CheckBox. Pada bab ini kami akan membahasnya sebagai jawaban atas pertanyaan tersebut.

Membuat Project Baru

Tahapan pertama dalam mengolah data menggunakan Radio Button dan CheckBox adalah sebagai berikut:
1.         Buka visual studio 2008
2.         Klik create project
3.         Tulis nama project “Radio Button dan CheckBox”
4.         OK

Setelah membuat project baru dan menyimpannya di posisi tertentu, maka akan terbentuk folder project secara otomatis yang di dalamnya terdapat folder ... >> BIN>> DEBUG. Folder inilah yang akan dijadikan tempat menyimpan database.

Membuat Database Dan Tabel

Lakukan langkah-langkah di bawah ini untuk membuat database dan tabel.
1.              Buka database access 2003
2.              Buatlah sebuah database yang baru kemudian tulis nama database “DBLatihan.mdb” dan  simpan di posisi DEBUG project anda
3.              Kemudian buatlah tabel PEGAWAI dengan cara klik menu Create >> Table >> Klik kanan table1 >> Design View dan tulis nama tabel
Tabel Pegawai

Membuat Module Koneksi Database

Setiap project pengolahan database pasti memerlukan string koneksi ke database yang bersangkutan, oleh karena itu buatlah module koneksi dengan melakukan klik pada menu project >> add module >> Add.
Membuat module

Coding :
Imports System.Data.OleDb

Module Module1
    Public CONN As OleDbConnection
    Public DA As OleDbDataAdapter
    Public DS As New DataSet
    Public CMD As OleDbCommand
    Public DR As OleDbDataReader

    Sub Koneksi()
        Try
            CONN = New OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=dblatihan.mdb")
            CONN.Open()
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub
End Module

Form Pegawai Dengan Radio Button dan CheckBox

Sebagai langkah awal untuk menjawab pertanyaan tentang bagaimana membuat pengolahan database yang di dalamnya menggunakan Radio Button dan CheckBox, maka buatlah form pegawai dengan bentuk seperti gambar berikut ini.
Form user

Coding :
Imports System.Data.OleDb

Public Class Form1
    'mendefinisikan gender han hobi yang akan menjadi pilihan
    Dim gender As String
    Dim hobi As String

    Sub Kosongkan()
        TextBox1.Clear()
        TextBox2.Clear()
        TextBox3.Clear()
        TextBox4.Clear()
        RadioButton1.Checked = False
        RadioButton2.Checked = False
        ComboBox1.Text = ""
        CheckBox1.Checked = False
        CheckBox2.Checked = False
        TextBox1.Focus()
    End Sub

    Sub DataBaru()
        TextBox2.Clear()
        TextBox3.Clear()
        TextBox4.Clear()
        RadioButton1.Checked = False
        RadioButton2.Checked = False
        ComboBox1.Text = ""
        CheckBox1.Checked = False
        CheckBox2.Checked = False
        TextBox2.Focus()
    End Sub

    Sub KETEMU()
        On Error Resume Next
        CheckBox1.Checked = False
        CheckBox2.Checked = False
        TextBox2.Text = DR.Item("Nama")
        TextBox3.Text = DR.Item("Alamat")
        ComboBox1.Text = DR.Item("sTATUS")
        'jika gender = Pria maka radiobutton1 di pilih (centang)
        If DR.Item("gender") = "Pria" Then
            RadioButton1.Checked = True
        Else
            RadioButton2.Checked = True
        End If

        'jika hobi = Olah Raga maka checkbox1 dipilih (centang)
        If DR.Item("hobi") = "Olah Raga" Then
            CheckBox1.Checked = True
        ElseIf DR.Item("hobi") = "Seni" Then
            CheckBox2.Checked = True
        ElseIf DR.Item("hobi") = "Olah Raga - Seni" Then
            CheckBox1.Checked = True
            CheckBox2.Checked = True
        End If
    End Sub

    Sub Tampilgrid()
        DA = New OleDbDataAdapter("select * from Pegawai", CONN)
        DS = New DataSet
        DA.Fill(DS)
        DGV.DataSource = DS.Tables(0)
        DGV.ReadOnly = True
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Call Koneksi()
        Call Tampilgrid()
    End Sub

    Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
        TextBox1.MaxLength = 5
        If e.KeyChar = Chr(13) Then
            CMD = New OleDbCommand("select * from Pegawai where NIP='" & TextBox1.Text & "'", CONN)
            DR = CMD.ExecuteReader
            DR.Read()
            If DR.HasRows Then
                Call KETEMU()
                TextBox2.Focus()
            Else
                Call DataBaru()
            End If
        End If
    End Sub

    Private Sub TextBox2_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox2.KeyPress
        TextBox2.MaxLength = 30
        If e.KeyChar = Chr(13) Then
            TextBox3.Focus()
        End If
    End Sub

    Private Sub TextBox3_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox3.KeyPress
        TextBox3.MaxLength = 30
        If e.KeyChar = Chr(13) Then
            TextBox4.Focus()
        End If
    End Sub


    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        If TextBox1.Text = "" Or TextBox2.Text = "" Or TextBox3.Text = "" Or ComboBox1.Text = "" Then
            MsgBox("data belum lengkap")
            Exit Sub
        Else
         'jika radiobutton1 dipilih maka ambil properti text-nya
            If RadioButton1.Checked = True Then
                gender = RadioButton1.Text
            ElseIf RadioButton2.Checked = True Then
                gender = RadioButton2.Text
            End If

            'jika checkbox1 dipilih maka ambil properti text-nya
            If CheckBox1.Checked = True Then
                hobi = CheckBox1.Text
            End If

            If CheckBox2.Checked = True Then
                hobi = CheckBox2.Text
            End If

            'jika checkbox1 dan 2 dipilih maka ambil dan gabungkan properti text-nya
            If CheckBox1.Checked = True And CheckBox2.Checked = True Then
                hobi = CheckBox1.Text & " - " & CheckBox2.Text
            End If

            CMD = New OleDbCommand("select * from Pegawai where NIP='" & TextBox1.Text & "'", CONN)
            DR = CMD.ExecuteReader
            DR.Read()
            If Not DR.HasRows Then
                Dim simpan As String = "insert into Pegawai values('" & TextBox1.Text & "','" & TextBox2.Text & "','" & TextBox3.Text & "','" & gender & "','" & ComboBox1.Text & "','" & hobi & "')"
                CMD = New OleDbCommand(simpan, CONN)
                CMD.ExecuteNonQuery()
            Else
                Dim edit As String = "update Pegawai set Nama='" & TextBox2.Text & "',Alamat='" & TextBox3.Text & "',gender='" & gender & "',status='" & ComboBox1.Text & "',hobi='" & hobi & "' where NIP='" & TextBox1.Text & "'"
                CMD = New OleDbCommand(edit, CONN)
                CMD.ExecuteNonQuery()
            End If
            Call Kosongkan()
            Call Tampilgrid()
        End If
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        If TextBox1.Text = "" Then
            MsgBox("NIP harus diisi dulu")
            TextBox1.Focus()
            Exit Sub
        Else
            If MessageBox.Show("hapus data ini...?", "", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.Yes Then
                Dim hapus As String = "delete from Pegawai where NIP='" & TextBox1.Text & "'"
                CMD = New OleDbCommand(hapus, CONN)
                CMD.ExecuteNonQuery()
                Call Kosongkan()
                Call Tampilgrid()
            Else
                Call Kosongkan()
            End If
        End If
    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        Call Kosongkan()
    End Sub

    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        Me.Close()
    End Sub

    Private Sub TextBox4_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox4.TextChanged
        DA = New OleDbDataAdapter("select * from Pegawai where Nama like '%" & TextBox4.Text & "%'", CONN)
        DS = New DataSet
        DA.Fill(DS)
        DGV.DataSource = DS.Tables(0)
    End Sub

    Private Sub DGV_CellMouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles DGV.CellMouseClick
        On Error Resume Next
        TextBox1.Text = DGV.Rows(e.RowIndex).Cells(0).Value
        CMD = New OleDbCommand("select * from Pegawai where NIP='" & TextBox1.Text & "'", CONN)
        DR = CMD.ExecuteReader
        DR.Read()
        If DR.HasRows Then
            Call KETEMU()
        End If
    End Sub

End Class



7 comments

Mas mohon dibantu..pas saya jalankan muncul error yang mengatakan "Unrecognized database format 'C:\Backup\Program TPSI\Loundry\Loundry\bin\Debug\DBLoundry.accdb'."

itu menandakan bahwa database tidak terdapat didalam TPS\Loundry\Bin\Debug
solusinya adalah copy database yang anda buat lalu di save ke dalam TPS\Loundry\Bin\Debug

kodingan terlalu boros baris
kurang efisien
tidak memaksimalkan fungsi yang sudah ada VB.NET
contoh : validasi checkbox tidak menggunakan for-next (looping)
kalau ada 100 checkbox gimana om ?

ini hanya sample, kalo ada seratus, seribu atau sejuta checkbox kita bisa gunakan grid atau array atau fungsi iterasi for ... next atau do while atau yang lainnya. terima kasih atas sarannya

maaf mau tanya, kalo pengulangan if pada checkbox di proses simpan di ganti dengan select case, bagaimana? lalu misalnya ternyata yang di cek banyak, perintah untuk programnya seperti apa ya? mohon pencerahannya
terima kasih.

Pak mau nanya... Kok tombol simpan di klik 2x baru datanya disimpan??
Trus tombol hapus juga sebaliknya...
Di tggu blsnnya Pak..
Salam 🤗

Terimakasih, sangat membantu!


EmoticonEmoticon