|
"Saat Toplama İşlemi"
merhaba arkadaşlar
bir projemde personeli çalışma saatini toplatmam gerekiyor. ama 24 saatten sonra sonrun çıkıyor.
çalışma kodları aşağıda sundum. MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 10) = Format(Saat_Topla, "hh:mm") olan kısmı dd:hh:mm şeklinde değiştiriyorum ama direk dd 30 olarak gösteriyor.
Dim Saat_Hesapla_1 Dim Saat_Hesapla_2
Dim Saat_Fark Dim Saat_Yaz Dim Saat_Topla As Date Dim Saat_Donn 'Saat_Topla = 0 For Saat_Donn = 2 To 8 Saat_Hesapla_1 = Right(MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, Saat_Donn), 5) Saat_Hesapla_2 = Left(MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, Saat_Donn), 5)
Saat_Fark = Format(CDate(CDate(Saat_Hesapla_1) - CDate(Saat_Hesapla_2)), "hh:mm") Saat_Topla = CDate(Saat_Topla) + CDate(Format(Saat_Fark, "hh:mm"))
Next Saat_Donn
Dim GunCikar 'GunCikar = Format(Saat_Topla, "dd") - 30 MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 10) = Format(Saat_Topla, "hh:mm")
ayavan | 06.07.2010 10:09
|
Tam olarak ne yapmak istediğini anlamadım. Ama şunu söyleyebilirim, saat toplama,çıkarma işlemini Date tipinde tanımlı değişkenlerle tarih ve saat belirterek yaparsanız sorun yaşamazsınız. Ayrıca toplama çıkarma işlemleri için datediff, dateadd fonksiyonlarını kullanın bence
Örnek
İki zaman arası geçen süre için:
Dim Gir, Cik As Date Gir = CDate("13/06/2010 21:00:00") Cik = CDate("21/06/2010 19:00:00") GecenSaat = DateDiff("H", Gir, Cik)
Saat toplamak için :
Dim Once, Sonra As Date Once = CDate("13/06/2010 21:00:00") Sonra = DateAdd("H", 10, Gir) '+ 10Saat
NooG | 06.07.2010 21:53 |
Kardeş aşağıdakini modül oluşturup ekle;
Public Function StDk(ByVal dtmBsl As Date, ByVal dtmBts As Date) As String
Dim intSt As Integer Dim intDk As Integer
intDk = DateDiff("n", dtmBsl, dtmBts) intSt = intDk 60 intDk = intDk Mod 60
StDk = CStr(intSt) & ":" & CStr(intDk)
End Function
Bu da buton için;
Private Sub Command1_Click()
Text3 = Format(StDk(Text1, Text2), "HH:MM")
End Sub
umarım işini görür.
Said | 10.07.2010 18:03 |
|