Anda di halaman 1dari 11

www.konsultasivb.

com
Pusat Kursus VB.Net & Bimbingan Tugas Akhir

PROGRAM PENGGAJIAN VB 6.0


Database Access, Crystal Report 8.5
Harga khusus untuk pembelajaran Rp. 50.000,Permintaan revisi dikenakan biaya sesuai tingkat kesulitan
Cara pembayaran melalui transfer ke salah satu rekening di bawah ini :
No Rek: 066 - 0525 - 947 (BCA an. Uus Rusmawan)
No Rek: 156 - 000 - 250 - 2146 (Mandiri an. Uus Rusmawan)
No Rek : 0139 - 0106 - 3038 - 504 (BRI an. Uus Rusmawan)
Program dikirim lewat email/Face Book (id : konsultasivb@ymail.com)
Peminat Hub Email : uusrusmawan71@gmail.com

8.1 Normalisasi File


Program penggajian ini dirancang dengan Normaliasi level ketiga (3NF) dengan bentuk seperti gambar
berikut.

Gambar 8.1 Normalisasi File Program Penggajian

Program penggajian ini menyimpan data ke dua tabel yaitu tabel Gaji dan DetailGaji seperti terlihat pada tabeltabel berikut ini.

www.konsultasivb.com
Pusat Kursus VB.Net & Bimbingan Tugas Akhir
Tabel Gaji

Gaji
NomorSlp

Tanggal

Jam

Pendapatan Potongan GajiBersih

0709090001

09/09/07

11:43:32 PM

1350000

360000

990000

NIP

KodeKsr

199607152

KSR01

Tabel DetailGaji
DetailGaji
NomorSlp KodePrk Jumlah
0709090001

001

1000000

0709090001

002

200000

0709090001

003

150000

0709090001

101

135000

0709090001

102

100000

0709090001

103

125000

8.2 Database Dan Tabel


Untuk mengetahui file database dan struktur masing-masing tabel berikut type data dan kunci primer maupun
kunci tamunya silakan buka CD pendukung buku ini.

Gambar 8.2 Database Dan Tabel

www.konsultasivb.com
Pusat Kursus VB.Net & Bimbingan Tugas Akhir
8.3 Membuat Module
Untuk memulai membuat program penggajian, aktifkanlah VB kemudian awali dengan membuat module lalu
ketik coding berikut ini.
Coding :
Public
Public
Public
Public
Public
Public

Conn As New ADODB.Connection


RSPerkiraan As ADODB.Recordset
RSDetail As ADODB.Recordset
RSGaji As ADODB.Recordset
RSKasir As ADODB.Recordset
RSPegawai As ADODB.Recordset

Public Sub BukaDB()


Set Conn = New ADODB.Connection
Set RSPerkiraan = New ADODB.Recordset
Set RSDetail = New ADODB.Recordset
Set RSGaji = New ADODB.Recordset
Set RSKasir = New ADODB.Recordset
Set RSPegawai = New ADODB.Recordset
Conn.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\ADOGaji.mdb"
End Sub

Dengan asumsi form login, data pegawai, data perkiraan dan kasir telah dibuat, kini saatnya membuat form
penggajian dengan bentuk seperti gambar 8.3.

8.4 Transaksi Penggajian


Ilustrasi pada program ini adalah sebagai berikut:
1.

Nomor slip gaji muncul secara otomatis, berubah setiap hari dan setiap ganti transaksi setelah slip gaji
sebelumnya disimpan.

2.

Nama kasir dan kode kasir muncul secara otomatis dari hasil login. Kode kasir tidak ditampilkan dalam
form (LblKodeKsr.Visible = False).

3.

Tanggal dan jam muncul secara otomatis diambil dari sistem komputer, oleh karena itu diharapkan
mengecek kembali validasi tanggal dan jam komputer sebelum program dijalankan.

4.

Hal pertama yang harus dilakukan adalah memilih NIP kemudian menekan enter, jika bulan ini NIP
tersebut telah menerima gaji maka akan muncul pesan bahwa NIP tersebut telah menerima gaji
(mencegah penerimaan gaji dua kali dalam satu bulan).

5.

Saat melakukan penggajian kode perkiraan (pembayaran) dapat dilakukan dalam Grid atau memilih dari
list kemudian menekan enter. Setelah itu isilah jumlah pembayarannya.

6.

Khusus untuk pajak, disini kami asumsikan sebesar 10% dari total pendapatan dan akan menjadi
potongan bagi pemdapatan hingga akhirnya ditemukan gaji bersihnya.

www.konsultasivb.com
Pusat Kursus VB.Net & Bimbingan Tugas Akhir

Gambar 8.3 Transaksi Penggajian

8.5 Slip Gaji

www.konsultasivb.com
Pusat Kursus VB.Net & Bimbingan Tugas Akhir

Gambar 8.4 Slip Gaji

8.6 Laporan Penggajian


