Thursday, 18 December 2014

UAS LAB VB 2 - SHABRINA GHASSANI 1306470110

Halo semuanya! Kali ini saya akan menjelaskan tentang cara memanipulasi data dengan menghubungkan Microsoft Access dengan Visual Basic. Saya telah membuat form mengenai pembayaran gaji karyawan. Berikut adalah ketentuan-ketentuan dalam menghitung gaji karyawan:

  1. Gaji pokok manajer sebesar Rp25.000.000,- sedangkan gaji staf sebesar Rp10.000.000,-
  2. Jika status karyawan menikah, maka tunjangan pasangannya sebesar 10% dari gaji pokok, sedangkan jika belum menikah, maka karyawan tidak mendapatkan tunjangan pasangan.
  3. Jika karyawan memiliki anak, maka tunjangan anak yang didapatkan adalah sebesar 2% dari gaji pokok untuk setiap anak. Tetapi maksimal hanya 2 anak yang akan mendapatkan tunjangan anak. Jika karyawan memiliki anak lebih dari 2, maka tunjangan anak yang didapatkan hanya sebesar tunjangan anak untuk 2 anak, dan jika karyawan tidak memiliki anak, maka karyawan tidak mendapatkan tunjangan anak.
  4. Setiap karyawan dikenakan pajak yang besarnya 5% dari gaji pokok.
  5. Total gaji karyawan diperoleh dari: gaji pokok + tunjangan pasangan + tunjangan anak - pajak
Hal pertama yang saya lakukan adalah membuat database pada Microsoft Access. Tabel telah saya namakan tblGajiKaryawan, dengan nama-nama field dan tipe data seperti berikut:


Setelah itu, simpan tabel kita. Lalu masukkan data-data yang pengguna perlukan seperti berikut:


Simpan data-data yang telah dimasukkan. Lalu, buat query untuk memasukkan rumus yang dibutuhkan dalam menghitung gaji karyawan. Cara membuat query adalah dengan klik Create, lalu pilih Query Design seperti berikut:


Pada Show Table, pilih tabel yang telah dibuat dan klik Add, lalu masukkan rumus berikut:


  • GajiPokok: IIf([Jabatan]="Manajer";25000000;10000000)
  • TunjanganPasangan: IIf([StatusPernikahan]="Menikah";[GajiPokok]*10/100;0)
  • TunjanganAnak: IIf([JumlahAnak]=0;0;IIf([JumlahAnak]=1;[GajiPokok]*2/100;[GajiPokok]*2/100*2))
  • Pajak: [GajiPokok]*5/100
  • TotalGaji: [GajiPokok]+[TunjanganPasangan]+[TunjanganAnak]-[Pajak]
Simpan database kita dalam folder yang sama dengan project VB yang akan dibuat. Buat project baru pada VB, lalu koneksikan dengan database yang telah kita buat dengan cara seperti berikut:

Pada General Tab, klik Data Sources lalu klik Add New Data Source


Pilih Database, lalu klik Next


Pilih Dataset, lalu klik Next


Klik Browse dan pilih database Ms.Access yang telah dibuat, lalu klik OK


Expand pada "Connection string that you will save in the application" lalu Copy untuk dimasukkan pada source code nanti, lalu klik Finish


Klik Yes


Check pada CheckBox "Yes, save the connection as", lalu klik Next


Check pada CheckBox Tables dan Views, lalu klik Finish


Setelah itu, buatlah 2 form, form pertama bernama FormLogin dan form kedua saya namakan Form1. Susunlah kedua form seperti berikut:

FormLogin


Pada TextBox untuk password, ubah UseSystemPasswordChar pada Properties dari False menjadi True agar saat di debug, password tidak dapat terlihat.

Form1
Drag isi tblGajiKaryawan dari Data Sources pada General Tab, Anda dapat mengganti TextBox dengan tools lainnya dengan cara klik pada tanda panah berikut:


Pada Tab General, pilih Data Source, lalu double klik DatabaseGajiDataSet, setelah itu drag tblGajiKaryawan ke Form1.


Untuk TextBox gaji pokok, tunjangan pasangan, tunjangan anak, pajak, serta RichTextBox total gaji, ubah ReadOnly pada Properties TextBox dan RichTextBox dari False menjadi True agar saat di debug hasil perhitungan tidak dapt diubah sembarangan.

