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

#7
(03/09/2017, 04:52)hakan_s yazdı:
(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.

Hakan Bey, sanırım benim gönderdiğim örneği incelemediniz. O örnekte yıl ve ay bazında ve cumartesi ve pazar günlerini ayrı ayrı toplam olarak veren bir sorgu vardı. Sorgu 2'yi çalıştırırsanız istediğiniz şey odur. Sanırım gözünüzden kaçmış.
İnadına, ille de Accesstr.net...
Cevapla
#8
(03/09/2017, 11:49)mehmetdemiral yazdı:
(03/09/2017, 04:52)hakan_s yazdı:
(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.

Hakan Bey, sanırım benim gönderdiğim örneği incelemediniz. O örnekte yıl ve ay bazında ve cumartesi ve pazar günlerini ayrı ayrı toplam olarak veren bir sorgu vardı. Sorgu 2'yi çalıştırırsanız istediğiniz şey odur. Sanırım gözünüzden kaçmış.
Mehmet Bey,

Sizin hazırladığınız sorguyu inceledim ancak "Query1" sorgusuna ekleyemedim. Yani sizin sorgunuzda yıl ve ay'ı toplayarak çalıştığı için aldırabiliyoruz, diğer sorguda günlerin yanına "1" olarak gelmekte toplamı gelmemektedir. Mesela "Query1" sorgusunun en sağ kolonuna örnek bir alan ekledim. Bu alanda ay içinde bulunan Pazar günlerinin sayısının toplam olarak gözükmesini istorum. Karmaşık gelmiş olabilir bunun için kusura bakmayın.

Dosya ektedir.

Teşekkürler.
.rar Günler_Toplamı.rar (Dosya Boyutu: 21,34 KB | İndirme Sayısı: 7)
Cevapla
#9
İyi de, her işin tek sorguda halledilmesi gerekmediği gibi bazen böyle bir imkan da olmayabiliyor yani. Önce bazı verileri elemek için bir sorgu hazırlanır, bu sorgunun çıktısına göre de bazı sonuçlar filtrelenebilir. Bunu tek sorguda yapmak neden? Bu bir form ya da raporda görüntülenecekse bir sürü sorgudan sonuç alınır yani. Ben teknik olarak kendimce ve bildiğim kadarıyla doğru bir yoldan ilerlediğimi düşünüyorum. Bu işi yapmak için öyle "Pazartoplamı: Say([Günler])"  demek yetmez. Hani bu ifadede "pazar" günü? Kriterin adına pazartoplam yazınca bu iş olmuyor yani :Img-grin Koda belirteceksiniz Pazar gününü saymasını. Hangi pazar? Yıl ne, ay ne? İşte bu yüzden ya satır bazında yıl ve ayı ayıracaksınız, ondan sonra o yılın o ayının pazar günlerini sayacağını bilecek, ya da ayrı bir sorguyla bu iş çok basit olarak çözülecek. Siz kasap elinizin altındayken, manavda et arıyorsunuz.  İlla her ihtiyacınızı bir dükkandan almak istiyorsanız çok iyi Sql öğrenmeniz lazım. Ben şahsen o kadar iyi Sql bilmiyorum, pratik çözümlerle size yardımcı olmak istiyorum. Kolay gelsin.
İnadına, ille de Accesstr.net...
Cevapla
#10
(04/09/2017, 03:02)mehmetdemiral yazdı: İyi de, her işin tek sorguda halledilmesi gerekmediği gibi bazen böyle bir imkan da olmayabiliyor yani. Önce bazı verileri elemek için bir sorgu hazırlanır, bu sorgunun çıktısına göre de bazı sonuçlar filtrelenebilir. Bunu tek sorguda yapmak neden? Bu bir form ya da raporda görüntülenecekse bir sürü sorgudan sonuç alınır yani. Ben teknik olarak kendimce ve bildiğim kadarıyla doğru bir yoldan ilerlediğimi düşünüyorum. Bu işi yapmak için öyle "Pazartoplamı: Say([Günler])"  demek yetmez. Hani bu ifadede "pazar" günü? Kriterin adına pazartoplam yazınca bu iş olmuyor yani :Img-grin Koda belirteceksiniz Pazar gününü saymasını. Hangi pazar? Yıl ne, ay ne? İşte bu yüzden ya satır bazında yıl ve ayı ayıracaksınız, ondan sonra o yılın o ayının pazar günlerini sayacağını bilecek, ya da ayrı bir sorguyla bu iş çok basit olarak çözülecek. Siz kasap elinizin altındayken, manavda et arıyorsunuz.  İlla her ihtiyacınızı bir dükkandan almak istiyorsanız çok iyi Sql öğrenmeniz lazım. Ben şahsen o kadar iyi Sql bilmiyorum, pratik çözümlerle size yardımcı olmak istiyorum. Kolay gelsin.

Merhaba Mehmet Bey,
Kusura bakmayın iş yoğunlumdan dolayı ancak cevap yazabiliyorum. Aslında ben bunu daha önce Excel tablosunda yapmıştım. Yapmaya çalıştığım ise ay sonu tahmin raporudur. Ancak access'ten veri tabanına bağlanıp raporu da tablo olarak çektiğim ve ardından filtreleme işlemleri uyguladığım için rapor biraz kasıyordu. Benim size gönderdiğim kalem sayısı çok az, veri tabanında yaklaşık 8-10 bin kalem oluşmaktadır. Bende bu işlemi direkt olarak sorgu üzerinden işlemi hızlandırmak adına böyle bir şey yapmaya çalıştım. Bu yüzden günleri de tek sorguda görmek istemiştim. Excel de hazırlamış olduğum tahmin raporu da ekteki gibidir.

Sorularınıza da şöyle cevap verebilirim.
Yıl içerisinde bulunan her ayın günlerinin sayısını almak gibi, kriter adını bilgi olsun diye o şekilde yazmıştım. Img-grin  Bende bu işi visual basic kodlarında yazan günlerin refaransları aldırılarak yapılabilir diye düşündüğüm için böyle bir soru sormuştum. Access Query ile olmayacak birşeyse eski sistemde devam edebilirim. Olup olmadığı hakkında bilgi alsam da yeterli olacaktır. Benim de bilgim sınırlı olduğu için kimseyi yormak ve zamanını almak istemem.


Yıl: 2017, Ay: 9, Pazar Toplamı: 4, Cumartesi Toplamı: 5
Yıl: 2017, Ay: 10, Pazar Toplamı: 5, Cumartesi Toplamı: 4

İlginiz için teşekkür ederim.
.rar Tahmin raporu.rar (Dosya Boyutu: 14,21 KB | İndirme Sayısı: 12)
Cevapla
#11
Merhaba, benim eklediğim kod ile @mehmetdemiral hocanın eklediği örnek uygulamadaki sorgu doğru çalışıyor.

Yazılan cevaplar sorunuzu çözdü mü acaba?
Cevapla
#12
(13/09/2017, 07:12)ozanakkaya yazdı: Merhaba, benim eklediğim kod ile @mehmetdemiral hocanın eklediği örnek uygulamadaki sorgu doğru çalışıyor.

Yazılan cevaplar sorunuzu çözdü mü acaba?

Çözüldü Ozan Bey,

ilginize teşekkür ederim.
Cevapla

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

Yorum yapmak için üye olmanız gerekiyor

ya da
Task