[FONKSiYON] Hesaplanan İzin Süresinin Koşullu Olarak İlk 10 gününü Dışlama
#19
Dsezgin hocam verdiğiniz fonksiyonu test ettim. Fonksiyon hiçbir kriter düşünmezsek düzgün hesap yapıyor. Lakin aşağıda eklediğim resimlerdeki tarihlere dikkat ederseniz geçmiş ve geleceğe yönelik olan izinleri yanlış hesap ettiğinden dolayı sonuç hatalı çıkıyor. 14 günlük iznin bir kısmı 1. ay bir kısmı 2. ay olduğunu varsaydım her iki aydan da düşüş yapıyor. bu hesabı raporu aldığım ay için hesaplamasını istiyorum. 1. ay için rapor aldığımda "201701" 2. ay ve sonraki aylardaki izinlerin toplamı yanlışlığa neden oluyor.

Bunu düzeltmek için biraz düzenleme yaptım ancak o zamanda şöyle bir sorunla karşılaştım. parçalı olan izinlerde yalnız rapor aldığım ayla sınırlı tuttum bu seferde o izni hiç göstermedi.

[Resim: Gy6l2r.png]
[Resim: yzYXok.png]
[Resim: 6yg0q0.png]
[Resim: WGBd9m.png]



  Alıntı
Bu mesajı beğenenler:
#20
For Tarih = IzKay!Bsl To IzKay!Bts
If YilAy < CLng(Format(Tarih, "yyyymm")) Then Exit For
TplIz = IIf(TplIz = -1, 1, TplIz + 1)
'Debug.Print Tarih, TplIz
Next Tarih

Koyu olan satiri mesaja tasimamisim.



  Alıntı
Bu mesajı beğenenler:
#21
Hesap yanlış gidiyordu dediğiniz gibi ekledim ay içini düzeltti. Lakin izin olmayan ayları üzerine toplayarak gitmeye devam etti bende aşağıdaki gibi değişiklik yaptım ve <> ise çıkış dedim

For Tarih = IzKay!Bsl To IzKay!Bts
If YilAy <> CLng(Format(Tarih, "yyyym")) Then Exit For
TplIz = IIf(TplIz = -1, 1, TplIz + 1)


Şimdide izinin olduğu ayı doğru, ayın sarktığı ikinci ayı yanlış hesap etmeye başladı. Eğer ay içinde hiç izin olmazsa fonksiyondan çıkış yapıyor sorun yok.. Tek sorun ayın sarktığı ikinci ayı ay içine düşen gün sayısını değil de bir ay önceki aydan 12 den artan gün sayısını da hesaba katarak düşüyor.

ÖRNEK:
1. ay 17 gün izin 31-5= 26 DOĞRU
2. ay 4 gün izin 28-4=24 DOĞRU olması gerekirken 28-9=19 ÇIKIYOR

1.ay 10 gün izin yazıyor bir kısmı 2. aya sarkan.
3. ay 4 gün izin yazıyor....

normalde 4. ay raporu alana kadar sonuç 0. 4. ay raporunda 30-2=28 olması gerekirken burada sonucu 0 alıyor ve 30 gösteriyor.



  Alıntı
Bu mesajı beğenenler:
#22
Visual Basic
  1. Public Function GunSayiMi(YilAy As Long, Sicil As String) As String
  2. Dim Tarih As Date, GnSy As Long
  3. Dim IzKay As New ADODB.Recordset, Isaret, TplIz, YayIz As Long, SQLD As String
  4. SQLD = "SELECT [İZİN BAŞLAMA] As Bsl, [İZİN BİTİŞ] As Bts From Tbl_izinler Where ((([PERSONEL TC])='" & Sicil & "') And (([İZİN YILI])='" & Mid(YilAy, 1, 4) & "') And (([İZİN TÜR ID])=6)) Order By [İZİN BAŞLAMA]"
  5. TplIz = -11
  6. IzKay.Open SQLD, CurrentProject.Connection, adOpenDynamic, adLockOptimistic
  7. Do Until IzKay.EOF
  8. For Tarih = IzKay!Bsl To IzKay!Bts
  9. If YilAy > CLng(Format(Tarih, "yyyymm")) Then
  10. TplIz = IIf(TplIz >= -1, 0, TplIz + 1)
  11. ElseIf YilAy < CLng(Format(Tarih, "yyyymm")) Then
  12. Exit For
  13. ElseIf YilAy = CLng(Format(Tarih, "yyyymm")) Then
  14. TplIz = IIf(TplIz = -1, 1, TplIz + 1)
  15. End If
  16.  
  17. Debug.Print Tarih, TplIz, Isaret
  18. Next Tarih
  19. IzKay.MoveNext
  20. Loop
  21. IzKay.Close: Set IzKay = Nothing
  22. GnSy = DateDiff("d", DateSerial(CLng(Mid(YilAy, 1, 4)), CLng(Mid(YilAy, 5, Len(YilAy))), 1), DateAdd("m", 1, DateSerial(CLng(Mid(YilAy, 1, 4)), CLng(Mid(YilAy, 5, Len(YilAy))), 1)))
  23. GunSayiMi = GnSy - IIf(TplIz < 0, 0, TplIz)
  24. End Function




.rar   AlperGun_dsezgin.rar (Boyut: 729,32 KB / İndirilme: 69) olarak istenilen gibi sonuc alinabiliyor.



  Alıntı
Bu mesajı beğenenler:
#23
Sezgin hocam teşekkür ederim. çok zahmet verdim sana.



  Alıntı
Bu mesajı beğenenler:


Benzer Konular...
Konu: Yazar Cevaplar: Gösterim: Son Mesaj
  [FORM] Onay Kutususun şarta Bağlı Olarak Otomatik Olarak Işaretlenmesi Samih KARSLI 2 64 06-04-2024, 18:49
Son Mesaj: Samih KARSLI
  Virgülle Ayrılmış Verilerin Her Bir Değerini Yeni Kayıt Olarak Ekleme adnnfrm 5 155 28-11-2023, 01:37
Son Mesaj: dsezgin
  Formu Pdf Olarak Kaydetme snapper 8 248 01-11-2023, 22:59
Son Mesaj: dsezgin
  12 Saatlik (am-pm) Metin Olarak Girilmiş Saat Verisini 24 Saatlik Olarak Gösterme Hk. adnnfrm 2 146 05-10-2023, 03:16
Son Mesaj: adnnfrm
  Raporları Gezinme Araçlı Pdf Olarak Dışarı Aktarmak Hk. adnnfrm 4 175 04-10-2023, 10:34
Son Mesaj: dsezgin
  Ilgili Güne Göre Koşullu Sorgu turgay52 6 227 23-08-2023, 11:50
Son Mesaj: turgay52
  Tabloda 0'ın Altındaki Negatif Değerleri 0 Olarak Yazmak Yada Boş Bos Göstermek ofbayoglu61 4 188 15-07-2023, 13:16
Son Mesaj: ofbayoglu61
  [RAPOR] Açılan Raporu Pdf Olarak Kaydetmek hnakis 1 169 24-05-2023, 07:53
Son Mesaj: alperalper

Foruma Git:


Bu konuyu görüntüleyen kullanıcı(lar): 1 Ziyaretçi