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:
- Gaji pokok manajer sebesar Rp25.000.000,- sedangkan gaji staf sebesar Rp10.000.000,-
- Jika status karyawan menikah, maka tunjangan pasangannya sebesar 10% dari gaji pokok, sedangkan jika belum menikah, maka karyawan tidak mendapatkan tunjangan pasangan.
- 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.
- Setiap karyawan dikenakan pajak yang besarnya 5% dari gaji pokok.
- 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:
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:
Berikut ini adalah source code untuk FormLogin:
Button Login:
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
Setelah itu, simpan tabel kita. Lalu masukkan data-data yang pengguna perlukan 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....




























































