Skip to main content

AccessTr.neT


Ay İçinde Geçen Cumartesi Ve Pazar Günlerinin Toplamını Bulmak

Ay İçinde Geçen Cumartesi Ve Pazar Günlerinin Toplamını Bulmak

Çözüldü #1
Selamlar,

Ekte gönderdiğim Access query sorgusunda ay içinde geçen Cumartesi ve Pazar günlerinin toplamını bulmak istiyorum. Ayrıca "geçen iş günü" formülü de tam olarak çalışmıyor. Doğru formül için yardımlarınızı rica ederim.

Teşekkürler.
.rar Günler_Toplamı.rar (Dosya Boyutu: 19,98 KB | İndirme Sayısı: 4)
Cevapla
#2
Merhaba. Access'te özellikle 2010 yılından sonra Türkçe Access sorgulamalarında ölçüt konusunda bazı komutlar sorun çıkartmaya başladı. Bu nedenle biraz zorlamayla, ifade biçiminde ve ingilizce olarak yazabiliyoruz komutları. Bu nedenle Access kullanarak bu işi yapmak isterseniz, sorguda birden çok değeri filtrelemek ve sonra da saydırmak gerekiyor. Ben çalışmanız üzerinde keyfime göre bir sorgu hazırladım. İşinizi görürse bu yoldan devam edersiniz. Olmazsa yazın, buluruz bir şeyler mutlaka Img-grin
.rar Demiral_Günler_Toplamı.rar (Dosya Boyutu: 30,68 KB | İndirme Sayısı: 13)
İnadına, ille de Accesstr.net...
Cevapla
#3
Merhaba,

Modüle aşağıdaki kodları ekleyip kaydet.

Public Function HaftaSonuHesapla(IlkTarih As Date, SonTarih As Date) As Long

Dim HaftaSonu As Long, GSayim As Long

HaftaSonu = 0
For GSayim = 0 To DateDiff("d", IlkTarih, SonTarih)
    Select Case Weekday(DateAdd("d", GSayim, IlkTarih))
        Case 1, 7
            HaftaSonu = HaftaSonu + 1
    End Select
Next
HaftaSonuHesapla = HaftaSonu
End Function

Public Function IsGunuHesapla(IlkTarih As Date, SonTarih As Date) As Long

Dim IsGunu As Long, GSayim As Long

IsGunu = 0
For GSayim = 0 To DateDiff("d", IlkTarih, SonTarih)
    Select Case Weekday(DateAdd("d", GSayim, IlkTarih))
        Case 2, 3, 4, 5, 6
            IsGunu = IsGunu + 1
    End Select
Next
IsGunuHesapla = IsGunu
End Function


Sorguda yeni alana, iş günü toplamı için

IsGunuToplami: IsGunuHesapla(DateSerial(Year([Tarih]);Month([Tarih]);1);DateSerial(Year([Tarih]);Month([Tarih])+1;0))


Hafta Sonu toplamı için

HaftaSonuToplami: HaftaSonuHesapla(DateSerial(Year([Tarih]);Month([Tarih]);1);DateSerial(Year([Tarih]);Month([Tarih])+1;0))

Kodları ekle.


Mesajını yeni fark ettim @mehmetdemiral abi. Kusura bakma.
Cevapla
#4
Bu arada, yeni farkettim: Bir de "geçen gün doğru çalışmıyor demişsiniz. Ee yani, ayın ilk günü ile son günü üzerinden işlem yaparsanız başka sonuç çıkmaz ki Img-grin) O sorgudaki geçen iş gününün kodunu 

Geçen İş Günü: WorkingDays([Ayın İlk Günü];[Tarih])

şeklinde düzeltin de, kodcağız her satırda söz konusu tarih yerine, ayın ilk gününü baz almasın.
İnadına, ille de Accesstr.net...
Cevapla
Smile #5
(03/09/2017, 03:12)mehmetdemiral yazdı: Bu arada, yeni farkettim: Bir de "geçen gün doğru çalışmıyor demişsiniz. Ee yani, ayın ilk günü ile son günü üzerinden işlem yaparsanız başka sonuç çıkmaz ki Img-grin) O sorgudaki geçen iş gününün kodunu 

Geçen İş Günü: WorkingDays([Ayın İlk Günü];[Tarih])

şeklinde düzeltin de, kodcağız her satırda söz konusu tarih yerine, ayın ilk gününü baz almasın.

Merhaba Mehmet Bey,

Evet haklısınız, başlangıçta öyleydi aslında ancak daha sonra diğer formülü yapmaya çalışırken saçmalamışım. Img-grin
Ozan Bey'in yazmış olduğu formülle sorguları tekrar düzenledim, sorunsuz bir şekilde çalıştı.

İlginize teşekkür ederim.
Cevapla
#6
(03/09/2017, 03:09)ozanakkaya yazdı: Merhaba,

Modüle aşağıdaki kodları ekleyip kaydet.

Public Function HaftaSonuHesapla(IlkTarih As Date, SonTarih As Date) As Long

Dim HaftaSonu As Long, GSayim As Long

HaftaSonu = 0
For GSayim = 0 To DateDiff("d", IlkTarih, SonTarih)
    Select Case Weekday(DateAdd("d", GSayim, IlkTarih))
        Case 1, 7
            HaftaSonu = HaftaSonu + 1
    End Select
Next
HaftaSonuHesapla = HaftaSonu
End Function

Public Function IsGunuHesapla(IlkTarih As Date, SonTarih As Date) As Long

Dim IsGunu As Long, GSayim As Long

IsGunu = 0
For GSayim = 0 To DateDiff("d", IlkTarih, SonTarih)
    Select Case Weekday(DateAdd("d", GSayim, IlkTarih))
        Case 2, 3, 4, 5, 6
            IsGunu = IsGunu + 1
    End Select
Next
IsGunuHesapla = IsGunu
End Function


Sorguda yeni alana, iş günü toplamı için

IsGunuToplami: IsGunuHesapla(DateSerial(Year([Tarih]);Month([Tarih]);1);DateSerial(Year([Tarih]);Month([Tarih])+1;0))


Hafta Sonu toplamı için

HaftaSonuToplami: HaftaSonuHesapla(DateSerial(Year([Tarih]);Month([Tarih]);1);DateSerial(Year([Tarih]);Month([Tarih])+1;0))

Kodları ekle.

Merhaba Ozan Bey,
Bu konuda birşey sormak isterim, verdiğiniz kodla ay içinde geçen günlerin toplamını yazdırabilir miyiz? Mesela Eylül ayı içinde Pazar : 4, Cumartesi: 5 gibi saydırmak için formülü nasıl yazabilirim?
Dosyanın güncel hali ektedir. Umarım diğer arkadaşlara da faydalı olur.

Yardımlarınız için teşekkür ederim.
.rar Günler_Toplamı.rar (Dosya Boyutu: 22,74 KB | İndirme Sayısı: 7)
Cevapla

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

Yorum yapmak için üye olmanız gerekiyor

ya da