Berikut ini adalah source code untuk FormLogin:

Button Login:
Private Sub LoginButton_Click(sender As Object, e As EventArgs) Handles LoginButton.Click
        If txtusername.Text = "admin" And txtpassword.Text = "123" Then
            MsgBox("Anda telah masuk kedalam form pembayaran gaji pegawai", MsgBoxStyle.Information, "Login")
            Form1.Show()
        Else
            If txtusername.Text = "" And txtpassword.Text = "" Then
                MsgBox("Username dan Password Tidak Ditemukan", MsgBoxStyle.Critical, "Error")
            Else
                If txtusername.Text = "" Then
                    MsgBox("Username Tidak Ditemukan", MsgBoxStyle.Critical, "Error")
                Else
                    If txtpassword.Text = "" Then
                        MsgBox("Password Tidak Ditemukan", MsgBoxStyle.Critical, "Error")
                    Else
                        MsgBox("Username dan/atau Password salah", MsgBoxStyle.Critical, "Error")
                    End If
                End If
            End If
        End If
    End Sub

Button Cancel:

Private Sub CancelButton_Click(sender As Object, e As EventArgs) Handles CancelButton.Click
        Me.Close()
    End Sub

Source code untuk Form1:

Pada Form1 itu sendiri tambahkan source code berikut:

Imports System.Data
Imports System.Data.SqlClient
Imports System.Data.OleDb
Public Class Form1

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        'TODO: This line of code loads data into the 'DatabaseGajiDataSet.tblGajiKaryawan' table. You can move, or remove it, as needed.
        Me.TblGajiKaryawanTableAdapter.Fill(Me.DatabaseGajiDataSet.tblGajiKaryawan)

    End Sub

Button Baru:

Private Sub BaruButton_Click(sender As Object, e As EventArgs) Handles BaruButton.Click
        TblGajiKaryawanBindingSource.AddNew()
    End Sub

Button Simpan:

Private Sub SimpanButton_Click(sender As Object, e As EventArgs) Handles SimpanButton.Click
        Me.Validate()
        Me.TblGajiKaryawanBindingSource.EndEdit()
        TblGajiKaryawanTableAdapter.Update(Me.DatabaseGajiDataSet.tblGajiKaryawan)

        Dim koneksi As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\UAS LAB VB 2 - SHABRINA GHASSANI 1306470110\DatabaseGaji.accdb"

        Dim tambah As String = "insert into tblGajiKaryawan values('" & NIKTextBox.Text & "','" & NamaKaryawanTextBox.Text & "','" & JabatanComboBox.Text & "','" & GajiPokokTextBox.Text & "','" & StatusPernikahanComboBox.Text & "','" & JumlahAnakComboBox.Text & "','" & TunjanganPasanganTextBox.Text & "','" & TunjanganAnakTextBox.Text & "','" & PajakTextBox.Text & "','" & TotalGajiRichTextBox.Text & "')"

        Dim objekkoneksi As New OleDb.OleDbConnection(koneksi)

        objekkoneksi.Open()
        Dim ocmd = New OleDbCommand(tambah, objekkoneksi)
        ocmd.ExecuteNonQuery()
        MsgBox("Data telah tersimpan")
        objekkoneksi.Close()
     
    End Sub

Button Hapus:

Private Sub HapusButton_Click(sender As Object, e As EventArgs) Handles HapusButton.Click
        TblGajiKaryawanBindingSource.RemoveCurrent()
    End Sub

Button Hitung:

Private Sub HitungButton_Click(sender As Object, e As EventArgs) Handles HitungButton.Click
        If JabatanComboBox.Text = "Manajer" Then
            GajiPokokTextBox.Text = "25000000"
        Else
            GajiPokokTextBox.Text = "10000000"
        End If
        If StatusPernikahanComboBox.Text = "Belum Menikah" Then
            TunjanganPasanganTextBox.Text = "0"
        Else
            TunjanganPasanganTextBox.Text = GajiPokokTextBox.Text * 10 / 100
        End If
        If JumlahAnakComboBox.Text = "0" Then
            TunjanganAnakTextBox.Text = "0"
        End If
        If JumlahAnakComboBox.Text = "1" Then
            TunjanganAnakTextBox.Text = GajiPokokTextBox.Text * 2 / 100
        End If
        If JumlahAnakComboBox.Text = "2" Then
            TunjanganAnakTextBox.Text = GajiPokokTextBox.Text * 2 / 100 * 2
        End If
        If JumlahAnakComboBox.Text > "2" Then
            TunjanganAnakTextBox.Text = GajiPokokTextBox.Text * 2 / 100 * 2
        End If
        PajakTextBox.Text = GajiPokokTextBox.Text * 5 / 100
        TotalGajiRichTextBox.Text = Val(GajiPokokTextBox.Text) + Val(TunjanganPasanganTextBox.Text) + Val(TunjanganAnakTextBox.Text) - Val(PajakTextBox.Text)
    End Sub

Button Ubah:

Private Sub UbahButton_Click(sender As Object, e As EventArgs) Handles UbahButton.Click
        Dim koneksi As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\UAS LAB VB 2 - SHABRINA GHASSANI 1306470110\DatabaseGaji.accdb;persist security info = false"
        Dim conn As New OleDb.OleDbConnection(koneksi)
        conn.Open()
        Dim MyIndex As Integer
        Dim NIK As Integer
        Dim NamaKaryawan As String
        Dim Jabatan As String
        Dim StatusPernikahan As String
        Dim JumlahAnak As String

        MyIndex = TblGajiKaryawanDataGridView.CurrentRow.Index
        NIK = TblGajiKaryawanDataGridView.Item(0, MyIndex).Value
        NamaKaryawan = TblGajiKaryawanDataGridView.Item(1, MyIndex).Value
        Jabatan = TblGajiKaryawanDataGridView.Item(2, MyIndex).Value
        StatusPernikahan = TblGajiKaryawanDataGridView.Item(4, MyIndex).Value
        JumlahAnak = TblGajiKaryawanDataGridView.Item(5, MyIndex).Value

        Dim query As String = "Update tblGajiKaryawan set NamaKaryawan='" & NamaKaryawan & "',Jabatan='" & Jabatan & "',StatusPernikahan='" & StatusPernikahan & "',JumlahAnak='" & JumlahAnak & "' where NIK= " & NIK & ""
        Dim command As New OleDbCommand

        With command
            .CommandText = query
            .Connection = conn
            .ExecuteNonQuery()
        End With
        MsgBox("Data telah diubah")
        conn.Close()
    End Sub

Button Cari:

Private Sub CariButton_Click(sender As Object, e As EventArgs) Handles CariButton.Click
        If NIKRadioButton.Checked Then
            Me.TblGajiKaryawanBindingSource.Filter = "NIK ='" & CariTextBox.Text & "'"
        End If
        If NamKaryawanRadioButton.Checked Then
            Me.TblGajiKaryawanBindingSource.Filter = "NamaKaryawan LIKE'%" & CariTextBox.Text & "'"
        End If
        If JabatanRadioButton.Checked Then
            Me.TblGajiKaryawanBindingSource.Filter = "Jabatan LIKE'%" & CariTextBox.Text & "'"
        End If
    End Sub

Berikut adalah hasil saat project di debug:

Username: admin
Password: 123




Saat meng-klik Button Baru:


Saat meng-klik Button Hitung:


Saat meng-klik Button Simpan:


Saat ingin menghapus data yang NIK nya adalah 1000015:


Setelah meng-klik Button Hapus maka data yang memiliki NIK 1000015 hilang:


Untuk Button Ubah, kita hanya dapat mengubah NIK, Nama Karyawan, Jabatan, Status Pernikahan, dan Jumlah Anak karena Gaji Pokok, Tunjangan Pasangan, Tunjangan Anak, Pajak, dan Total Gaji adalah hasil perhitungan dan tidak dapat diubah. Karyawan yang bernama Lola Agustina diubah namanya menjadi Lola Tiara, berikut adalah hasil setelah mengubah nama karyawan lalu meng-klik Button Ubah:



Berikut adalah hasil pencarian berdasarkan NIK, Nama Karyawan, dan Jabatan dengan menggunakan Button Cari:




Sekian penjelasan dari saya, semoga bermanfaat untuk kita semua Aamin....

No comments:

Post a Comment