Program Penggajian VB.net 2010 Tutorial Lengkap
1. Membuat Project Program Penggajian dengan VB.net 2010
Pada kesempatan ini, saya akan membahas tutorial pembuatan Program Penggajian dengan Vb.net 2010, bisa digunakan untuk tugas akhir (TA) atau skripsi karena desain databasenya membentuk konsep One To many dengan level 3NF / Normalisasi 3 . Aplikasi penggajian vb.net ini memiliki banyak ragamnya sesuai kebijakan masing-masing perusahaan. Untuk membuat aplikasi penggajian dengan Vb.net 2010 ini langkah pertama yang harus dilakukan adalah membuat project baru dengan vb.net 2010, kemudian simpan project tersebut di folder tertentu, setelah itu barulah membuat database. Update 2018 : Program Penggajian VB.Net ini bisa diaplikasikan di VB.Net 2012, VB.Net 2013, VB.Net 2015, VB.Net 2017
Untuk database saya menggunakan database Access 2007. Catatan utama adalah menyimpan database sebaiknya di bin > Debug folder project tersebut. Rancangan database dalam aplikasi penggajian ini dapat dilihat pada project yang saya sertakan. Secara garis besar tabel-tabel dalam aplikasi penggajian ini terdiri dari :
- Tabel Golongan
- Tabel Jabatan
- Tabel Petugas
- Tabel Pegawai
- Tabel Potongan
- Tabel Gaji
- Tabel Detailgaji
2. Normalisasi File Dan Relasi Tabel
Normalisasi file dalam program penggajian dengan VB.net 2010 terlihat pada gambar di bawah ini:
3. Membuat Module
Dalam pembuatan Program Penggajian dengan vb.net 2010 ini, menggunakan 2 Module, Tujuan pembuatan Module adalah untuk mempercepat dan mempermudah akses ke database :
- Modul Koneksi Database
- Modul Pemanggilan Laporan untuk Crystal Report agar tidak terikat database dalam folder project yang pertama dibuat.
Koneksi cukup dibuat satu kali tetapi dapat dipanggil berkali-kali di setiap form dalam project yang bersangkutan. Cara membuat module adalah klik menu menu Project > add module > Add, Beri nama Module1 kemudian ketiklah coding berikut ini.
Coding Module
' Baris kode ini digunakan untuk refrence fungsi .net system data OLEDB untuk- ' koneksi ke database Imports System.Data.OleDb Imports System.Windows.Forms ' Baris kode ini digunakan untuk refrence fungsi referensi Crystal report Imports CrystalDecisions.CrystalReports.Engine Imports CrystalDecisions.Shared Module Module1 ' Baris kode ini digunakan untuk deklarasi turunan yang digunakan- ' untuk berkomunikasi dengan database Public Conn As OleDbConnection Public da As OleDbDataAdapter Public ds As DataSet Public cmd As OleDbCommand Public rd As OleDbDataReader Public str As String ' Baris kode ini digunakan untuk deklarasi turunan yang digunakan- ' untuk berkomunikasi dengan Crystal Report Public cryRpt As New ReportDocument Public crtableLogoninfos As New TableLogOnInfos Public crtableLogoninfo As New TableLogOnInfo Public crConnectionInfo As New ConnectionInfo Public CrTables As Tables Public CrTable As Table ' Membuat prosedur dengan nama "Module_Konfigurasi_laporan" - ' untuk membuat koneksi database Ms Access 2007 ke Laporan Crystal Report agar - ' Posisi crystal report tidak tergantung dengan Drive komputer saat membuat - ' Pogram. Public Sub Module_Konfigurasi_laporan() Call Koneksi() With crConnectionInfo .ServerName = (Application.StartupPath.ToString & "\DBPenggajian.accdb") .DatabaseName = (Application.StartupPath.ToString & "\DBPenggajian.accdb") .UserID = "Admin" .Password = "" End With CrTables = cryRpt.Database.Tables For Each CrTable In CrTables crtableLogoninfo = CrTable.LogOnInfo crtableLogoninfo.ConnectionInfo = crConnectionInfo CrTable.ApplyLogOnInfo(crtableLogoninfo) Next End Sub ' Membuat prosedur Function Global dengan nama "Koneksi" yang digunakan- ' untuk membuat koneksi database ke Ms Access 2007. Public Sub Koneksi() str = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=DBPenggajian.accdb" Conn = New OleDbConnection(str) If Conn.State = ConnectionState.Closed Then Conn.Open() End If End Sub End Module
Catatan : Untuk struktur project program penggajian dengan vb.net 2010 ini adalah sebagai berikut :
4. Form Jabatan
Masukkan kode form jabatan sebagai berikut :
Coding Form Jabatan
Imports System.Data.OleDb Public Class FrmJabatan 'Membuat Prosedur untuk membersihkan text Sub Kosongkan() TxtKode.Text = "" TxtNama.Text = "" TxtGapok.Text = "" TxtTunjangan.Text = "" TxtKode.Focus() End Sub Sub DataBaru() TxtNama.Text = "" TxtGapok.Text = "" TxtTunjangan.Text = "" TxtNama.Focus() End Sub 'Membuat Prosedur untuk menampilkan data Jabatan ke grid Sub Tampilkan() da = New OleDbDataAdapter("Select * from Jabatan", Conn) ds = New DataSet ds.Clear() da.Fill(ds, "Jabatan") DGV.DataSource = (ds.Tables("Jabatan")) DGV.ReadOnly = True End Sub 'Jika TxtKode di Enter maka : Private Sub TxtKode_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TxtKode.KeyPress If e.KeyChar = Chr(13) Then 'Mencari data Jabatan berdasarkan Kode Jabatan TxtKode.Text = UCase(TxtKode.Text) cmd = New OleDbCommand("select * from Jabatan where Kode_Jabatan='" & TxtKode.Text & "'", Conn) rd = cmd.ExecuteReader rd.Read() 'Jika ada maka menampikan data If rd.HasRows = True Then TxtNama.Text = rd.Item(1) TxtGapok.Text = rd.Item(2) TxtTunjangan.Text = rd.Item(3) TxtNama.Focus() Else 'jika tidak ada maka lanjut Call DataBaru() TxtNama.Focus() End If End If End Sub Private Sub TxtNama_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TxtNama.KeyPress If e.KeyChar = Chr(13) Then TxtNama.Text = UCase(TxtNama.Text) TxtGapok.Focus() End If End Sub Private Sub TxtGapok_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TxtGapok.KeyPress 'Mengunci hanya input angka If e.KeyChar = Chr(13) Then TxtTunjangan.Focus() If Not ((e.KeyChar >= "0" And e.KeyChar <= "9") Or e.KeyChar = vbBack) Then e.Handled() = True End Sub Private Sub TxtTunjangan_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TxtTunjangan.KeyPress If e.KeyChar = Chr(13) Then BtnSimpan.Focus() If Not ((e.KeyChar >= "0" And e.KeyChar <= "9") Or e.KeyChar = vbBack) Then e.Handled() = True End Sub Private Sub BtnSimpan_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSimpan.Click If TxtKode.Text = "" Or TxtNama.Text = "" Or TxtGapok.Text = "" Or TxtTunjangan.Text = "" Then MsgBox("Data Belum Lengkap") Exit Sub Else 'Cari data Jabatan apakah sudah ada data sebelumnya.. cmd = New OleDbCommand("Select * from Jabatan where Kode_Jabatan='" & TxtKode.Text & "'", Conn) rd = cmd.ExecuteReader rd.Read() 'Jika data Jabatan tidak ada, maka Proses Simpan If Not rd.HasRows Then Dim sqltambah As String = "Insert into Jabatan(kode_Jabatan,Nama_Jabatan,Gaji_Pokok,TJ_Jabatan) values " & _ "('" & TxtKode.Text & "','" & TxtNama.Text & "','" & TxtGapok.Text & "','" & TxtTunjangan.Text & "')" cmd = New OleDbCommand(sqltambah, Conn) cmd.ExecuteNonQuery() Call Kosongkan() Call Tampilkan() Else 'Jika data Jabatan sudah ada sebelumnya, maka Proses Edit Dim sqledit As String = "Update Jabatan set " & _ "Nama_Jabatan='" & TxtNama.Text & "', " & _ "Gaji_Pokok='" & TxtGapok.Text & "', " & _ "TJ_Jabatan='" & TxtTunjangan.Text & "' " & _ "where Kode_Jabatan='" & TxtKode.Text & "'" cmd = New OleDbCommand(sqledit, Conn) cmd.ExecuteNonQuery() Call Kosongkan() Call Tampilkan() End If End If End Sub Private Sub BtnBatal_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnBatal.Click Call Kosongkan() End Sub Private Sub BtnTutup_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnTutup.Click Me.Close() End Sub Private Sub BtnHapus_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnHapus.Click If TxtKode.Text = "" Then MsgBox("Isi kode Jabatan terlebih dahulu") TxtKode.Focus() Exit Sub Else 'Hapus Data Jabatan Berdasarkan Kode Jabatan If MessageBox.Show("Yakin akan dihapus..?", "", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.Yes Then cmd = New OleDbCommand("Delete * from Jabatan where Kode_Jabatan='" & TxtKode.Text & "'", Conn) cmd.ExecuteNonQuery() Call Kosongkan() Call Tampilkan() Else Call Kosongkan() End If End If End Sub Private Sub Jabatan_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'Saat form tampil, memanggil prosedur Koneksi yang ada di Module Call Koneksi() Call Tampilkan() End Sub Private Sub DGV_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DGV.CellContentClick End Sub Private Sub DGV_CellMouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles DGV.CellMouseClick 'Menampilkan data Jabatan saat Grid di Klik On Error Resume Next TxtKode.Text = DGV.Rows(e.RowIndex).Cells(0).Value cmd = New OleDbCommand("select * from Jabatan where Kode_Jabatan='" & TxtKode.Text & "'", Conn) rd = cmd.ExecuteReader rd.Read() If rd.HasRows = True Then TxtNama.Text = rd.Item(1) TxtGapok.Text = rd.Item(2) TxtTunjangan.Text = rd.Item(3) TxtNama.Focus() End If End Sub End Class
5. Form Golongan
Masukkan kode Form Golongan sebagai berikut :
Coding Form Golongan
Imports System.Data.OleDb Public Class FrmGolongan 'Membuat Prosedur untuk membersihkan text Sub Kosongkan() TextBox1.Text = "" TextBox2.Text = "" TextBox3.Text = "" TextBox4.Text = "" TextBox5.Text = "" TextBox6.Text = "" TextBox1.Focus() End Sub Sub DataBaru() TextBox2.Text = "" TextBox3.Text = "" TextBox4.Text = "" TextBox5.Text = "" TextBox6.Text = "" TextBox6.Focus() End Sub 'Membuat Prosedur untuk menampilkan data golongan ke grid Sub Tampilkan() da = New OleDbDataAdapter("Select * from Golongan", Conn) ds = New DataSet ds.Clear() da.Fill(ds, "Golongan") DGV.DataSource = (ds.Tables("Golongan")) DGV.ReadOnly = True End Sub 'Jika textbox1 di Enter maka : Private Sub textbox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress If e.KeyChar = Chr(13) Then 'Mencari data golongan berdasarkan Golongan cmd = New OleDbCommand("select * from Golongan where Golongan='" & TextBox1.Text & "'", Conn) rd = cmd.ExecuteReader rd.Read() 'Jika ada maka menampikan data If rd.HasRows = True Then TextBox2.Text = rd.Item(1) TextBox3.Text = rd.Item(2) TextBox4.Text = rd.Item(3) TextBox5.Text = rd.Item(4) TextBox6.Text = rd.Item(5) TextBox2.Focus() Else 'jika tidak ada maka lanjut Call DataBaru() TextBox2.Focus() End If End If If Not ((e.KeyChar >= "0" And e.KeyChar <= "9") Or e.KeyChar = vbBack) Then e.Handled() = True End Sub Private Sub textbox2_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox2.KeyPress 'Mengunci hanya input angka If e.KeyChar = Chr(13) Then TextBox3.Focus() If Not ((e.KeyChar >= "0" And e.KeyChar <= "9") Or e.KeyChar = vbBack) Then e.Handled() = True End Sub Private Sub textbox3_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox3.KeyPress If e.KeyChar = Chr(13) Then TextBox4.Focus() If Not ((e.KeyChar >= "0" And e.KeyChar <= "9") Or e.KeyChar = vbBack) Then e.Handled() = True End Sub Private Sub textbox4_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox4.KeyPress If e.KeyChar = Chr(13) Then TextBox5.Focus() If Not ((e.KeyChar >= "0" And e.KeyChar <= "9") Or e.KeyChar = vbBack) Then e.Handled() = True End Sub Private Sub textbox5_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox5.KeyPress If e.KeyChar = Chr(13) Then TextBox6.Focus() If Not ((e.KeyChar >= "0" And e.KeyChar <= "9") Or e.KeyChar = vbBack) Then e.Handled() = True End Sub Private Sub textbox6_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox6.KeyPress If e.KeyChar = Chr(13) Then BtnSimpan.Focus() If Not ((e.KeyChar >= "0" And e.KeyChar <= "9") Or e.KeyChar = vbBack) Then e.Handled() = True End Sub Private Sub BtnSimpan_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSimpan.Click If TextBox1.Text = "" Or TextBox2.Text = "" Or TextBox3.Text = "" Or TextBox4.Text = "" Or TextBox5.Text = "" Or TextBox6.Text = "" Then MsgBox("Data Belum Lengkap") Exit Sub Else 'Cari data Golongan apakah sudah ada data sebelumnya.. cmd = New OleDbCommand("Select * from Golongan where Golongan='" & TextBox1.Text & "'", Conn) rd = cmd.ExecuteReader rd.Read() 'Jika data Golongan tidak ada, maka Proses Simpan If Not rd.HasRows Then Dim sqltambah As String = "Insert into Golongan(Golongan,TJ_Suami_Istri,TJ_Anak,Uang_Makan,uang_Lembur,askes) values " & _ "('" & TextBox1.Text & "','" & TextBox2.Text & "','" & TextBox3.Text & "','" & TextBox4.Text & "','" & TextBox5.Text & "','" & TextBox6.Text & "')" cmd = New OleDbCommand(sqltambah, Conn) cmd.ExecuteNonQuery() Call Kosongkan() Call Tampilkan() Else 'Jika data Golongan sudah ada sebelumnya, maka Proses Edit Dim sqledit As String = "Update Golongan set " & _ "TJ_Suami_Istri='" & TextBox2.Text & "', " & _ "TJ_Anak='" & TextBox3.Text & "', " & _ "Uang_Makan='" & TextBox4.Text & "', " & _ "uang_Lembur='" & TextBox5.Text & "', " & _ "askes='" & TextBox6.Text & "' " & _ "where Golongan='" & TextBox1.Text & "'" cmd = New OleDbCommand(sqledit, Conn) cmd.ExecuteNonQuery() Call Kosongkan() Call Tampilkan() End If End If End Sub Private Sub BtnBatal_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnBatal.Click Call Kosongkan() End Sub Private Sub BtnTutup_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnTutup.Click Me.Close() End Sub Private Sub BtnHapus_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnHapus.Click If TextBox1.Text = "" Then MsgBox("Isi kode Golongan terlebih dahulu") TextBox1.Focus() Exit Sub Else 'Hapus Data golongan Berdasarkan Golongan If MessageBox.Show("Yakin akan dihapus..?", "", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.Yes Then cmd = New OleDbCommand("Delete * from Golongan where Golongan='" & TextBox1.Text & "'", Conn) cmd.ExecuteNonQuery() Call Kosongkan() Call Tampilkan() Else Call Kosongkan() End If End If End Sub Private Sub Golongan_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'Saat form tampil, memanggil prosedur Koneksi yang ada di Module Call Koneksi() Call Tampilkan() End Sub Private Sub DGV_CellMouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles DGV.CellMouseClick On Error Resume Next 'Menampilkan data Golongan saat Grid di Klik TextBox1.Text = DGV.Rows(e.RowIndex).Cells(0).Value cmd = New OleDbCommand("select * from Golongan where Golongan='" & TextBox1.Text & "'", Conn) rd = cmd.ExecuteReader rd.Read() If rd.HasRows = True Then TextBox2.Text = rd.Item(1) TextBox3.Text = rd.Item(2) TextBox4.Text = rd.Item(3) TextBox5.Text = rd.Item(4) TextBox6.Text = rd.Item(5) TextBox2.Focus() End If End Sub End Class
6. Form Pegawai Program Penggajian Vb.net 2010
Masukkan kode Form Pegawai sebagai berikut :
Coding Form Pegawai
Imports System.Data.OleDb Public Class FrmPegawai Sub Kosongkan() TxtKode.Text = "" TxtNama.Text = "" TxtAlamat.Text = "" TxtNo.Text = "" CmbStatus.Text = "" TxtJumlahAnak.Text = "" CmbKodeJabatan.Text = "" CmbKodeGolongan.Text = "" TxtKode.Focus() End Sub Sub DataBaru() TxtNama.Text = "" TxtAlamat.Text = "" TxtNo.Text = "" CmbStatus.Text = "" TxtJumlahAnak.Text = "" CmbKodeJabatan.Text = "" CmbKodeGolongan.Text = "" TxtNama.Focus() End Sub Sub TabelPegawai() 'Menampilkan Data Pegawai di Grid da = New OleDbDataAdapter("Select * from Pegawai", Conn) ds = New DataSet ds.Clear() da.Fill(ds, "Pegawai") DGV.DataSource = (ds.Tables("Pegawai")) DGV.ReadOnly = True End Sub Sub TampilJabatan() 'Menampilkan Kode_jabatan di Combobox Jabatan cmd = New OleDbCommand("select distinct kode_jabatan from jabatan", Conn) rd = cmd.ExecuteReader Do While rd.Read CmbKodeJabatan.Items.Add(rd.Item(0)) Loop End Sub Sub TampilGolongan() 'Menampilkan Golongan di Combobox golongan cmd = New OleDbCommand("select distinct Golongan from golongan", Conn) rd = cmd.ExecuteReader Do While rd.Read CmbKodeGolongan.Items.Add(rd.Item(0)) Loop End Sub Sub TampilStatus() 'Menambahkan Status di ComboBox Status CmbStatus.Items.Add("Menikah") CmbStatus.Items.Add("Belum Menikah") End Sub Sub TampilTabel() Call TabelPegawai() End Sub Sub TampilPilihan() Call TampilJabatan() Call TampilGolongan() Call TampilStatus() End Sub Private Sub TxtKode_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TxtKode.KeyPress If e.KeyChar = Chr(13) Then 'Mencari NIP Pegawai apakah sudah ada sebelumnya cmd = New OleDbCommand("select * from Pegawai where NIP='" & TxtKode.Text & "'", Conn) rd = cmd.ExecuteReader rd.Read() 'Jika NIP sudah ada, maka akan menampilkan data Pegawai If rd.HasRows = True Then TxtNama.Text = rd.Item(1) TxtAlamat.Text = rd.Item(2) TxtNo.Text = rd.Item(3) CmbStatus.Text = rd.Item(4) TxtJumlahAnak.Text = rd.Item(5) CmbKodeJabatan.Text = rd.Item(6) CmbKodeGolongan.Text = rd.Item(7) TxtNama.Focus() Else Call DataBaru() TxtNama.Focus() End If End If If Not ((e.KeyChar >= "0" And e.KeyChar <= "9") Or e.KeyChar = vbBack) Then e.Handled() = True End Sub Private Sub TxtNama_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TxtNama.KeyPress If e.KeyChar = Chr(13) Then TxtAlamat.Focus() End If End Sub Private Sub TxtAlamat_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TxtAlamat.KeyPress If e.KeyChar = Chr(13) Then TxtNo.Focus() End If End Sub Private Sub TxtNo_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TxtNo.KeyPress If e.KeyChar = Chr(13) Then CmbStatus.Focus() If Not ((e.KeyChar >= "0" And e.KeyChar <= "9") Or e.KeyChar = vbBack) Then e.Handled() = True End Sub Private Sub CmbStatus_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles CmbStatus.KeyPress If e.KeyChar = Chr(13) Then TxtJumlahAnak.Focus() End Sub Private Sub TxtJumlahAnak_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TxtJumlahAnak.KeyPress If e.KeyChar = Chr(13) Then CmbKodeJabatan.Focus() If Not ((e.KeyChar >= "0" And e.KeyChar <= "9") Or e.KeyChar = vbBack) Then e.Handled() = True End Sub Private Sub CmbKodeJabatan_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles CmbKodeJabatan.KeyPress If e.KeyChar = Chr(13) Then CmbKodeGolongan.Focus() End Sub Private Sub CmbKodeGolongan_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles CmbKodeGolongan.KeyPress If e.KeyChar = Chr(13) Then BtnSimpan.Focus() End Sub Private Sub BtnSimpan_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSimpan.Click If TxtKode.Text = "" Or TxtNama.Text = "" Or TxtAlamat.Text = "" Or TxtNo.Text = "" Or CmbStatus.Text = "" Or TxtJumlahAnak.Text = "" Or CmbKodeJabatan.Text = "" Or CmbKodeGolongan.Text = "" Then MsgBox("Data Belum Lengkap") Exit Sub Else 'Mencari NIP apakah sudah ada sebelumnya.. cmd = New OleDbCommand("Select * from Pegawai where NIP='" & TxtKode.Text & "'", Conn) rd = cmd.ExecuteReader rd.Read() 'Jika NIP Belum ada, Maka proses Simpan If Not rd.HasRows Then Dim sqltambah As String = "Insert into Pegawai(NIP,Nama_Pegawai,Alamat,No_Telphon,Status,Jumlah_Anak,Kode_Jabatan,Golongan) values " & _ "('" & TxtKode.Text & "','" & TxtNama.Text & "','" & TxtAlamat.Text & "','" & TxtNo.Text & "','" & CmbStatus.Text & "','" & _ TxtJumlahAnak.Text & "','" & CmbKodeJabatan.Text & "','" & CmbKodeGolongan.Text & "')" cmd = New OleDbCommand(sqltambah, Conn) cmd.ExecuteNonQuery() Call Kosongkan() Call TabelPegawai() Else ' Jika NIP Sudah ada, maka Ubah data Pegawai berdasarkan kode cmd = New OleDbCommand("Update Pegawai set Nama_Pegawai='" & TxtNama.Text & _ "',Alamat='" & TxtAlamat.Text & "',No_Telphon='" & TxtNo.Text & _ "',Status='" & CmbStatus.Text & "',Jumlah_Anak='" & TxtJumlahAnak.Text & _ "',Kode_Jabatan='" & CmbKodeJabatan.Text & "',Golongan='" & CmbKodeGolongan.Text & "' where NIP='" & TxtKode.Text & "'", Conn) cmd.ExecuteNonQuery() Call Kosongkan() Call TabelPegawai() End If End If End Sub Private Sub BtnBatal_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnBatal.Click Call Kosongkan() End Sub Private Sub BtnTutup_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnTutup.Click Me.Close() End Sub Private Sub BtnHapus_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnHapus.Click If TxtKode.Text = "" Then MsgBox("Isi kode Pegawai terlebih dahulu") TxtKode.Focus() Exit Sub Else 'Menghapus data Pegawai berdasarkan NIP If MessageBox.Show("Yakin akan dihapus..?", "", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.Yes Then cmd = New OleDbCommand("Delete * from Pegawai where NIP='" & TxtKode.Text & "'", Conn) cmd.ExecuteNonQuery() Call Kosongkan() Call TabelPegawai() Else Call Kosongkan() End If End If End Sub Private Sub FrmPegawai_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Call Koneksi() Call TampilTabel() Call TampilPilihan() End Sub Private Sub DGV_CellMouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles DGV.CellMouseClick On Error Resume Next 'Menampilkan data Pegawai saat Klik Grid TxtKode.Text = DGV.Rows(e.RowIndex).Cells(0).Value cmd = New OleDbCommand("select * from Pegawai where NIP='" & TxtKode.Text & "'", Conn) rd = cmd.ExecuteReader rd.Read() If rd.HasRows = True Then TxtNama.Text = rd.Item(1) TxtAlamat.Text = rd.Item(2) TxtNo.Text = rd.Item(3) CmbStatus.Text = rd.Item(4) TxtJumlahAnak.Text = rd.Item(5) CmbKodeJabatan.Text = rd.Item(6) CmbKodeGolongan.Text = rd.Item(7) TxtNama.Focus() End If End Sub Private Sub TxtCari_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TxtCari.TextChanged 'Cari Pegawai berdasarkan nama pegawai da = New OleDbDataAdapter("Select * from Pegawai where nama_Pegawai like '%" & TxtCari.Text & "%' order by nama_Pegawai asc", Conn) ds = New DataSet ds.Clear() da.Fill(ds, "Pegawai") DGV.DataSource = (ds.Tables("Pegawai")) DGV.ReadOnly = True End Sub Private Sub BtnJabatan_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnJabatan.Click FrmJabatan.Show() End Sub Private Sub BtnGolongan_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnGolongan.Click BtnGolongan.Show() End Sub End Class
7. Form Daftar Pegawai
Masukkan kode Form Daftar Pegawai sebagai berikut :
Coding Form Daftar Pegawai
Imports System.Data.OleDb Public Class FrmDaftarPegawai 'Membuat prosedur untuk menampilkan data di listbox Sub Tampilkan() cmd = New OleDbCommand("Select * from Pegawai", Conn) rd = cmd.ExecuteReader Do While rd.Read ListBox1.Items.Add(rd.GetString(0) & vbTab & rd.GetString(1)) Loop End Sub Private Sub DaftarPegawai_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load TextBox1.Text = "" Call Koneksi() Call Tampilkan() ListBox1.Focus() End Sub Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress If e.KeyChar = Chr(13) Then 'Cari data pegawai berdasarkan Nama Pegawai cmd = New OleDbCommand("Select * from Pegawai where nama_Pegawai like '%" & TextBox1.Text & "%'", Conn) rd = cmd.ExecuteReader If rd.HasRows Then ListBox1.Items.Clear() Do While rd.Read ListBox1.Items.Add(rd.GetString(0) & vbTab & rd.GetString(1)) Loop Else MsgBox("Nama Pegawai tidak ditemukan") TextBox1.Focus() End If ElseIf e.KeyChar = Chr(27) Then Me.Close() End If End Sub Private Sub ListBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles ListBox1.KeyPress If e.KeyChar = Chr(13) Then 'Menampilkan NIP Pegawai ke Form Penggajian FrmPenggajian1.TextBox3.Text = Microsoft.VisualBasic.Left(ListBox1.Text, 8) Me.Close() End If End Sub Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged 'Menampilkan NIP Pegawai ke Form Penggajian FrmPenggajian1.TextBox3.Text = Microsoft.VisualBasic.Left(ListBox1.Text, 8) Me.Close() End Sub End Class
8. Form Potongan Program Penggajian Vb.net 2010
Masukkan kode Form Potongan sebagai berikut :
Coding Form Potongan
Imports System.Data.OleDb Public Class FrmPotongan Sub Kosongkan() TxtKode.Text = "" TxtNama.Text = "" TxtKode.Focus() End Sub Sub DataBaru() TxtNama.Text = "" TxtNama.Focus() End Sub Sub Tampilkan() da = New OleDbDataAdapter("Select * from Potongan", Conn) ds = New DataSet ds.Clear() da.Fill(ds, "Potongan") DGV.DataSource = (ds.Tables("Potongan")) DGV.ReadOnly = True End Sub Private Sub TxtKode_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) If e.KeyChar = Chr(13) Then 'Cari Kode Potongan apakah sudah ada sebelumnya.. TxtKode.Text = UCase(TxtKode.Text) cmd = New OleDbCommand("select * from Potongan where Kode_Potongan='" & TxtKode.Text & "'", Conn) rd = cmd.ExecuteReader rd.Read() If rd.HasRows = True Then TxtNama.Text = rd.Item(1) TxtNama.Focus() Else Call DataBaru() TxtNama.Focus() End If End If If Not ((e.KeyChar >= "0" And e.KeyChar <= "9") Or e.KeyChar = vbBack) Then e.Handled() = True End Sub Private Sub TxtNama_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) If e.KeyChar = Chr(13) Then TxtNama.Text = UCase(TxtNama.Text) BtnSimpan.Focus() End If End Sub Private Sub BtnSimpan_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSimpan.Click If TxtKode.Text = "" Or TxtNama.Text = "" Then MsgBox("Data Belum Lengkap") Exit Sub Else 'Cari Kode Potongan apakah sudah ada sebelumnya.. cmd = New OleDbCommand("Select * from Potongan where Kode_Potongan='" & TxtKode.Text & "'", Conn) rd = cmd.ExecuteReader rd.Read() 'Jika Kode Potongan belum ada, maka proses simpan.. If Not rd.HasRows Then Dim sqltambah As String = "Insert into Potongan(kode_Potongan,Nama_Potongan) values " & _ "('" & TxtKode.Text & "','" & TxtNama.Text & "')" cmd = New OleDbCommand(sqltambah, Conn) cmd.ExecuteNonQuery() Call Kosongkan() Call Tampilkan() Else 'Jika Kode Potongan sudah ada, maka proses edit Dim sqledit As String = "Update Potongan set " & _ "Nama_Potongan='" & TxtNama.Text & "' where Kode_Potongan='" & TxtKode.Text & "'" cmd = New OleDbCommand(sqledit, Conn) cmd.ExecuteNonQuery() Call Kosongkan() Call Tampilkan() End If End If End Sub Private Sub BtnBatal_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnBatal.Click Call Kosongkan() End Sub Private Sub BtnTutup_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnTutup.Click Me.Close() End Sub Private Sub BtnHapus_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnHapus.Click If TxtKode.Text = "" Then MsgBox("Isi kode Potongan terlebih dahulu") TxtKode.Focus() Exit Sub Else 'Hapus data potongan berdasarkan Kode_Potongan If MessageBox.Show("Yakin akan dihapus..?", "", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.Yes Then cmd = New OleDbCommand("Delete * from Potongan where Kode_Potongan='" & TxtKode.Text & "'", Conn) cmd.ExecuteNonQuery() Call Kosongkan() Call Tampilkan() Else Call Kosongkan() End If End If End Sub Private Sub Potongan_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Call Koneksi() Call Tampilkan() End Sub Private Sub DGV_CellMouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles DGV.CellMouseClick 'Menampilkan data potongan saat klik Grid On Error Resume Next TxtKode.Text = DGV.Rows(e.RowIndex).Cells(0).Value cmd = New OleDbCommand("select * from Potongan where Kode_Potongan='" & TxtKode.Text & "'", Conn) rd = cmd.ExecuteReader rd.Read() If rd.HasRows = True Then TxtNama.Text = rd.Item(1) TxtNama.Focus() End If End Sub End Class
9. Form Transaksi Penggajian Vb.net 2010
Program Utama Penggajian VB.net 2010 ini terletak dalam Proses Penggajian, yang terjadi dalam Form Penggajian adalah sebagai berikut :
- Pada saat form dipanggil, tampilkan nomor slip gaji otomatis, tanggal transaksi
- Ketika mengisi NIP, sistem akan mencari NIP yang sudah gajian di bulan ini, jika data tidak ditemukan maka lanjutkan ke pengisian jumlah hadir dalam sebulan. Jika mencari data NIP, tingal enter di kotak NIP maka akan tampil list pegawai
- Kemudian dilanjutkan dengan pengisian jumlah jam lembur dalam sebulan
- Kemudian dilajutkan dengan pengisian rincian potongan mulai dari pajak dll
- Jika data sudah benar, maka klik button simpan
Masukkan kode Form Penggajian sebagai berikut :
Coding Form Penggajian
Imports System.Data.OleDb Imports System.Windows.Forms Public Class FrmPenggajian1 Sub Tampilkan() 'Menampilkan Data Potongan di Grid da = New OleDbDataAdapter("Select Kode_Potongan as Kode,nama_Potongan as [Nama Potongan]from Potongan where left(kode_Potongan,1)='1'", Conn) ds = New DataSet ds.Clear() da.Fill(ds, "Potongan") DGV.DataSource = (ds.Tables("Potongan")) DGV.Columns.Add("Jumlah", "Jumlah") DGV.Columns(0).ReadOnly = True DGV.Columns(1).ReadOnly = True DGV.Columns(0).Width = 40 DGV.Columns(1).Width = 125 End Sub Sub NomorOtomatis() 'Membuat Nomor Slip Otomatis cmd = New OleDbCommand("Select * from Gaji where Nomor_Slip in (select max(Nomor_Slip) from Gaji) order by Nomor_Slip desc", Conn) Dim urutan As String Dim hitung As Long rd = cmd.ExecuteReader rd.Read() If Not rd.HasRows Then urutan = Format(Now, "yyMMdd") + "0001" Else If Microsoft.VisualBasic.Left(rd.GetString(0), 6) <> Format(Now, "yyMMdd") Then urutan = Format(Now, "yyMMdd") + "0001" Else hitung = rd.GetString(0) + 1 urutan = Format(Now, "yyMMdd") + Microsoft.VisualBasic.Right("0000" & hitung, 4) End If End If TextBox1.Text = urutan End Sub Private Sub Penggajian_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Call Koneksi() Call NomorOtomatis() TextBox2.Text = Today Call Tampilkan() End Sub Sub BersihkaN() TextBox16.Clear() TextBox17.Clear() TextBox18.Clear() TextBox19.Clear() TextBox20.Clear() TextBox21.Clear() TextBox22.Clear() TextBox23.Clear() LblTotal.Text = "0" End Sub Sub BersihkanGrid() DGV.Columns.Clear() Call Tampilkan() End Sub Private Sub TextBox3_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox3.KeyPress If e.KeyChar = Chr(13) Then TextBox3.Text = UCase(TextBox3.Text) Call BersihkaN() Call BersihkanGrid() 'Cari NIP Pegawai apakah bulan ini sudah terinput gajian.. cmd = New OleDbCommand("select * from gaji where nip='" & TextBox3.Text & "' and month(tanggal) ='" & Month(TextBox2.Text) & "' and year(tanggal) = '" & Year(TextBox2.Text) & "'", Conn) rd = cmd.ExecuteReader rd.Read() If rd.HasRows Then MsgBox("Nip " & TextBox3.Text & " bulan ini telah gajian") Call Batalkan() Exit Sub End If 'Jika NIP belum gajian maka lanjut proses selanjutnya.. cmd = New OleDbCommand("select * from pegawai where nip='" & TextBox3.Text & "'", Conn) rd = cmd.ExecuteReader rd.Read() If rd.HasRows Then TextBox4.Text = rd.Item(1) TextBox24.Text = rd.Item(2) TextBox25.Text = rd.Item(3) TextBox5.Text = rd.Item(6) TextBox6.Text = rd.Item(7) TextBox7.Text = rd.Item(4) TextBox8.Text = rd.Item(5) cmd = New OleDbCommand("select * from jabatan where kode_jabatan='" & TextBox5.Text & "'", Conn) rd = cmd.ExecuteReader rd.Read() If rd.HasRows Then TextBox5.Text = rd.Item(1) TextBox9.Text = rd.Item(2) TextBox10.Text = rd.Item(3) End If cmd = New OleDbCommand("select * from golongan where golongan='" & TextBox6.Text & "'", Conn) rd = cmd.ExecuteReader rd.Read() If rd.HasRows Then If TextBox7.Text = "MENIKAH" Then TextBox11.Text = rd.Item(1) TextBox12.Text = rd.Item(2) TextBox13.Text = rd.Item(3) TextBox14.Text = rd.Item(4) TextBox15.Text = rd.Item(5) TextBox23.Text = Val(TextBox12.Text) * Val(TextBox8.Text) Else TextBox11.Text = 0 TextBox12.Text = 0 TextBox13.Text = rd.Item(3) TextBox14.Text = rd.Item(4) TextBox15.Text = rd.Item(5) TextBox23.Text = 0 End If TextBox19.Focus() End If Else MsgBox("NIP tidak terdaftar") FrmDaftarPegawai.Show() End If End If End Sub Private Sub TextBox19_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox19.KeyPress If e.KeyChar = Chr(13) Then TextBox21.Text = Val(TextBox13.Text) * Val(TextBox19.Text) TextBox16.Text = Val(TextBox9.Text) + Val(TextBox10.Text) + Val(TextBox11.Text) + Val(TextBox23.Text) + Val(TextBox21.Text) + Val(TextBox22.Text) + Val(TextBox15.Text) TextBox20.Focus() End If If Not ((e.KeyChar >= "0" And e.KeyChar <= "9") Or e.KeyChar = vbBack) Then e.Handled() = True End Sub Private Sub TextBox20_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox20.KeyPress If e.KeyChar = Chr(13) Then TextBox22.Text = Val(TextBox14.Text) * Val(TextBox20.Text) TextBox16.Text = Val(TextBox9.Text) + Val(TextBox10.Text) + Val(TextBox11.Text) + Val(TextBox23.Text) + Val(TextBox21.Text) + Val(TextBox22.Text) + Val(TextBox15.Text) DGV.Focus() End If If Not ((e.KeyChar >= "0" And e.KeyChar <= "9") Or e.KeyChar = vbBack) Then e.Handled() = True End Sub Private Sub DGV_CellEndEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DGV.CellEndEdit If e.ColumnIndex = 2 Then Call TotalPotongan() TextBox18.Text = Val(TextBox16.Text) - Val(TextBox17.Text) LblTotal.Text = Format(Val(TextBox18.Text), "##,##") End If End Sub Sub TotalPotongan() Dim Hitung As Integer = 0 For I As Integer = 0 To DGV.Rows.Count - 1 Hitung = Hitung + Val(DGV.Rows(I).Cells(2).Value) TextBox17.Text = Hitung Next End Sub Private Sub DGV_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles DGV.KeyPress If Not ((e.KeyChar >= "0" And e.KeyChar <= "9") Or e.KeyChar = vbBack) Then e.Handled() = True End Sub Sub Batalkan() TextBox3.Clear() : TextBox14.Clear() TextBox4.Clear() : TextBox15.Clear() TextBox5.Clear() : TextBox16.Clear() TextBox6.Clear() : TextBox17.Clear() TextBox7.Clear() : TextBox18.Clear() TextBox8.Clear() : TextBox19.Clear() TextBox9.Clear() : TextBox20.Clear() TextBox10.Clear() : TextBox21.Clear() TextBox11.Clear() : TextBox22.Clear() TextBox12.Clear() : TextBox23.Clear() TextBox13.Clear() : TextBox24.Clear() TextBox25.Clear() : LblTotal.Text = "0" End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click If TextBox3.Text = "" Or TextBox19.Text = "" Or TextBox20.Text = "" Or TextBox16.Text = "" Or TextBox17.Text = "" Or TextBox18.Text = "" Then MsgBox("Data belum lengkap") Exit Sub Else 'Simpan ke tabel gaji Dim simpan As String = "insert into gaji(nomor_Slip,tanggal,pendapatan,potongan,gaji_bersih,nip,kodePTG) values " & _ "('" & TextBox1.Text & "','" & TextBox2.Text & "','" & TextBox16.Text & "','" & TextBox17.Text & "','" & TextBox18.Text & "','" & TextBox3.Text & "','" & FrmMenuUtama.Panel1.Text & "')" cmd = New OleDbCommand(simpan, Conn) cmd.ExecuteNonQuery() For baris As Integer = 0 To DGV.Rows.Count - 2 'simpan ke tabel detail Dim SimpanDetail As String = "Insert into detailGaji(Nomor_slip,kode_potongan,jumlah) values " & _ "('" & TextBox1.Text & "','" & DGV.Rows(baris).Cells(0).Value & "','" & DGV.Rows(baris).Cells(2).Value & "')" cmd = New OleDbCommand(SimpanDetail, Conn) cmd.ExecuteNonQuery() Next baris Call Batalkan() Call BersihkanGrid() Call NomorOtomatis() TextBox3.Focus() End If End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Call Batalkan() Call BersihkanGrid() TextBox3.Focus() End Sub Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Call Batalkan() Me.Close() 'End End Sub End Class
10. Form Laporan Master Program Penggajian Vb.net 2010
Tahapan pembuatan laporan master dilakukan dengan lanhkah-langkah sebagai berikut :
- Membuat laporan dengan Crystal Report di VB.Net, Crystal report yang saya gunakan adalah Crystal Report For VB.net 2010. Untuk membuat laporan Crystal Report, anda harus menginstal Crystal Report For Vb.net 2010. Pembuatan laporan Crystal dengan Crystal Report tidak saya bahas disini, karena sudah saya bahas dalam tutorial saya sebelumnya di :
Untuk laporan master dengan crystal report, terdiri dari CrLapJabatan.rpt, CrLapGolongan.rpt, CrLapPotongan.rpt, CrLapPegawai.rpt.
- 2. Jika sudah membuat laporan dengan Crystal Report, langkah selanjutnya adalah membuat Form Laporan Master untuk memanggil Laporan tersebut. Form ini hanya terdiri dari sebuah object CrystalReportViewer dan Button, Hasil dari laporan-laporan tersebut terlihat pada gambar di bawah ini :
Masukkan kode Form Laporan Master sebagai berikut :
Coding Form Laporan Master
Imports System.Data.OleDb Imports System.Windows.Forms Public Class FrmLaporan Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click 'Menampilkan Laporan pegawai dengan memanggil "CrLapPegawai.rpt" dan- 'Memanggil Modul "Module_Konfigurasi_laporan" yang ada di Module1 cryRpt.Load("CrLapPegawai.rpt") Call Module_Konfigurasi_laporan() CRV.ReportSource = cryRpt CRV.RefreshReport() End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click cryRpt.Load("CrLapJabatan.rpt") Call Module_Konfigurasi_laporan() CRV.ReportSource = cryRpt CRV.RefreshReport() End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click cryRpt.Load("CrLapGolongan.rpt") Call Module_Konfigurasi_laporan() CRV.ReportSource = cryRpt CRV.RefreshReport() End Sub Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click Me.Close() End Sub Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click cryRpt.Load("CrLapPotongan.rpt") Call Module_Konfigurasi_laporan() CRV.ReportSource = cryRpt CRV.RefreshReport() End Sub End Class
11. Form Laporan Penggajian
Tahapan pembuatan laporan penggajian ini hampir sama dengan laporan master, bedanya di Laporan Penggajian ini saat memasukkan field field di Crystal Report juga memasukkan Group untuk Nomor Slip.. langkah-langkahnya sebagai berikut :
- Membuat laporan dengan Crystal Report, Pembuatan laporan Crystal dengan Crystal Report tidak saya bahas disini, karena sudah saya bahas dalam tutorial saya sebelumnya di :
Untuk laporan penggajian dengan crystal report, hanya terdiri dar satu laporan, yaitu CrLapPenggajian.rpt.
Jika sudah membuat laporan dengan Crystal Report, langkah selanjutnya adalah membuat Form Laporan Penggajian untuk memanggil Laporan tersebut.
- 2. Membuat Form Laporan Penggajian untuk menampilkan laporan penggajian. Form ini terdiri dari DataGrid, DateTimePicker, CrystalReportViewer dan Button, Hasil dari laporan-laporan tersebut terlihat pada gambar di bawah ini :
Masukkan kode Form Laporan Penggajian sebagai berikut :
Coding Form Laporan Penggajian
Imports System.Windows.Forms Imports System.Data.OleDb Public Class FrmPenggajian Sub Tampilkan() 'Menampilkan Data Pegawai yang sudah gajian di Grid Call Koneksi() da = New OleDbDataAdapter("Select pegawai.NIP,Nama_Pegawai,Tanggal,Nomor_Slip from gaji,pegawai where pegawai.nip=gaji.nip", Conn) ds = New DataSet ds.Clear() da.Fill(ds, "Pegawai") DGV.DataSource = (ds.Tables("Pegawai")) DGV.ReadOnly = True DGV.Columns(0).Width = 50 DGV.Columns(2).Width = 75 DGV.Columns(3).Width = 100 End Sub Private Sub FrmPenggajian_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Call Tampilkan() End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 'Menampilan Laporan Gaji semua Pegawai yang sudah Gajian berdasarkan Bulan dipilih CRV.ReportSource = Nothing CRV.SelectionFormula = "Month({gaji.Tanggal})=" & Month(DateTimePicker1.Text) & " and Year({gaji.Tanggal})=" & Year(DateTimePicker1.Text) cryRpt.Load("CrLapGaji.rpt") Call Module_Konfigurasi_laporan() CRV.ReportSource = cryRpt CRV.RefreshReport() End Sub Private Sub DGV_CellMouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles DGV.CellMouseClick 'Menampilan Laporan Gaji berdasarkan pegawai yang dipilih CRV.ReportSource = Nothing CRV.SelectionFormula = "{gaji.nip}='" & DGV.Rows(e.RowIndex).Cells(0).Value & "' and {gaji.nomor_slip}='" & DGV.Rows(e.RowIndex).Cells(3).Value & "'" cryRpt.Load("CrLapGaji.rpt") Call Module_Konfigurasi_laporan() CRV.ReportSource = cryRpt CRV.RefreshReport() End Sub End Class
12. Form Menu Utama Program Penggajian Vb.net 2010
Menu utama berfungsi untuk mengintegrasikan semua form dalam satu project, Form Menu Utama digunakan untuk memunculkan Form – Form yang telah dibuat sebelumnya, untuk membuatnya langsung saja ikuti langkah – langkah berikut ini :
Tambahkan Form Baru dan beri nama FrmMenuUtama, Masukkan 1 buah komponen MenuStrip , 1 Buah komponen StatusStrip , 3 buah komponen GroupBox , 8 buah komponen Button , 1 Buah Timer, aturlah hingga seperti gambar berikut ini :
Masukkan kode Form Menu Utama sebagai berikut :
Coding Form Menu Utama
Public Class FrmMenuUtama Private Sub FrmMenuUtama_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed End End Sub Private Sub FrmMenuUtama_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Panel4.Text = Format(Now, "dddd, dd-MMMM-yyyy") End Sub Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick Panel5.Text = Format(Now, "hh:mm:ss") End Sub Private Sub MnuGantiPassword_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MnuGantiPassword.Click FrmGantiPassword.Show() End Sub Private Sub MnuLogOut_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MnuLogOut.Click FrmLogin.Show() Me.Hide() End Sub Private Sub MnuKeluar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MnuKeluar.Click Dim pesan As String pesan = MsgBox("Yakin Ingin Keluar ??", vbInformation + vbYesNo, "Konfirmasi") If pesan = vbYes Then End End If End Sub Private Sub MnuExit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MnuExit.Click Dim pesan As String pesan = MsgBox("Yakin Ingin Keluar ??", vbInformation + vbYesNo, "Konfirmasi") If pesan = vbYes Then End End If End Sub Private Sub BtnGantiPass_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnGantiPass.Click FrmGantiPassword.Show() End Sub Private Sub BtnLogOut_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnLogOut.Click FrmLogin.Show() Me.Hide() End Sub Private Sub BtnKeluar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnKeluar.Click Dim pesan As String pesan = MsgBox("Yakin Ingin Keluar ??", vbInformation + vbYesNo, "Konfirmasi") If pesan = vbYes Then End End If End Sub Private Sub MnuGolongan_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MnuGolongan.Click FrmGolongan.Show() End Sub Private Sub MnuJabatan_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MnuJabatan.Click FrmJabatan.Show() End Sub Private Sub MnuPotongan_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MnuPotongan.Click FrmPotongan.Show() End Sub Private Sub MnuPegawai_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MnuPegawai.Click FrmPegawai.Show() End Sub Private Sub MnuPetugas_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MnuPetugas.Click FrmPetugas.Show() End Sub Private Sub MnuPenggajian_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MnuPenggajian.Click FrmPenggajian1.Show() End Sub Private Sub MnuLapMaster_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MnuLapMaster.Click FrmLaporan.Show() End Sub Private Sub MnuLapPenggajian_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MnuLapPenggajian.Click FrmPenggajian.Show() End Sub Private Sub BtnGolongan_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnGolongan.Click FrmGolongan.Show() End Sub Private Sub BtnJabatan_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnJabatan.Click FrmJabatan.Show() End Sub Private Sub BtnPotongan_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnPotongan.Click FrmPotongan.Show() End Sub Private Sub BtnPegawai_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnPegawai.Click FrmPegawai.Show() End Sub Private Sub BtnPenggajian_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnPenggajian.Click FrmPenggajian1.Show() End Sub End Class
13. Form Login
Langsung saja anda ikuti langkah – langkah di bawah ini :
- Pada lembar kerja Visual Studio 2010, Klik menu Project > Add New Item >Add Windows Form
- Ketikkan FrmLogin pada kolom Name, Lalu klik Add.
Selanjutnya pada lembar kerja FrmLogin Masukkan 2 buah GroupBox, 2 buah komponen Label , 2 buah komponen TextBox, 3 buah komponen Button , serta 1 buah komponen PictureBox, atur hingga seperti gambar berikut ini :
Masukkan kode Form Login sebagai berikut :
Coding Form Login
Imports System.Data.OleDb Public Class FrmLogin 'Membuat fungsi untuk cek data pengguna Sub Login() Koneksi() 'Cek nama dan password petugas cmd = New OleDbCommand("select * from Petugas where NamaPTG='" & TextBox1.Text & "' and PasswordPtg='" & TextBox2.Text & "'", Conn) rd = cmd.ExecuteReader rd.Read() If rd.HasRows Then 'Jika ada maka akan tampil data pada menu utama Dim Lvl_pengguna As String Lvl_pengguna = rd.GetString(3) FrmMenuUtama.Panel1.Text = rd.GetString(0) FrmMenuUtama.Panel2.Text = rd.GetString(1) FrmMenuUtama.Panel3.Text = rd.GetString(3) 'cek level pengguna If Lvl_pengguna = "KASIR" Then FrmMenuUtama.MnuPetugas.Enabled = False 'Bisa ditambahkan mana saja tidak aktif FrmMenuUtama.Show() Me.Hide() Else FrmMenuUtama.MnuPetugas.Enabled = True FrmMenuUtama.Show() Me.Hide() End If Else MsgBox("login salah, periksan kembali user name dan password") TextBox1.Focus() End If End Sub Private Sub FrmLogin_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Activated TextBox1.Focus() End Sub Private Sub FrmLogin_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load TextBox1.Focus() End Sub Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress If e.KeyChar = Chr(13) Then TextBox2.Focus() End If End Sub Private Sub TextBox2_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox2.KeyPress If e.KeyChar = Chr(13) Then If TextBox1.Text = "" Then TextBox1.Focus() : Exit Sub If TextBox2.Text = "" Then TextBox2.Focus() : Exit Sub Call Login() End If End Sub Private Sub BtnLogin_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnLogin.Click If TextBox1.Text = "" Then TextBox1.Focus() : Exit Sub If TextBox2.Text = "" Then TextBox2.Focus() : Exit Sub Call Login() End Sub Private Sub BtnBatal_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnBatal.Click TextBox1.Text = "" TextBox2.Text = "" TextBox1.Focus() End Sub Private Sub BtnTutup_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnTutup.Click End End Sub End Class
14. Form Ganti Password
Langsung saja anda ikuti langkah – langkah di bawah ini :
- Pada lembar kerja Visual Studio 2010, Klik menu Project > Add New Item >Add Windows Form
- Ketikkan FrmGantiPassword pada kolom Name, Lalu klik Add.
- Selanjutnya pada lembar kerja FrmGantiPassword Masukkan 2 buah GroupBox, 3 buah komponen Label , 3 buah komponen TextBox, 2 buah komponen Button , serta 1 buah komponen PictureBox, atur hingga seperti gambar berikut ini :
Masukkan kode Form Ganti Password sebagai berikut :
Coding Form Ganti Password
Imports System.Windows.Forms Imports System.Data.OleDb Public Class FrmGantiPassword Private Sub FrmGantiPassword_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Call Koneksi() TxtPassLama.Enabled = True TxtPassBaru.Enabled = False TxtKonfirmasi.Enabled = False End Sub Private Sub TxtPassLama_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TxtPassLama.KeyPress If e.KeyChar = Chr(13) Then 'Cek Password lama berdasarkan kode petugas cmd = New OleDbCommand("select * from petugas where kodeptg='" & FrmMenuUtama.Panel1.Text & "' and passwordptg='" & TxtPassLama.Text & "' ", Conn) rd = cmd.ExecuteReader rd.Read() If rd.HasRows Then TxtPassBaru.Enabled = True TxtPassBaru.Focus() Else MsgBox("Password lama salah") TxtPassLama.Focus() End If End If End Sub Private Sub TxtPassBaru_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TxtPassBaru.KeyPress If e.KeyChar = Chr(13) Then If TxtPassBaru.Text = "" Then MsgBox("Passwrod baru wajib diisi") TxtPassBaru.Focus() Else TxtKonfirmasi.Enabled = True TxtKonfirmasi.Focus() End If End If End Sub Private Sub TxtKonfirmasi_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TxtKonfirmasi.KeyPress If e.KeyChar = Chr(13) Then If TxtKonfirmasi.Text <> TxtPassBaru.Text Then MsgBox("Password konfirmasi salah") TxtKonfirmasi.Focus() Else 'Ganti password petugas If MessageBox.Show("Yakin akan ganti password..?", "", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.Yes Then Dim ganti As String = "Update petugas set passwordptg='" & TxtPassBaru.Text & "' where kodeptg='" & FrmMenuUtama.Panel1.Text & "'" cmd = New OleDbCommand(ganti, Conn) cmd.ExecuteNonQuery() TxtPassLama.Clear() TxtPassBaru.Clear() TxtKonfirmasi.Clear() Me.Close() Else TxtPassLama.Clear() TxtPassBaru.Clear() TxtKonfirmasi.Clear() Me.Close() End If End If End If End Sub Private Sub BatalBtn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BatalBtn.Click Me.Close() End Sub Private Sub OkBtn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OkBtn.Click If TxtPassLama.Text = "" Or TxtPassLama.Text = "" Or TxtKonfirmasi.Text = "" Then MsgBox("Password masih kosong", vbExclamation + vbOKOnly, "Pesan") Exit Sub End If If TxtKonfirmasi.Text <> TxtPassBaru.Text Then MsgBox("Password konfirmasi salah") TxtKonfirmasi.Focus() Else 'Ganti Password If MessageBox.Show("Yakin akan ganti password..?", "", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.Yes Then Dim ganti As String = "Update petugas set passwordptg='" & TxtPassBaru.Text & "' where kodeptg='" & FrmMenuUtama.Panel1.Text & "'" cmd = New OleDbCommand(ganti, Conn) cmd.ExecuteNonQuery() TxtPassLama.Clear() TxtPassBaru.Clear() TxtKonfirmasi.Clear() Me.Close() Else TxtPassLama.Clear() TxtPassBaru.Clear() TxtKonfirmasi.Clear() Me.Close() End If End If End Sub End Class
Sampai disini pembuatan form serta kode Program Penggajian menggunakan VB.net 2010, Setelah itu simpan project anda.
Demikian Tutorial lengkap VB.Net 2010 Membuat Program Penggajian ini, semoga bermanfaat bagi semuanya.. Amin..
Catatan Tambahan :
Jika anda mengiginkan Source Code Project Penggajian Vb.net 2010 ini, bisa anda dapatkan dengan donasi sebesar :
Rp 70.000, (Tujuh puluh ribu rupiah saja )
Selain mendapatkan Source Code Project Penggajian Vb.net 2010, anda juga akan mendapatkan bonus
Bonus :
- Bonus 1 : Tutorial visual studio 2010 / vb.net 2010 lengkap (Pdf) + File Project Program Penggajian Vb.net 2010
- Bonus 2 : Tutorial visual studio 2010 / vb.net 2010 lengkap (Pdf) + File Project Aplikasi Toko Buku Vb.net 2010, Link silahkan lihat :
- Bonus 3 : Project Aplikasi Inventori Vb.net 2010, Link silahkan lihat :
- Bonus 4 : Software IrisSkin, software ini digunakan untuk merubah tampilan pada form aplikasi visual basic 2010 agar lebih tampak professional
- Bonus 5 : Software Crystal Report For Vb.net, software ini digunakan untuk membuat laporan dengan cepat dan mudah.
- Bonus 6 : 10 Program & Source Code VB.Net 2008 ( Bisa diupgrade dan buka otomatis menggunakan vb.net 2010 keatas, terdiri dari :
- Aplikasi penjualan
- Aplikasi Inventori
- Aplikasi Koperasi
- Aplikasi Rental DVD
- Aplikasi Perpustakaan
- Aplikasi Penggajian
- Aplikasi Loundre
- Aplikasi Rawat Jalan
- Aplikasi Service Kendaraan
- Aplikasi Rumah Sakit
- Bonus 7 : 150 Program & Source Code Visual Basic 6.0 (vb 6.0), terdiri dari :
- Aplikasi penjualan
- Aplikasi Inventori
- Aplikasi Koperasi
- Aplikasi Rental DVD
- Aplikasi Perpustakaan
- Aplikasi Penggajian
- Aplikasi Loundre
- Aplikasi Rawat Jalan
- Aplikasi Service Kendaraan
- Aplikasi Hotel
- Aplikasi Restoran
- Aplikasi Pembayaran SPP
- Aplikasi Kredit Motor Dan apliasi lainnya sampai 150 aplikasi siap pakai
Cara Pembayaran :
Transfer dikirim ke rekening:
Bank Mandiri a/n Mohammad Abdul Azis No.Rek. 156-00-0457140-4 KCP Cibitung Bekasi
Konfirmasi Pembayaran :
- Via Email : (email saya : vee.bee10net@gmail.com)
Subject : Konfirmasi pembayaran source code Program Penggajian vb.net 2010
Isi : [No. Rek Anda] / [Atas Nama] / [Tanggal Transfer “dd-mm-yy”] /
[Jam Transfer] / [Alamat yang akan dikirm]
- Via SMS : (No. HP : 085731230992)
Konfirmasi pembayaran source code Program Penggajian vb.net 2010
[No. Rek Anda] / [Atas Nama] / [Tanggal Transfer “dd-mm-yy”] /
[Jam Transfer] / [Alamat yang akan dikirm]
Pengiriman :
Ada 2 jenis pilihan pengiriman sesuai keinginan anda
- 1. Program Penggajian vb.net 2010 + bonus yang saya sebutkan akan saya kirim lewat email jadi tinggal didownload satu per satu… harga hanya Rp 70.000
- 2. source code Program inventori vb.net 2010 + bonus saya kirim dalam bentuk DVD melalui jasa pengiriman JNE. Harga :Rp 70.000 + Biaya DVD + Ongkos kirim
Thanks Gan Tutorialnya..
Iya Sama sama…
masih bisa gak gan dapetin program gaji?
Iya masih bisa..
program penggajiannnya masih ready kah gan
Iya masih ready…
mas nomer nya sudah ganti iya. saya tertarik mas ingin membeli program gaji untuk tugas akhir saya mas. 08569014658 ini nomer saya mas.
Masih aktif WA/SMS/Telphon di 085731230992
Mas, utk bin > Debug itu di C atau D mas? Terimakasih
Diproject tersebut sesuai pembuatan awal disimpannya dimana…
Mas, program penggajiannya masih readykah?
Iya Masih ada ready..
Mas , masih ready kah program penggajiannya, saya sudah terinstall vb 2013 , pakah bisa..? dan bagaimana dengan crystal report for visual studio nya..?
Iya pasti bisa kalau Upgrade… crystal report sdh ada juga…
mas, kenapa saat di penggajian tidak keluar total gajiny, padhal semua komponen sudah di isi tpi hasilny kok minus, mohon solusiny mas
Ubah format tanggal dan waktu system laptop dengan format indonesia…
Halo gan, saya ingin source code nya
Tinggal TF ke norek 1560004571404 B. Mandiri an Moh. Abdul Azis, stlh TF konfirmasi wa aja, pengiriman lewat email berupa link download google drive… Tinggal download aja…
Masih Ready Kan
Iya Masih ready…
selamat siang, apakah yg dijual ini sourcecode nya ? jika iya bagaimana cara pemesanannya. trimakasih
Iya Masih ada ready…
Tinggal TF 70.000 ke norek 1560004571404 B. Mandiri an Moh. Abdul Azis, stlh TF konfirmasi wa aja, pengiriman lewat email berupa link download google drive… Tinggal download aja…
Tertarik dengan aplikasi penggajian
Tutorial Program Penggajian VB.net 2010 bagaimana saya mendapatkannya terimakasih
Tinggal TF ke norek 1560004571404 B. Mandiri an Moh. Abdul Azis, stlh TF konfirmasi wa aja, pengiriman lewat email berupa link download google drive… Tinggal download aja…
Ini buka bahasa c# kak ya ?
Pakai VB.net.. hampir sama kaya C#
Masih Ready gan ?
Iya masih ada ready..
Masih ada gan ?
itu no wa nya udah gak aktif ya ?
Iya masih ada… no WA masih aktif dari dulu…