Yorumları: 222
Konuları: 66
Kayıt Tarihi: 07-09-2016
Rep Puanı: 247 Acemi
Merhaba,
Bir alanım var CalismaSaati adında buraya girilen değerlerini toplamını almak istiyorum,
Örneğin:
15:50:10
20:15:10
Toplam : 36:05:20
Şeklinde nasıl yapabilirim aşağıdaki kod ile saati toplayabiliyorum fakat dakikayı 65 yazıyor.
Teşekkürler.
var
Bookmark: TBookmark;
ToplamCalisma: TTime;
Saat, Dakika, Saniye, MiliSaniye: Word;
TSaat, TDakika, TSaniye, TMiliSaniye: Double;
begin
TSaat := 0;
TDakika := 0;
TSaniye := 0;
TMiliSaniye := 0;
LabelCalismaSaati.Caption := '';
DM.SoforFisKayitDB.Open;
Bookmark := DM.SoforFisKayitDB.GetBookmark;
DM.SoforFisKayitDB.DisableControls;
try
DM.SoforFisKayitDB.First;
while not DM.SoforFisKayitDB.EOF do
begin
DecodeTime(DM.SoforFisKayitDB.FieldByName('CalismaSaati').AsDateTime, Saat, Dakika, Saniye, MiliSaniye);
TSaat := TSaat + Saat;
TDakika := TDakika + (Dakika / 60);
TSaniye := TSaniye + (Saniye / 3600);
TMiliSaniye := TMiliSaniye + MiliSaniye;
DM.SoforFisKayitDB.Next;
end;
finally
DM.SoforFisKayitDB.GotoBookmark(Bookmark);
DM.SoforFisKayitDB.FreeBookmark(Bookmark);
DM.SoforFisKayitDB.EnableControls;
ShowMessage(FloatToStr(TSaat));
ShowMessage(FloatToStr(TDakika));
ShowMessage(FloatToStr(TSaniye));
{
LabelCalismaSaati.Caption := 'Toplam Çalışma Saati : ' + DateTimeToStr(ToplamSaat) + ' Saat';
LabelToplamFis.Caption := ' Kayıt Sayısı : ' + IntToStr(DM.SoforFisKayitDB.RecordCount) + ' Adet';}
end;
Yorumları: 101
Konuları: 7
Kayıt Tarihi: 30-06-2019
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 334 Acemi
24-12-2020, Saat: 12:10
(Son Düzenleme: 24-12-2020, Saat: 12:10, Düzenleyen: bibilen.)
(24-12-2020, Saat: 11:20)erdogan Adlı Kullanıcıdan Alıntı: Merhaba,
Bir alanım var CalismaSaati adında buraya girilen değerlerini toplamını almak istiyorum,
Örneğin:
15:50:10
20:15:10
Toplam : 36:05:20
Şeklinde nasıl yapabilirim aşağıdaki kod ile saati toplayabiliyorum fakat dakikayı 65 yazıyor.
Teşekkürler.
var
Bookmark: TBookmark;
ToplamCalisma: TTime;
Saat, Dakika, Saniye, MiliSaniye: Word;
TSaat, TDakika, TSaniye, TMiliSaniye: Double;
begin
TSaat := 0;
TDakika := 0;
TSaniye := 0;
TMiliSaniye := 0;
LabelCalismaSaati.Caption := '';
DM.SoforFisKayitDB.Open;
Bookmark := DM.SoforFisKayitDB.GetBookmark;
DM.SoforFisKayitDB.DisableControls;
try
DM.SoforFisKayitDB.First;
while not DM.SoforFisKayitDB.EOF do
begin
DecodeTime(DM.SoforFisKayitDB.FieldByName('CalismaSaati').AsDateTime, Saat, Dakika, Saniye, MiliSaniye);
TSaat := TSaat + Saat;
TDakika := TDakika + (Dakika / 60);
TSaniye := TSaniye + (Saniye / 3600);
TMiliSaniye := TMiliSaniye + MiliSaniye;
DM.SoforFisKayitDB.Next;
end;
finally
DM.SoforFisKayitDB.GotoBookmark(Bookmark);
DM.SoforFisKayitDB.FreeBookmark(Bookmark);
DM.SoforFisKayitDB.EnableControls;
ShowMessage(FloatToStr(TSaat));
ShowMessage(FloatToStr(TDakika));
ShowMessage(FloatToStr(TSaniye));
{
LabelCalismaSaati.Caption := 'Toplam Çalışma Saati : ' + DateTimeToStr(ToplamSaat) + ' Saat';
LabelToplamFis.Caption := ' Kayıt Sayısı : ' + IntToStr(DM.SoforFisKayitDB.RecordCount) + ' Adet';}
end;
TSaat := Saat;
TDakika := Dakika;
TSaniye := Saniye;
TMiliSaniye := MiliSaniye;
Yorumları: 222
Konuları: 66
Kayıt Tarihi: 07-09-2016
Rep Puanı: 247 Acemi
Merhaba,
iki saatin toplamıda olabilir
caption:= TimeToStr(cxCalismaSaati.Time + cxBeklemeSaati.Time);
Yorumları: 101
Konuları: 7
Kayıt Tarihi: 30-06-2019
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 334 Acemi
24-12-2020, Saat: 14:12
(Son Düzenleme: 24-12-2020, Saat: 14:15, Düzenleyen: bibilen.)
(24-12-2020, Saat: 13:49)erdogan Adlı Kullanıcıdan Alıntı: Merhaba,
iki saatin toplamıda olabilir
caption:= TimeToStr(cxCalismaSaati.Time + cxBeklemeSaati.Time);
Kendi yazdığım ve projelerimde kullandığım kütüphanemden üç fonksiyon aşağıdadır. Olduğu gibi kullanabilirsin ya da üzerinde oynayarak istediğini yaparsın.
function RightPad(S: string; Ch: Char; Len: Integer): string;
var
RestLen: Integer;
begin
Result := S;
RestLen := Len - Length(s);
if RestLen < 1 then Exit;
Result := StringOfChar(Ch, RestLen) + S;
end;
function FloatToHHMM(sFloat: Double): string;
begin
Result := '';
if Trunc(sFloat) > 0 then
Result := Result + RightPad(IntToStr(Trunc(sFloat)),'0', 2) +':'
else
Result := Result + '00:';
if Trunc(Frac(sFloat) * 60) > 0 then
Result := Result + RightPad(IntToStr(Round(Frac(sFloat) * 60)),'0', 2)
else
Result := Result + '00';
Result := Trim(Result);
end;
function FloatToHHMMSS(sFloat: Double): string;
begin
Result :=
IntToStr(Trunc(sFloat) div 60) +':' +
RightPad(IntToStr(Trunc(sFloat) mod 60),'0', 2) +':' +
RightPad(IntToStr(Round(Frac(sFloat) * 60)),'0', 2);
end;
Yorumları: 222
Konuları: 66
Kayıt Tarihi: 07-09-2016
Rep Puanı: 247 Acemi
24-12-2020, Saat: 14:22
(Son Düzenleme: 24-12-2020, Saat: 14:54, Düzenleyen: erdogan.)
çok teşekkür ederim,
kullanımı nasıl acaba ?
Merhaba
bir örnek vermeniz mümkün mü acaba
Teşekkürler
Yorumları: 101
Konuları: 7
Kayıt Tarihi: 30-06-2019
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 334 Acemi
(24-12-2020, Saat: 14:22)erdogan Adlı Kullanıcıdan Alıntı: çok teşekkür ederim,
kullanımı nasıl acaba ?
Merhaba
bir örnek vermeniz mümkün mü acaba
Teşekkürler
caption:= FloatToHHMM(cxCalismaSaati.Time + cxBeklemeSaati.Time);
Yorumları: 222
Konuları: 66
Kayıt Tarihi: 07-09-2016
Rep Puanı: 247 Acemi
Doğru sonuç vermiyor
11:00:00 + 11:00:00
sonuç : 00:55
Yorumları: 101
Konuları: 7
Kayıt Tarihi: 30-06-2019
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 334 Acemi
(24-12-2020, Saat: 15:06)erdogan Adlı Kullanıcıdan Alıntı: Doğru sonuç vermiyor
11:00:00 + 11:00:00
sonuç : 00:55
caption:= FloatToHHMM((cxCalismaSaati.Time + cxBeklemeSaati.Time)*24);
Yorumları: 44
Konuları: 5
Kayıt Tarihi: 13-10-2018
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 157 Başlangıç
aşağıdaki linkte hourspan ve timespan var ancak uses e dateutils, TimeSpan, hourspan eklemek lazım, bunlar tam olarak işinizi görür.
https://stackoverflow.com/questions/2578...ing-delphi
https://www.tek-tips.com/viewthread.cfm?qid=602869
Yorumları: 222
Konuları: 66
Kayıt Tarihi: 07-09-2016
Rep Puanı: 247 Acemi
(24-12-2020, Saat: 15:23)bibilen Adlı Kullanıcıdan Alıntı: (24-12-2020, Saat: 15:06)erdogan Adlı Kullanıcıdan Alıntı: Doğru sonuç vermiyor
11:00:00 + 11:00:00
sonuç : 00:55
caption:= FloatToHHMM((cxCalismaSaati.Time + cxBeklemeSaati.Time)*24);
Çok Teşekkür Ederim.
|