İzin_Rapor takibi

1 2 3 4 5
31/01/2010, 08:37

benremix

Sn Hegu
Sn Seruz hocamın cevabına cevap vermemişsisniz. Dikkatinizden kaçmış olabilir. Konuya geri bildirimde bulununuz. Saygılar...
31/01/2010, 18:22

hegu

Sayın Seruz hocam,
Çok teşekkür ederim ilginize. Ümidimi kesmiştim. Fakat görünce baya sevindim. Örneğinizi inceledim. Çok güzel olmuş fakat şöyle bir şey istemiştim ben eğer 01.01.2010 ve 31.01.2010 tarihleri arası bir rapor istediğimde bana sadece bu tarihlere denk düşen izinleri kişilere göre ve toplamını yaptırmak istiyorum. Diyelim ki bir kişinin almış olduğu izinin Dönüş Tarihi şubat bir sarkarsa şubata sarkan kısmını yukarıda belirttiğim tarihlere denk düşeni kadarının toplamını ve şubat Ayini istediğimde de yani 01.02.2010 28.02.2010 o sarkan kısmı şubatta göstermek istiyorum ve. Yalnız çalışmanız içinde İnanın çok çok teşekkür ederim.
yapmak istediğimi örnekle açıklayayım. Hüseyin adında Kişi 28.01.2010 10 izin almış olsun tarihinde gün. 4 günü istediğim tarihler arasında geri kalan kısmıda şubat ayında görünmesini istiyorum Ben de eğer 01.01.2010 ve 31.01.2010 tarihleri arasında izinleri görmek istediğimde Hüseyin. Sizin Yaptığınız örnek doğru parçalıyor. Fakat iki tarih arası istediğimde hüseyinin izni sadece ocak ayında görünüyor. Ve koyduğumdan kaynaklanıyor arasýnda Tabi bende bir hata yoksa ben izin başlangıç tarihine. Sizin Yaptığınız doğru. Fakat ben nasıl bir iki tarih yapmalıyım.Bu konuda yardım rica ediyorum. Beceremediğim örnekte ekte
01/02/2010, 12:44

Seruz

O zaman mesaja da yazdığım gibi fazla zamanım yoktu, kodlamayı yaptım, gerisini siz biraz inceleyip, doğru veya yanlış dedikten sonra yaparız diye ekledim.

Ancak zamanımı harcayıp, emek verip yaptıktan sonra sizden cevap bile gelmeyince üzülmüştüm açıkcası.

Şimdi bir çalışma daha yapıp ekliyorum.
Muhtemel farklı gidiş ve dönüş ayları için ayrı ayrı sorgular yapıp, birleştirme sorgusu ile birleştirdim.
Listede gerçek gidiş ve dönüşleri de yazdırdım.

Bir inceleyin.
01/02/2010, 14:46

hegu

Sayın Seruz Hocam,
Emeğine sağlık çok güzel olmuş. Çok teşekkür ederim.
02/02/2010, 09:58

hegu

Sayın Seruz Hocam,
Kendi yapmış olduğum programı girince Izin_Hesaplama2 ve Izin_Hesaplama0 da "Ölçüt ifadesinde veri türü uyuşmazlığı" diye uyarı geliyor. Iz2 ölçütüne >0 yazınca yapıyor Bunu Izin_Hesaplama1 da da Iz1 ölçütüne >0 yazdığımda açıyor bir müddet sonra tırmak içindeki uyarı geliyor. Izin_Hesaplama2 ölçütü kaldırınca bas2 ve don2 bazı kişiler hariç hepsinde 00:00:00 şeklinde geliyor. Bunu düzeltmek için ne yapmam lazım.
teşekkür ederim.
23/02/2010, 17:02

Seruz

Sanırım tarih alanı null olanlar yüzünden problem oluyor.
Bunun için tüm fonksiyonları tekrar gözden geçirdim.
Alınan değerde date olan değişken tiplerini variant olarak değiştirip,
gelen değeri isdate() ile kontrol ettim. Sanırım sorun çözüldü.

Aşağıdaki kodları, ilgili modüle komple kopyalayın, kaydedin ve deneyin.

Kod:
Public Function IzinGunu(BasTar As Variant, DonTar As Variant, Donem As Byte) As Integer
Dim SonrakiAyBasi As Date
    IzinGunu = 0
    If Not IsDate(BasTar) Then Exit Function
    If Not IsDate(DonTar) Then Exit Function
    If Donem <> 1 And Donem <> 2 Then Donem = 1

    If Donem = 1 Then
        If Month(BasTar) = Month(DonTar) Then
            IzinGunu = DateDiff("d", BasTar, DonTar)
        Else
            SonrakiAyBasi = DateAdd("m", 1, DateSerial(Year(BasTar), Month(BasTar), 1))
            IzinGunu = DateDiff("d", BasTar, SonrakiAyBasi)
        End If
    Else
        If Month(BasTar) = Month(DonTar) Then
            IzinGunu = 0
        Else
            SonrakiAyBasi = DateAdd("m", 1, DateSerial(Year(BasTar), Month(BasTar), 1))
            IzinGunu = DateDiff("d", SonrakiAyBasi, DonTar)
        End If
    End If
End Function

Public Function IzinTarihi_Bas1(BasTar As Variant, DonTar As Variant) As Date
    If Not IsDate(BasTar) Then Exit Function
    If Not IsDate(DonTar) Then Exit Function
    IzinTarihi_Bas1 = BasTar
End Function

Public Function IzinTarihi_Don1(BasTar As Variant, DonTar As Variant) As Date
Dim SonrakiAyBasi As Date
    If Not IsDate(BasTar) Then Exit Function
    If Not IsDate(DonTar) Then Exit Function
    If Month(BasTar) = Month(DonTar) Then
        IzinTarihi_Don1 = DonTar
    Else
        SonrakiAyBasi = DateAdd("m", 1, DateSerial(Year(BasTar), Month(BasTar), 1))
        IzinTarihi_Don1 = DateAdd("d", -1, SonrakiAyBasi)
    End If
End Function

Public Function IzinTarihi_Bas2(BasTar As Variant, DonTar As Variant) As Date
Dim SonrakiAyBasi As Date
    If Not IsDate(BasTar) Then Exit Function
    If Not IsDate(DonTar) Then Exit Function
    If Month(BasTar) = Month(DonTar) Then
        IzinTarihi_Bas2 = 0
    Else
        IzinTarihi_Bas2 = DateAdd("m", 1, DateSerial(Year(BasTar), Month(BasTar), 1))
    End If
End Function

Public Function IzinTarihi_Don2(BasTar As Variant, DonTar As Variant) As Date
Dim SonrakiAyBasi As Date
    If Not IsDate(BasTar) Then Exit Function
    If Not IsDate(DonTar) Then Exit Function
    If Month(BasTar) = Month(DonTar) Then
        IzinTarihi_Don2 = 0
    Else
        IzinTarihi_Don2 = DonTar
    End If
End Function
1 2 3 4 5