Dalam pembuatan laporan, kita dapat melakukan banyak kreasi diantaranya membuat laporan yang bersifat
parsial, artinya laporan dibuat per karyawan atau laporan yang bersifat akumulasi, artinya dalam satu halaman
terdapat banyak NIP (karyawan). Buatlah form seperti bentuk di bawah ini.

www.konsultasivb.com
Pusat Kursus VB.Net & Bimbingan Tugas Akhir

Gambar 8.5 Laporan Penggajian

Coding:
Private Sub Form_Load()
'buatlah looping untuk bulan dari 1-12
'dan tahun mulai tahun 2001 s/d 2020
For i = 1 To 12
Combo1.AddItem i
Combo3.AddItem i
Next i
For i = 1 To 20
Combo2.AddItem 2000 + i
Combo4.AddItem 2000 + i
Next i
End Sub
Private Sub Combo1_Keypress(Keyascii As Integer)
If Combo1 = "" Or Keyascii = 27 Then Unload Me
End Sub
'Lap Bulanan
Private Sub Combo2_Click()
'buka database
Call BukaDB
'cari data yang tanggal dan bulannya dipilih di Combo1 dan Combo2
RSGaji.Open "select * from Gaji where month(tanggal)='" & Val(Combo1) & "' and
year(tanggal)='" & (Combo2) & "'", Conn
'jika tidak cocok, munculkan pesan
If RSGaji.EOF Then
MsgBox "Data tidak ditemukan"
Exit Sub
Combo1.SetFocus
End If
'jika ditemukan panggil file laporan yang
'datanya bulannya=Combo1 dan tahunnya= Combo2
CR.SelectionFormula = "Month({Gaji.Tanggal})=" & Val(Combo1.Text) & " and
Year({Gaji.Tanggal})=" & Val(Combo2.Text)
CR.ReportFileName = App.Path & "\Lap Gaji.rpt"
CR.WindowState = crptMaximized
CR.RetrieveDataFiles

www.konsultasivb.com
Pusat Kursus VB.Net & Bimbingan Tugas Akhir
CR.Action = 1
End Sub
Private Sub Combo3_Keypress(Keyascii As Integer)
If Combo3 = "" Or Keyascii = 27 Then Unload Me
End Sub
'Lap Bulanan
Private Sub combo4_Click()
'buka database
Call BukaDB
'cari data yang tanggal dan bulannya dipilih di Combo1 dan combo4
RSGaji.Open "select * from Gaji where month(tanggal)='" & Val(Combo3) & "' and
year(tanggal)='" & (Combo4) & "'", Conn
'jika tidak cocok, munculkan pesan
If RSGaji.EOF Then
MsgBox "Data tidak ditemukan"
Exit Sub
Combo1.SetFocus
End If
'jika ditemukan panggil file laporan yang
'datanya bulannya=Combo1 dan tahunnya= combo4
CR.SelectionFormula = "Month({Gaji.Tanggal})=" & Val(Combo3.Text) & " and
Year({Gaji.Tanggal})=" & Val(Combo4.Text)
CR.ReportFileName = App.Path & "\Lap Gaji1.rpt"
CR.WindowState = crptMaximized
CR.RetrieveDataFiles
CR.Action = 1
End Sub

Dengan program di atas dihasilkan laporan dengan bentuk seperti dua gambar berikut.

Gambar 8.6 Laporan Gaji Per Pegawai

www.konsultasivb.com
Pusat Kursus VB.Net & Bimbingan Tugas Akhir

Gambar 8.7 Laporan Gaji Akumulasi Per Bulan

8.7 Rincian Penggajian


Program ini berfungsi untuk melihat kembali data penggajian yang telah disimpan. Buatlah form dengan
bentuk seperti gambar di bawah ini.

Gambar 8.8 Rincian Penggajian

Coding:
Private Sub CmdCetak_KeyPress(Keyascii As Integer)
If Keyascii = 27 Then Unload Me
End Sub

