22 Februari 2018

Program VB.Net Sederhana

Langkah-langkah pembuatan program VB.Net 1 File)
1. Buat sebuah Database yang terdiri dari 1 buah tabel (dalam contoh ini database dibuat
    menggunakan sql) :
 
    Nama Database : p2kpns
    Nama Tabel : Pegawai


2. Buka VB.Net, buatlah project (nama project : p2kpns) dan 1 buah form (nama form : PEGAWAI)
3. Tarik komponen-komponen yang dibutuhkan kedalam form, dalam contoh ini komponen yang 
    dibutuhkan terdiri dari 9 buah Label, 5 buah TextBox, 2 buah RadioButton, 1 buah 
    DiteTimePicker, 3 buah ComboBox, 6 buah tombol Button dan DataGridView untuk  menampilkan 
    hasil record yang tersimpan. Tampilan lengkap hasil desain seperti berikut :


 4. Sebelum memulai membuat coding programnya terlebih dahulu buatlah sebuah modul untuk 
     pemanggilan database.
kemudian ketik coding berikut dalam modul yang telah dibuat :

Imports System.Data.Odbc

Module Module1
    Public KONEKSI As OdbcConnection
    Public COMD As OdbcCommand
    Public levellogin As String

    Public Sub KONEKSIDATABASE()
        KONEKSI = New OdbcConnection("Driver={MYSQL ODBC 5.1 Driver};database=P2KPNS;server=localhost;uid=root")
        If KONEKSI.State = ConnectionState.Closed Then
            KONEKSI.Open()
        End If
    End Sub
End Module

5. Kemudian pindah ke form, untuk memulai membuat coding lakukan langkah-langkah berikut :

- Double Click Form, kemudian ketik :

Public Class Pegawai
    Dim cmdpegawai As New OdbcCommand
    Dim dapegawai As OdbcDataAdapter
    Dim drpegawai As OdbcDataReader
    Dim tkodeunit, tkodegol, tkodejab As String
    Dim KET As Char

Private Sub Pegawai_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        KONEKSIDATABASE()
        Call tampilview()
        Call tampilgol()
        Call tampiljabatan()
        Call tampilunit()
        tnip.Text = ""
        Call KOSONG()
        Call TIDAKAKTIF()
        tnip.MaxLength = 21
 End Sub

