20 November 2008

Menghitung Lembur Berdasarkan Durasi Detik

Contoh sebuah aplikasi kecil menghitung besar uang lembur
berdasarkan hitungan detik, termasuk perhitungan lewat tengah
malam.

Persiapan:
1. Buat 1 Project baru dengan 1 Form, 11 Label, 11 Textbox, 2
commandbutton, dan 2 control Timer.
2. Beri nama dan urutan untuk setiap textbox sebagai berikut:
- txtTglMulai
- txtAwalLembur
- txtJamSistem
- txtDurasiLembur
- txtTotalDetik
- txtBesarUang
- txtTglSistem
- txtTglEsok
- txtDurasiPertama
- txtDurasiKedua
- txtTampungDetik
3. Beri nama masing-masing commandbutton dengan cmdMulai
dan cmdStop.
4. Set property Interval setiap Timer = 500, dan Enabled = False.
5. Ketik coding berikut ke dalam form yang bertalian.

Ketikkan coding berikut ini pada Form.


Dim totaldetik As Long
Dim hh, mm, ss As Integer
Dim tampungdetik As Long

Private Sub cmdMulai_Click()
Timer1.Enabled = True
txtAwalLembur.Text = Time
txtDurasiPertama.Text = Format(CDate("23:59:59") _- CDate(txtAwalLembur) +CDate("00:00:01"), _"hh:mm:ss")

'Ditambah satu detik karena belum bulat ke 24:00:00
'dan angka 24:00:00 tsb tidak valid utk Time
txtTglMulai.Text = Format(Date, "dd/mm/yyyy")
txtTglEsok.Text = Format(Date + 1, "dd/mm/yyyy")
txtDurasiKedua.Text = 0
txtTampungDetik.Text = 0
cmdMulai.Enabled = False
cmdStop.Enabled = True
End Sub

Private Sub cmdStop_Click()
Timer1.Enabled = False
Timer2.Enabled = False
cmdStop.Enabled = False
cmdMulai.Enabled = True
End Sub

Private Sub Timer1_Timer()
txtTglSistem.Text = Format(Date, "dd/mm/yyyy")
txtJamSistem.Text = Time
If txtJamSistem.Text = "00:00:00" Then
txtDurasiLembur.Text = Format(CDate("23:59:59") _- CDate(txtAwalLembur) +CDate("00:00:01"), _"hh:mm:ss")
Else
txtDurasiLembur.Text = _Format((CDate(txtJamSistem.Text) _-CDate(txtAwalLembur.Text)), "hh:mm:ss")
End If
If CDate(txtAwalLembur) = CDate(txtJamSistem) Then
txtTampungDetik.Text = 0
End If
If CDate(txtTglSistem) = CDate(txtTglEsok) Then
txtTglEsok.Text = Date + 1
txtTotalDetik.Text = Format(totaldetik + 1, _
"0,0")
txtTampungDetik.Text = totaldetik + 1
Timer1.Enabled = False
Timer2.Enabled = True
End If
hh = Hour(txtDurasiLembur)
mm = Minute(txtDurasiLembur)
ss = Second(txtDurasiLembur)
totaldetik = hh * 3600 + mm * 60 + ss
txtTotalDetik.Text = Format(totaldetik, "0,0")
txtBesarUang.Text = Format(txtTotalDetik * 100, _
"0,0")
txtDurasiKedua.Text = Format(Val(txtTotalDetik) - _
Val(txtTampungDetik), "0,0")
End Sub
Private Sub Timer2_Timer()
185
txtTglSistem.Text = Format(Date, "dd/mm/yyyy")
txtJamSistem.Text = Time
If txtJamSistem.Text = "00:00:00" Then
txtDurasiLembur.Text = Format(CDate("23:59:59") _- CDate(txtAwalLembur) +CDate("00:00:01"), _"hh:mm:ss")
Else
txtDurasiLembur.Text = _
Format(CDate(txtJamSistem.Text) _+ CDate(txtDurasiPertama.Text) - _CDate("00:00:00"), "hh:mm:ss")
End If
If CDate(txtAwalLembur) = CDate(txtJamSistem) Then
txtTampungDetik.Text = 0
End If
If CDate(txtTglSistem) = CDate(txtTglEsok) Then
txtTglEsok.Text = Date + 1
txtTotalDetik.Text = Format(totaldetik, "0,0")
txtTampungDetik.Text = totaldetik + 1
Timer2.Enabled = False
Timer1.Enabled = True
End If
hh = Hour(txtDurasiLembur)
mm = Minute(txtDurasiLembur)
ss = Second(txtDurasiLembur)
totaldetik = hh * 3600 + mm * 60 + ss
txtTotalDetik.Text = Format(totaldetik, "0,0")
txtBesrUang.Text = Format(txtTotalDetik * 100, -"0,0")
txtDurasiKedua.Text = Format(Val(txtTotalDetik) - _Val(txtTampungDetik), "0,0")
End Sub

Tidak ada komentar: