Tarih Alanına İşgünü Nasıl Ekletebilirim?

1 2 3
20/03/2021, 19:37

ODRSCH26

(20/03/2021, 19:31)berduş yazdı: Evet maalesef burada yaptığımız kullanıcı tanımlı fonksiyon ama sorguda kullanabileceğimiz bu işi yapabilecek accesse ait bir fonksiyon var mı bilmiyorum.


Aslına bakarsanız sizin +9 koyma fikrinizden yola çıkarak sadece sorgu tarafında yapabilir miyiz? 
+9 fikri ptesi salı çarşamba gününe +9 koyuyorsak +7 iş günü ile aynı güne tekabul ediyor. Ancak perşembe ve cuma günü işi bozuyor. Sorgu da eğer sayı eklenen tarih perşembe ise +11, cuma ise +12 koy gerisinde +9 koy diyebilir miyiz acaba? 
Bunu yapabilirsek kullanıcı tanımlı Vba fonksiyonu kullanmamıza gerek kalmaz.
20/03/2021, 23:41

ODRSCH26

(20/03/2021, 20:36)berduş yazdı: yada
plandate3: IIf(([plandate1] Mod 7)<2;[plandate1]+9-([plandate1] Mod 7);[plandate1]+7)

Sayın Berdus,

2 sorgu fonksiyonunda da direk olarak 7 gün eklemektedir. İş günü mantığı ile eklemedi maalesef.
20/03/2021, 23:48

berduş

Kendi denemelerimde doğru sonuç vermişti
Hangi tarihleri girdiniz
Hangi sonucu verdi
Ne olmalıydı
Bir kaç tarih verirseniz deneyip çözmeye calisirim
20/03/2021, 23:54

ODRSCH26

(20/03/2021, 23:48)berduş yazdı: Kendi denemelerimde doğru sonuç vermişti
Hangi tarihleri girdiniz
Hangi sonucu verdi
Ne olmalıydı
Bir kaç tarih verirseniz deneyip çözmeye calisirim

plandate1 26.02.2021 iken 5.03.2021 (09.03.21 olmalıydı)
25.02.2021 iken 4.03.2021 (08.03.2021 olmalıydı)
1.02.2021 iken 8.02.2021 (10.02.2021 olmalıydı)
tarihlerini verdi.  Yani hepsinde +7 ekledi direk olarak. 2 sorgunuzu da denedim sonuç aynı.
21/03/2021, 01:06

berduş

kusura bakmayın galiba bir yerde hesap hatası yapmışım
access fonksiyonları ile oluşturamadım
ama gün sabit olduğundan fonksiyonu ona göre yeniden düzenledim
Function GunEkle(Trh As Date) As Date
GnSy = 0
Do While GnSy < 7
Trh = Trh + 1
If Trh Mod 7 > 1 Then GnSy = GnSy + 1
Loop
GunEkle = Trh
End Function
sorgudaki plandate3:GunEkle([plandate1]) şeklinde düzenlenmeli
Not: Access fonksiyonlarıyla olur mu diye araştırmaya devam ederim
21/03/2021, 09:15

berduş

aşağıdaki 3 fonksiyonu dener misiniz?
hangisini tercih ederseniz...

henüz hız testi yapmadım 4 yöntemden hangisi daha hızlı bilmiyorum
deneyince akşama doğru yazarım
1. yöntem
Chose7: Choose(([plandate1] Mod 7)+1;[plandate1]+10;[plandate1]+9;[plandate1]+9;[plandate1]+9;[plandate1]+9;[plandate1]+11;[plandate1]+11)
2. yöntem

IIF7: IIf([plandate1] Mod 7=0;[plandate1]+10;IIf([plandate1] Mod 7>4;[plandate1]+11;[plandate1]+9))
3. yöntem
Switch7: Switch([plandate1] Mod 7=0;[plandate1]+10;[plandate1] Mod 7>4;[plandate1]+11;[plandate1] Mod 7<5 And [plandate1] Mod 7>0;[plandate1]+9)
1 2 3