'untuk pengosongan form 
    Sub KOSONG()
        tnama.Text = ""
        ttempat.Text = ""
        tgol.Text = ""
        tjabatan.Text = ""
        tunit.Text = ""
        tlaki.Checked = False
        tperempuan.Checked = False
        tgol.Text = ""
        ttelp.Text = ""
        talamat.Text = ""
    End Sub

    'untuk mengaktifkan textbox dan komponen lainnya
    Sub AKTIF()
        tnama.Enabled = True
        ttempat.Enabled = True
        tgol.Enabled = True
        tlaki.Enabled = True
        tperempuan.Enabled = True
        tgol.Enabled = True
        tjabatan.Enabled = True
        tunit.Enabled = True
        ttelp.Enabled = True
        talamat.Enabled = True
        ttgl.Enabled = True
        simpan.Enabled = True
        hapus.Enabled = True
        koreksi.Enabled = True
        batal.Enabled = True
    End Sub
    
    'untuk mengnon-aktifkan textbox dan komponen lainnya
    Sub TIDAKAKTIF()
        tnama.Enabled = False
        ttempat.Enabled = False
        tgol.Enabled = False
        tlaki.Enabled = False
        ttgl.Enabled = False
        tperempuan.Enabled = False
        tgol.Enabled = False
        tjabatan.Enabled = False
        tunit.Enabled = False
        ttelp.Enabled = False
        talamat.Enabled = False
        simpan.Enabled = False
        hapus.Enabled = False
        koreksi.Enabled = False
        batal.Enabled = False
    End Sub
    
    'untuk membuat isi combobox
    Sub tampilgol()
        tgol.Items.Add("Pembina Utama / IVe")
        tgol.Items.Add("Pembina Utama Madya / IVd")
        tgol.Items.Add("Pembina Utama Muda / IVc")
        tgol.Items.Add("Pembina Tingkat I / IVb")
        tgol.Items.Add("Pembina / IVa")
        tgol.Items.Add("Penata Tingkat I / IIId")
        tgol.Items.Add("Penata / IIIc")
        tgol.Items.Add("Penata Muda Tingkat I / IIIb")
        tgol.Items.Add("Penata Muda / IIIa")
        tgol.Items.Add("Pengatur Tingkat I / IId")
        tgol.Items.Add("Pengatur / IIc")
        tgol.Items.Add("Pengatur Muda Tingkat I / IIb")
        tgol.Items.Add("Pengatur Muda / IIa")
        tgol.Items.Add("Juru Tingkat I / Id")
        tgol.Items.Add("Juru / Ic")
        tgol.Items.Add("Juru Muda Tingkat I / Ib")
        tgol.Items.Add("Juru Muda / Ia")
    End Sub

    Sub tampiljabatan()
        Dim str As String = "select kode,nama from jabatan order by kode"
        If KONEKSI.State = ConnectionState.Closed Then
            KONEKSI.Open()
        End If
        cmdpegawai = New OdbcCommand(str, KONEKSI)
        drpegawai = cmdpegawai.ExecuteReader
        Try
            While drpegawai.Read
                tjabatan.Items.Add(drpegawai!kode & "   |   " & drpegawai!nama)
            End While
        Catch ex As Exception
            MsgBox("Data Jabatan kosong, Input data Jabatan dari Form Jabatan", vbOKOnly, "Warning...")
        Finally
            cmdpegawai.Dispose()
        End Try
    End Sub

    Sub tampilunit()
        Dim str As String = "select kode,nama from unitkerja order by kode"
        If KONEKSI.State = ConnectionState.Closed Then
            KONEKSI.Open()
        End If
        cmdpegawai = New OdbcCommand(str, KONEKSI)
        drpegawai = cmdpegawai.ExecuteReader
        Try
            While drpegawai.Read
                tunit.Items.Add(drpegawai!kode & "   |   " & drpegawai!nama)
            End While
        Catch ex As Exception
            MsgBox("Data Unit Kerja kosong, Input data Unit Kerja dari Form Unit Kerja", vbOKOnly, "Warning...")
        Finally
            cmdpegawai.Dispose()
        End Try
    End Sub

- Double click textbox NIP (Namenya : TNIP), ketik coding berikut :

Private Sub tnip_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tnip.TextChanged
        If Len(tnip.Text) < 21 Then
            Exit Sub
        End If
        If KONEKSI.State = ConnectionState.Closed Then
            KONEKSI.Open()
        End If
        Dim str As String = "select * from pegawai where nip ='" & tnip.Text & "'"
        cmdpegawai = New OdbcCommand(str, KONEKSI)
        drpegawai = cmdpegawai.ExecuteReader
        drpegawai.Read()
        If drpegawai.HasRows Then
            tnama.Text = drpegawai!nama
            ttempat.Text = drpegawai!tempat
            ttgl.Value = drpegawai!tanggal
            If drpegawai!jekel = "L" Then
                tlaki.Checked = True
            ElseIf drpegawai!jekel = "P" Then
                tperempuan.Checked = True
            End If
            ttelp.Text = drpegawai!telp
            talamat.Text = drpegawai!alamat
            tkodeunit = drpegawai!kodeunit
            tgol.Text = drpegawai!kodegol
            tkodejab = drpegawai!kodejab

            Dim str2 As String = "select kode,nama from jabatan where kode = '" & tkodejab & "'"
            cmdpegawai = New OdbcCommand(str2, KONEKSI)
            drpegawai = cmdpegawai.ExecuteReader
            drpegawai.Read()
            If drpegawai.HasRows Then
                tjabatan.Text = drpegawai!kode & "   |   " & drpegawai!nama
            End If

            Dim str3 As String = "select kode,nama from unitkerja where kode = '" & tkodeunit & "'"
            cmdpegawai = New OdbcCommand(str3, KONEKSI)
            drpegawai = cmdpegawai.ExecuteReader
            drpegawai.Read()
            If drpegawai.HasRows Then
                tunit.Text = drpegawai!kode & "   |   " & drpegawai!nama
            End If

            TIDAKAKTIF()
            koreksi.Enabled = True
            hapus.Enabled = True
            batal.Enabled = True
            Exit Sub
        End If
        KOSONG()
        AKTIF()
        tnama.Focus()
        koreksi.Enabled = False
        hapus.Enabled = False
        cmdpegawai.Dispose()
        KONEKSI.Close()
    End Sub

