AccessTr.neT
Tarih Alanına İşgünü Nasıl Ekletebilirim? - Baskı Önizleme

+- AccessTr.neT (https://accesstr.net)
+-- Forum: Microsoft Access (https://accesstr.net/forum-microsoft-access.html)
+--- Forum: Access Cevaplanmış Soruları (https://accesstr.net/forum-access-cevaplanmis-sorulari.html)
+--- Konu Başlığı: Tarih Alanına İşgünü Nasıl Ekletebilirim? (/konu-tarih-alanina-isgunu-nasil-ekletebilirim.html)

Sayfalar: 1 2 3


Tarih Alanına İşgünü Nasıl Ekletebilirim? - ODRSCH26 - 19/03/2021

Merhaba arkadaşlar,

Ekte paylaştığım Access içerisinde görebileceğiniz plan tablosundan elde ettiğim planquery sorgusunda plandate1 alanına 7 gün ekleterek plandate3 alanı yarattım sorgu ile. Ancak ctesi ve pazarı kaldırarak sadece işgünü eklemesini sağlamak istiyorum. Bunu nasıl yapabiliriz?
Konu ile yardımlarını bekliyorum. Teşekkürler.

Örnek:  plandate1 = 19.04.2021
plandate3 = 28.04.2021  olmalıdır.


RE: Tarih Alanına İşgünü Nasıl Ekletebilirim? - berduş - 19/03/2021

soruyu tam olarak anlamadım
7 iş günü olacaksa ve bu 7 değeri sabitse doğrudan +9 yapsanız olmaz mı?


RE: Tarih Alanına İşgünü Nasıl Ekletebilirim? - berduş - 19/03/2021

aşağıdaki kodu dener misiniz?
fonksiyon modüle eklenecek
Function GunEkle(Trh As Date, GnEk As Long) As Date
GnSy = 0
Do While GnSy < GnEk
Trh = Trh + 1
If Trh Mod 7 > 1 Then GnSy = GnSy + 1
Loop
GunEkle = Trh
End Function
sorgudaki plandate3:GunEkle([plandate1],7) düzenlenmeli


RE: Tarih Alanına İşgünü Nasıl Ekletebilirim? - berduş - 19/03/2021

aşağıdaki kod istenirse resmi tatilleri de devre dışı bırakır
eğer resmi tatil de hesaplanacaksa fonksiyon aşağıdaki gibi kullanılır
GunEkle(Tarih , eklenecek gün)
eğer resmi tatil hesaplanmayacaksa fonksiyon aşağıdaki gibi kullanılır
GunEkle(Tarih , eklenecek gün,false)
Function GunEkle(Trh As Date, GnEk As Long, Optional RsmTtl As Boolean = True) As Date
GnSy = 0
RsmGun = "0101;2304;0105;1905;1507;3008;2910"
Do While GnSy < GnEk
Trh = Trh + 1
HftSnTtl = IIf(Trh Mod 7 < 2, 1, 0)
RsmTtlE = InStr(RsmGun, Format(Trh, "ddmm"))
If RsmTtl = False Then RsmTtlE = 0
Ekle = HftSnTtl + RsmTtlE
If Ekle = 0 Then GnSy = GnSy + 1
Loop
GunEkle = Trh
End Function



Re: Tarih Alanına İşgünü Nasıl Ekletebilirim? - ODRSCH26 - 20/03/2021

Sayın Berdus,

çok teşekkür ederim. istediğim gibi bir sonuç veriyor.  bununla bağlantılı olarak birkaç yerde okuduğum kullanıcı tanımlı Vba fonksiyonlarını sorgularda kullanmak performansın en büyük düşmanı diyordu. Sanırım kastettiği burada yaptığımız.  Bu konudaki fikrinizi merak etmekteyim?

(19/03/2021, 14:51)berduş yazdı: soruyu tam olarak anlamadım
7 iş günü olacaksa ve bu 7 değeri sabitse doğrudan +9 yapsanız olmaz mı?


+9 hatalı sonuç veriyor. Çünkü 5 mart 2021 e örneğin +9 koyduğunuzda 14 mart pazar yapmakta.
Halbuki biz +7 iş günü ile 16 martı elde etmeliydik.




RE: Tarih Alanına İşgünü Nasıl Ekletebilirim? - berduş - 20/03/2021

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.

ozaman şunu dener misiniz
plandate3: Switch(([plandate1] Mod 7)=0;[plandate1]+9;([plandate1] Mod 7)=1;[plandate1]+8;([plandate1] Mod 7)>1;[plandate1]+7)
tamamen Access fonksiyonu
yada
plandate3: IIf(([plandate1] Mod 7)<2;[plandate1]+9-([plandate1] Mod 7);[plandate1]+7)