www.konsultasivb.com
Pusat Kursus VB.Net & Bimbingan Tugas Akhir
Private Sub Combo1_Keypress(Keyascii As Integer)
If Keyascii = 27 Then Unload Me
End Sub
Private Sub Form_Load()
Call BukaDB
Combo1.Clear
RSGaji.Open "Select Distinct NomorSlp from Gaji", Conn
Do Until RSGaji.EOF
Combo1.AddItem RSGaji!NomorSlp
RSGaji.MoveNext
Loop
Conn.Close
End Sub
Private Sub Combo1_Click()
Call BukaDB
RSGaji.Open "select * from Gaji where NomorSlp='" & Combo1.Text & "'", Conn
RSPegawai.Open "select * from Pegawai where NIP='" & RSGaji!NIP & "'", Conn
If Not RSPegawai.EOF Then
TxtNIP = RSPegawai!NIP
TxtNama = RSPegawai!NamaPgw
TxtBagian = RSPegawai!Bagian
End If
DTDetail.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " & App.Path &
"\ADOGaji.mdb"
DTDetail.RecordSource = "select NamaPrk as [Nama Pembayaran],Jumlah from Perkiraan,DetailGaji
where DetailGaji.kodePrk=Perkiraan.kodePrk and NomorSlp='" & Combo1.Text & "'"
Set DataGrid1.DataSource = DTDetail
DTDetail.Refresh
DataGrid1.Refresh
TxtPendapatan = Format(GajiKotor, "##,###,###")
TxtPotongan = Format(Potongan, "##,###,###")
TxtTotal = Format(GajiKotor - Potongan, "##,###,###")
Conn.Close
End Sub
Function GajiKotor()
Set RSGajiKotor = New ADODB.Recordset
RSGajiKotor.Open "Select sum(Jumlah) as TTLPendapatan from DetailGaji where left(kodeprk,1)=0
and NomorSlp='" & Combo1 & "'", Conn
GajiKotor = RSGajiKotor!TTLPendapatan
End Function
Function Potongan()
Set RSPotongan = New ADODB.Recordset
RSPotongan.Open "Select sum(Jumlah) as TTLPotongan from DetailGaji where left(kodeprk,1)=1
and NomorSlp='" & Combo1 & "'", Conn
Potongan = RSPotongan!TTLPotongan
End Function

Private Sub Bersihkan()


TxtNamaPgw = ""
TxtBagian = ""
TxtPendapatan = ""
TxtPotongan = ""
TxtTotal = ""
End Sub
Private Sub CmdBatal_Click()
Bersihkan

www.konsultasivb.com
Pusat Kursus VB.Net & Bimbingan Tugas Akhir
Form_Activate
End Sub
Private Sub CmdTutup_Click()
CmdBatal_Click
Unload Me
End Sub
Private Sub CmdCetak_click()
If Combo1 = "" Then
MsgBox "Nomor slip gaji kosong"
Exit Sub
Combo1.SetFocus
End If
Pesan = MsgBox("Printer sudah siap..?", vbYesNo, "Konfirmasi")
If Pesan = vbYes Then
Dim MGrs As String
Printer.Font = "Courier New"
Call BukaDB
RSGaji.Open "select * from Gaji Where NomorSlp ='" & Combo1 & "'", Conn
RSKasir.Open "select * from kasir where kodeksr='" & RSGaji!KodeKsr & "'", Conn
RSKasir.Requery
RSPegawai.Open "select * from pegawai where NIP='" & RSGaji!NIP & "'", Conn
RSPegawai.Requery
Printer.Print
Printer.FontBold = True
Printer.Print
Printer.FontBold = False
Printer.CurrentX = 0
Printer.CurrentY = 0
Printer.Print Tab(5); "Nomor Slip : "; RSGaji!NomorSlp
Printer.Print Tab(5); "Tanggal
: "; Format(RSGaji!Tanggal, "DD-MMMM-YYYY")
Printer.Print Tab(5); "NIP
: "; RSGaji!NIP
Printer.Print Tab(5); "Nama
: "; RSPegawai!NamaPgw
Printer.Print Tab(5); "Kasir
: "; RSKasir!NamaKsr
MGrs = String$(33, "-")
Printer.Print Tab(5); MGrs
RSDetail.Open "select * from DetailGaji Where NomorSlp ='" & Combo1 & "'", Conn
RSDetail.Requery
RSDetail.MoveFirst
Do While Not RSDetail.EOF
Set RSPerkiraan = New ADODB.Recordset
RSPerkiraan.Open "select * from Perkiraan where KodePrk='" & RSDetail!KodePrk & "'", Conn
Printer.Print Tab(5); RSPerkiraan!NamaPrk;
If Left(RSDetail!KodePrk, 1) = "0" Then
Printer.Print Tab(25); RKanan(RSDetail!Jumlah, "###,###,### +")
Else
Printer.Print Tab(25); RKanan(RSDetail!Jumlah, "###,###,### -")
End If
RSDetail.MoveNext
Loop
Printer.Print Tab(5); MGrs
Printer.Print Tab(5); "Pendapatan :";
Printer.Print Tab(25); RKanan(RSGaji!Pendapatan, "###,###,### +");
Printer.Print Tab(5); "Potongan
:";
Printer.Print Tab(25); RKanan(RSGaji!Potongan, "###,###,### -");
Printer.Print Tab(5); MGrs
Printer.Print Tab(5); "Total
:";
If RSGaji!Pendapatan = RSGaji!Potongan Then
Printer.Print Tab(34); RSGaji!Pendapatan - RSGaji!Potongan
Else
Printer.Print Tab(25); RKanan(RSGaji!Pendapatan - RSGaji!Potongan, "###,###,### +");
End If
Printer.Print Tab(5); MGrs

10

www.konsultasivb.com
Pusat Kursus VB.Net & Bimbingan Tugas Akhir
Printer.Print
Printer.EndDoc
End If
End Sub
Private Function RKanan(NData, CFormat) As String
RKanan = Format(NData, CFormat)
RKanan = Space(Len(CFormat) - Len(RKanan)) + RKanan
End Function

11