Skip to main content

AccessTr.neT


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

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

Çözüldü #1
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.
.rar Access işgünü ekleme.rar (Dosya Boyutu: 22,4 KB | İndirme Sayısı: 5)
Cevapla
#2
soruyu tam olarak anlamadım
7 iş günü olacaksa ve bu 7 değeri sabitse doğrudan +9 yapsanız olmaz mı?
Cevapla
#3
aşağıdaki kodu dener misiniz?
fonksiyon modüle eklenecek
Visual Basic Code
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
Cevapla
#4
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
Visual Basic Code
GunEkle(Tarih , eklenecek gün)
eğer resmi tatil hesaplanmayacaksa fonksiyon aşağıdaki gibi kullanılır
Visual Basic Code
GunEkle(Tarih , eklenecek gün,false)
Visual Basic Code
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
Cevapla
#5
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ş Adlı Kullanıcıdan Alıntı: 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.

Son Düzenleme: 20/03/2021, 19:31, Düzenleyen: ODRSCH26.
Cevapla
#6
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
Visual Basic Code
plandate3: Switch(([plandate1] Mod 7)=0;[plandate1]+9;([plandate1] Mod 7)=1;[plandate1]+8;([plandate1] Mod 7)>1;[plandate1]+7)
tamamen Access fonksiyonu
yada
Visual Basic Code
plandate3: IIf(([plandate1] Mod 7)<2;[plandate1]+9-([plandate1] Mod 7);[plandate1]+7)
Cevapla

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

Yorum yapmak için üye olmanız gerekiyor

ya da