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.
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
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.
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
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.
(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
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.
Ozan Bey'in yazmış olduğu formülle sorguları tekrar düzenledim, sorunsuz bir şekilde çalıştı.
İlginize teşekkür ederim.
(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.