Skip to main content

AccessTr.neT


İzin Kayıt Hesaplamasında Hatalı Hesaplama

İzin Kayıt Hesaplamasında Hatalı Hesaplama

Çözüldü #1
frmIzinKullanim UserForm sayfasında yaptığım hesaplamada bir hata var sanırım izinleri bir gün fazladan hesaplıyor. Çok baktım ama çözemedim yardımcı ola bilecek arkadaşlar varsa sevinirim.

Kod:
Sub hesapla()
    On Error Resume Next
    If dur = 1 Then Exit Sub
    txtGunSayisi = Empty
    txtsaat = Empty
    If ListBox1.ListIndex < 0 Or ListBox1.ListIndex > ListBox1.ListCount - 1 Then
        If txtBitisTarihi = Empty Or txtBaslangicTarihi = Empty Then MsgBox "Başlangıç ve Bitiş tarihi boş olamaz.", vbCritical, "DİKKAT": Exit Sub
    End If
    If cbstat <> "Memur" Then
        ReDim gunler(7)
        Dim k As Integer, i As Integer, m As Integer, gun As Integer, hftgn As Integer, say As Integer
        Dim trh As Date
        gunler = Array("Pazartesi", "Salı", "Çarşamba", "Perşembe", "Cuma", "Cumartesi", "Pazar")
        For k = 1 To 7
            If gunler(k - 1) = cbhafta Then Exit For
        Next
        gun = (CDate(txtBitisTarihi) - CDate(txtBaslangicTarihi))
        For i = 0 To gun
            trh = CDate(txtBaslangicTarihi) + i
            hftgn = Application.Weekday(trh, 2)
            say = WorksheetFunction.CountIf(tnm.Range("S3:S289"), trh)
            If k <> hftgn And say = 0 Then m = m + 1
        Next i
        txtGunSayisi = m
    Else
        txtGunSayisi = (CDate(txtBitisTarihi) - CDate(txtBaslangicTarihi)) + 1
    End If
    If cbIzinTuru.ListIndex = 1 Or cbIzinTuru.ListIndex = 2 Or cbIzinTuru.ListIndex = 4 Then
        If txtBitissaat = Empty Or txtCikissaat = Empty Or cbvardiya = Empty Then Exit Sub
        txtGunSayisi = Empty
        If cbvardiya.ListIndex = 0 Or cbvardiya.ListIndex = 1 Then
            If TimeValue(txtCikissaat) * 1 <= tnm.Cells(cbvardiya.ListIndex + 3, 23) And TimeValue(txtBitissaat) * 1 >= tnm.Cells(cbvardiya.ListIndex + 3, 25) Then
                txtsaat = WorksheetFunction.Text(TimeValue(txtBitissaat) - TimeValue(txtCikissaat) - tnm.Cells(cbvardiya.ListIndex + 3, 24) * 1, "hh:mm")
            Else
                txtsaat = WorksheetFunction.Text(TimeValue(txtBitissaat) - TimeValue(txtCikissaat), "hh:mm")
            End If
        Else
            txtsaat = WorksheetFunction.Text(TimeValue(txtBitissaat) - TimeValue(txtCikissaat), "hh:mm")
        End If
    End If
End Sub

*Yapmış olduğum hesaplama kodu. Bu kod frmIzinKullanim UserForm içerisinde

*İzin bitiş tarihini saymaması gerek çünkü izin dönüş tarihi olarak geçiyor. Memur personeller hariç diğer tüm personellerde hafta tatili izni düşer sayılmaz.  Örneğin 12.04.2022 başlama bitiş 14.04.2022 2 gün olarak hesaplaması gerek. Ama ne yazık ki 3 gün olarak hesaplıyor.
.rar Personel İzin Takip.rar (Dosya Boyutu: 2,65 MB | İndirme Sayısı: 6)
Cevapla
#2
If k <> hftgn And say = 0 Then m = m + 1
buradaki ne için?
Cevapla
#3
(16/04/2022, 16:39)berduş yazdı: If k <> hftgn And say = 0 Then m = m + 1
buradaki ne için?

İnternetten bulup uyarladığım için bilmiyorum ne yazık ki. Ama k ile olunca 8 olarak sayıyor diye forumlarda bilgi var çözmeye çalışıyorum hala.

Resim 1: https://imgyukle.com/i/RC0wi8

Resim 2 :https://imgyukle.com/i/RC0AVo

Resim 3: https://imgyukle.com/i/RC0fCn

Resim 4: https://imgyukle.com/i/RC00tj

Resim 5: https://imgyukle.com/i/RC0dOU

Resim 6: https://imgyukle.com/i/RC066h

(16/04/2022, 16:51)merttr07 yazdı:
(16/04/2022, 16:39)berduş yazdı: If k <> hftgn And say = 0 Then m = m + 1
buradaki ne için?

İnternetten bulup uyarladığım için bilmiyorum ne yazık ki. Ama k ile olunca 8 olarak sayıyor diye forumlarda bilgi var çözmeye çalışıyorum hala.

Resim 1: https://imgyukle.com/i/RC0wi8

Resim 2 :https://imgyukle.com/i/RC0AVo

Resim 3: https://imgyukle.com/i/RC0fCn

Resim 4: https://imgyukle.com/i/RC00tj

Resim 5: https://imgyukle.com/i/RC0dOU

Resim 6: https://imgyukle.com/i/RC066h

(16/04/2022, 16:39)berduş yazdı: If k <> hftgn And say = 0 Then m = m + 1
buradaki ne için?

ReDim gunler(7)
Dim k As Integer, i As Integer, m As Integer, gun As Integer, hftgn As Integer, say As Integer
Dim trh As Date
gunler = Array("Pazartesi", "Salı", "Çarşamba", "Perşembe", "Cuma", "Cumartesi", "Pazar")
For k = 1 To 7

Burayla alakalı ola bilirmi
Son Düzenleme: 16/04/2022, 16:56, Düzenleyen: merttr07.
Cevapla
#4
gun = (CDate(txtBitisTarihi) - CDate(txtBaslangicTarihi)) bu değeri aşağıdaki gibi düzenleyin
normal gün çıkarma işleminde aslında günlerden biri zaten çıkmıştır ama siz 0 dan başlattığınız için son günü de alıyor   
 
gun = (CDate(txtBitisTarihi) - CDate(txtBaslangicTarihi)) - 1
Cevapla
#5
(16/04/2022, 16:58)berduş yazdı: gun = (CDate(txtBitisTarihi) - CDate(txtBaslangicTarihi)) bu değeri aşağıdaki gibi düzenleyin
normal gün çıkarma işleminde aslında günlerden biri zaten çıkmıştır ama siz 0 dan başlattığınız için son günü de alıyor   
 
gun = (CDate(txtBitisTarihi) - CDate(txtBaslangicTarihi)) - 1

Denedim düzelmedi ama tekrar deneyim.

(16/04/2022, 16:58)berduş yazdı: gun = (CDate(txtBitisTarihi) - CDate(txtBaslangicTarihi)) bu değeri aşağıdaki gibi düzenleyin
normal gün çıkarma işleminde aslında günlerden biri zaten çıkmıştır ama siz 0 dan başlattığınız için son günü de alıyor   
 
gun = (CDate(txtBitisTarihi) - CDate(txtBaslangicTarihi)) - 1

Denedim değişen bir şey ne yazık ki yok.

https://imgyukle.com/i/RCAjpf
Son Düzenleme: 16/04/2022, 17:03, Düzenleyen: merttr07.
Cevapla
#6
hangi 2 tarihi girdiniz
kaç çıkması gerekiyordu kaç çıktı?
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da
Task