admin
Pengetahuan Komputer Terapan
02/03/2009
Menghitung Jumlah Jam Lembur?
Saya ingin menghitung lama jam kerja lembur bagi pegawai
Hari.1 Pengawai A
– Jam Mulai : 18.00
– Jam Selesai: 21.30
– Lama Lembur: 3.30 (3 Jam, 30 menit)
Hari.2
– Jam Mulai : 18.00
– Jam Selesai: 21.30
– Lama Lembur: 3.30 (3 Jam, 30 menit)
Hari.3
– Jam Mulai : 18.00
– Jam Selesai: 21.30
– Lama Lembur: 3.30 (3 Jam, 30 menit)
Pegawai A melakukan lembur selama 3 hari berturur-turut, totalnya
jadi: 10.30 (10 Kam, 30 Menit).
Bagaimana cara melakukan perhitungan Jam dengan pola seperti ini?
Yang pertama anda perhatikan, adalah menyiapkan rutin pembulatannya
menitnya dulu, biasanya sih lembur ndak perlu dihitung sampe
per-detiknya. Kemudian tinggal buat saja tabel khusus menampung ini,
sederhananya:
CREATE TABLE Attendance(
empid INTEGER NOT NULL,
workdate DATE NOT NULL,
timein TIMESTAMP,
timeout TIMESTAMP,
ottime TIMESTAMP,
otvalue NUMERIC(18,3),
….
primary key(empid, workdate)
);
nah untuk jumlahnya sih ya tinggal menggunakan penjumlahin biasa aja
nantinya, mau pake SUM juga bisa, atau SUM melalui report juga ya ndak
ada masalah serius dengan itu. sementara untuk operasional di sisi
delphinya tinggal pake TDateTime biasa aja.
Kemudian untuk mengkonversi lembur yang dalam tipe TDateTime
(TIMESTAMP), misalnya dari 10:30 jam itu menjadi 10,5 tinggal
menggunakan rutin ini:
{ konversi dari TimeStamp ke value (bilangan real) }
function TimeIntervalValue(const ATimeInterval: TDateTime): TDateTime;
var
Interval: TDateTime;
begin
Interval := HoursPerDay * ATimeInterval;
Result := (Trunc(Interval) + (Round(Frac(Interval) * 100)/100));
end;
{ konversi dari value (bilangan real), ke timestamp }
function ValueIntervalTime(const AIntervalValue: TDateTime): TDateTime;
begin
Result := AIntervalValue / HoursPerDay;
end;
Untuk menambah kemudahan operasional, mungkin bisa membuat
fungsi-fungsi baru untuk menghandle total waktu yang > 24 jam dari
contoh fungsi-fungsi default yang ada. fungsi-fungsi itu misalnya:
– EncodeTime
– DecodeTime
– TimeToString
– FormatTime
Kira-kira begitu deh. Good luck. :)
—
Salam,
-Jaimy Azle
http://www.opensubscriber.com/message/delphindo@yahoogroups.com/931917.html
terima kasih mas, sangat bermanfaat. :)