- Double click RadioButton Laki-Laki dan Perempuan (Namenya : tlaki, tperempuan), 
   ketik coding berikut :

Private Sub tlaki_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tlaki.CheckedChanged
        KET = "L"
End Sub

Private Sub tperempuan_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tperempuan.CheckedChanged
        KET = "P"
End Sub

- Double tombol tambah, simpan, koreksi, hapus, batal dan close
   ketik coding berikut :

Private Sub tambah_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tambah.Click
        KOSONG()
        tnip.Text = ""
        tnip.Focus()
        TIDAKAKTIF()
End Sub

Private Sub simpan_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles simpan.Click
        Dim str As String
        Try
            If KONEKSI.State = ConnectionState.Closed Then
                KONEKSI.Open()
            End If
            str = "insert into pegawai(nip,nama,tempat,tanggal,jekel,kodegol,kodejab,kodeunit" & _
                    ",alamat,telp) values('" & tnip.Text & "','" & tnama.Text & "','" & ttempat.Text & "'," & _
                    "'" & Format(ttgl.Value, "yyyy-MM-dd") & "','" & KET & "','" & tgol.Text & _
                    "', '" & LSet(tjabatan.Text, 3) & "','" & LSet(tunit.Text, 3) & "','" & talamat.Text & "','" & ttelp.Text & "')"
            cmdpegawai = New OdbcCommand(str, KONEKSI)
            cmdpegawai.ExecuteNonQuery()
            tampilview()
            tnip.Text = ""
            KOSONG()
            TIDAKAKTIF()
            tnip.Focus()
        Catch ex As Exception
            MsgBox(ex.ToString)
        Finally
            cmdpegawai.Dispose()
            KONEKSI.Close()
        End Try
End Sub

Private Sub koreksi_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles koreksi.Click
        If ToolTip3.Tag = "aa" Then
            AKTIF()
            simpan.Enabled = False
            ToolTip3.Tag = "bb"
            ToolTip3.ToolTipTitle = "Update"
        ElseIf ToolTip3.Tag = "bb" Then
            Dim str As String
            Try
                If KONEKSI.State = ConnectionState.Closed Then
                    KONEKSI.Open()
                End If
                str = "update pegawai set nama='" & tnama.Text & "',tempat='" & ttempat.Text & _
                    "' ,tanggal='" & Format(ttgl.Value, "yyyy-MM-dd") & "',jekel='" & KET & _
                    "' ,kodegol = '" & tgol.Text & "', kodejab = '" & LSet(tjabatan.Text, 3) & _
                    "' ,kodeunit = '" & LSet(tunit.Text, 3) & "', alamat='" & talamat.Text & _
                    "',telp='" & ttelp.Text & "' WHERE nip='" & tnip.Text & "'"
                cmdpegawai = New OdbcCommand(str, KONEKSI)
                cmdpegawai.ExecuteNonQuery()
                tampilview()
                tnip.Text = ""
                KOSONG()
                TIDAKAKTIF()
                tnip.Focus()
                ToolTip3.Tag = "aa"
                ToolTip3.ToolTipTitle = Nothing
            Catch ex As Exception
                MsgBox(ex.ToString)
            Finally
                cmdpegawai.Dispose()
                KONEKSI.Close()
            End Try
        End If

    End Sub

Private Sub hapus_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles hapus.Click
        Dim str, str1 As String
        Try
            If MsgBox("Yakin data dihapus...?", MsgBoxStyle.YesNo, "Konfirmasi") = MsgBoxResult.Yes Then
                If KONEKSI.State = ConnectionState.Closed Then
                    KONEKSI.Open()
                End If

                str1 = "select sasarankerja.nip,perilaku.nip FROM sasarankerja,perilaku WHERE sasarankerja.nip='" & tnip.Text & "' or perilaku.nip='" & tnip.Text & "'"
                cmdpegawai = New OdbcCommand(str1, KONEKSI)
                drpegawai = cmdpegawai.ExecuteReader
                drpegawai.Read()
                If drpegawai.HasRows Then
                    MsgBox("Data tidak bisa dihapus, karena terkait dengan data lain...", vbExclamation, "Warning")
                    Exit Sub
                End If

                str = "DELETE FROM pegawai WHERE nip='" & tnip.Text & "'"
                cmdpegawai = New OdbcCommand(str, KONEKSI)
                cmdpegawai.ExecuteNonQuery()
                tampilview()
                tnip.Text = ""
                KOSONG()
                TIDAKAKTIF()
                tnip.Focus()
            End If
        Catch ex As Exception
            MsgBox(ex.ToString)
        Finally
            cmdpegawai.Dispose()
            KONEKSI.Close()
        End Try

    End Sub

Private Sub batal_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles batal.Click
        KOSONG()
        tnip.Text = ""
        tnip.Focus()
        TIDAKAKTIF()

End Sub

Private Sub keluar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles keluar.Click
        Me.Dispose()

End Sub


-  terakhir ketik coding berikut untuk menampilan data dalam datagridview:

Sub tampilview()
        If KONEKSI.State = ConnectionState.Closed Then
            KONEKSI.Open()
        End If
        cmdpegawai.CommandType = CommandType.Text
        Dim str As String = "select pegawai.nip,pegawai.nama,pegawai.tempat,pegawai.tanggal" & _
            ",pegawai.kodegol,jabatan.nama,unitkerja.nama from pegawai,jabatan" & _
            ",unitkerja where pegawai.kodejab = jabatan.kode and " & _
            "pegawai.kodeunit = unitkerja.kode order by pegawai.nama asc"
        cmdpegawai = New OdbcCommand(str, KONEKSI)
        drpegawai = cmdpegawai.ExecuteReader
        tampil.Rows.Clear()
        With tampil
            .ColumnCount = 6
            .Columns(0).Name = "N I P"
            .Columns(1).Name = "Nama Pegawai"
            .Columns(2).Name = "Tempat/Tgl. Lahir"
            .Columns(3).Name = "Pangkat/Gol.Ruang"
            .Columns(4).Name = "Jabatan"
            .Columns(5).Name = "Unit Kerja"
            .Columns(0).Width = 130
            .Columns(1).Width = 190
            .Columns(2).Width = 250
            .Columns(3).Width = 150
            .Columns(4).Width = 150
            .Columns(5).Width = 350
        End With
        While drpegawai.Read
            With tampil
                Dim baris As Object() = New Object() {drpegawai.GetString(0).ToString, drpegawai.GetString(1).ToString, drpegawai.GetString(2).ToString & ", " & drpegawai.GetValue(3),
                drpegawai.GetString(4).ToString, drpegawai.GetString(5).ToString, drpegawai.GetString(6).ToString}
                .Rows.Add(baris)
            End With
        End While
        cmdpegawai.Dispose()
        KONEKSI.Close()

End Sub

Semoga contoh program ini bisa dijadikan panduan bagi kita yang ingin mencoba membuat program vb.net.
--------------------------------------------------------------------