Skip to main content

AccessTr.neT


Belirtilen Tarihlerde İzinli Mi?

Belirtilen Tarihlerde İzinli Mi?

Çözüldü #1
Saygı Değer Hocalarım Merhaba,

Öncelikle konu ile alakalı kod bloğunu anlayabilmek için ayrı bir database yaptığımı belirtmek isterim.

Database'de iki tarih aralığı var.Bu tarih aralığında eğer kişilerin izinleri denk gelmiyorsa toplantı listesine ekliyor.

Dediğim gibi işin mantığını alamak için yaptığım database'de yardımcı olabileceğinizi düşünerek yaptım.

Şimdiden teşekkürler
.rar Tarih sorgu.rar (Dosya Boyutu: 21,7 KB | İndirme Sayısı: 4)
Cevapla
#2
Merhaba,

Örnek uygulamanıza yeni modül eklendi. Modüle, izinli olmayan personelin tespit edilmesi için

Visual Basic Code
Function ToplantiKontrol(Baslama As Date, IlkTarih As Date, SonTarih As Date, GunSayisi As Integer)

Dim GSayi As Integer
Dim Dahilmi As String
Dim Tarihim As Date

For GSayi = 1 To GunSayisi

    Tarihim = CDate(DateAdd("d", GSayi, Baslama))

    ' Tarihim değişkenine izin başlama tarihine 1 gün ekler, for döngü değeri 2 olursa 2 gün eklenir.
    Dahilmi = 0
    If (Tarihim >= CDate(IlkTarih)) And (Tarihim <= CDate(SonTarih)) Then
    ' Eklenen değer ile Tarihim değişkeni ilk tarihten büyük ve son tarihten küçük ise Dahilmi değişkeni 1 olur
        Dahilmi = 1
    End If
    
    If Dahilmi <> 0 Then
    'Dahilmi Değişkeni sıfırdan farklı ise sorgudaki sonuç 0 olacak,
        ToplantiKontrol = 1
        Exit For
    Else
        ToplantiKontrol = 0
    End If

Next GSayi

End Function

Şeklinde  fonksiyon eklendi. Bu fonksiyon, sorguda
Visual Basic Code
kontrol: ToplantiKontrol([izin_baslangic];[Forms]![frm_toplantiplanla]![ilk_tarih];[Forms]![frm_toplantiplanla]![son_tarih];[gun_sayisi])

kodu ile çağrılıyor, belirlenen tarihlerde personel izinli ise sonuç 1, izinli değil ise sonuç 0.

Formdaki butona, önceki sorunuza eklenen kodun benzeri
Visual Basic Code
If (IsNull(Me.ilk_tarih) Or Me.ilk_tarih = "") And (IsNull(Me.son_tarih) Or Me.son_tarih = "") Then

MsgBox ("tarih alanlarını doldur")

Else

kat_1 = ""
kat_2 = ""
kat_3 = ""

Me.mtn_kisisayisi = "Tarihlere uygun " & DCount("[Kimlik]", "srg_katilimcibul") & " kişi var"

If DCount("[Kimlik]", "srg_katilimcibul") = 0 Then
    MsgBox ("tarih aralığında kişi bulunamadı")
    Exit Sub
End If

EnBuyukSayi = DMax("[Kimlik]", "srg_katilimcibul")


    For Sayi = 0 To 100
        kat_1 = DLookup("isim", "srg_katilimcibul", "[Kimlik] = " & Int((EnBuyukSayi - 1 + 1) * Rnd + 1))
        'kat_1 alanına,srg_katilimcibul sorgusundan rastgele isim eklenir.
        If Len(kat_1) <> 0 Then
            Exit For ' kat_1 alanı dolunca döngüden çık
        End If
    Next
    
    Kriterim = Kriterim & "'" & kat_1 & "',"
    'Kriterim değişkenine, kat_1'deki değer Serkan ise " 'Serkan', " şeklinde kod atanır,
    Olcut = Replace("And ([isim] not in(" & Kriterim & "))", "',)", "')")
    'Olcut değişkenine, replace komutu ile, kriterin sonundaki virgül sildirilir,
    'Olcut değişkeni, sonraki döngüye "And ([isim] not in('Serkan'))" şeklinde hazırlanır
    
    '_____________________________________________________
    
    For Sayi = 0 To 100
        kat_2 = DLookup("isim", "srg_katilimcibul", "[Kimlik] = " & Int((EnBuyukSayi - 1 + 1) * Rnd + 1) & Olcut)
     If Len(kat_2) <> 0 Then
            Exit For ' kat_1 alanı dolunca döngüden çık
        End If
    Next
    
    Kriterim = Kriterim & "'" & kat_2 & "',"
    'Kat_2 alanına Ozan verisi aktarılmış ise, Kriterim alanı önceki kriter ile birleşerek
    ' "'Serkan','Ozan'," şeklinde kriter belirlenir,
    Olcut = Replace("And ([isim] not in(" & Kriterim & "))", "',)", "')")
    
    ' sona eklenen ',) kodlarının ') şeklinde aktarılması için replace eklendi, bu kod ile Olcut
    ' değişkeni (çift tırnak hariç) "And ([isim] not in('Serkan','Serbay'))" şeklinde sonraki alan olan
    ' kat_3 alanına hazırlandı.
    
    '__________________________________________________________
   
    For Sayi = 0 To 100
    
        kat_3 = DLookup("isim", "srg_katilimcibul", "[Kimlik] = " & Int((DMax("[Kimlik]", "srg_katilimcibul") - 1 + 1) * Rnd + 1) & Olcut)
        
            If Len(kat_3) <> 0 Then
                Exit For
            End If
    Next Sayi
    Kriterim = Kriterim & "'" & kat_3 & "',"
    Olcut = Replace("And ([isim] not in(" & Kriterim & "))", "',)", "')")

End If

Şeklinde eklendi, sorgu sonucunu formdaki 3 metin kutusuna aktarır. Kodların arasına anlaşılır olması açısından açıklama yazdım.

İnceleyip olumlu/olumsuz bildirimde bulununuz.
.rar Tarih sorgu_sld.rar (Dosya Boyutu: 30,43 KB | İndirme Sayısı: 9)
Cevapla
#3
Hocam öncelikle ellerine sağlık. Siz değerli hocalarıma nasıl teşekkür etsem azdır.Açıklama konusunda ayrıyetten teşekkür ederim. Hangi kod bloğunda hangi kodun kullanılacağı konusunda çok değerli oldu. Ellerinize sağlık. Tamda sormak istediğim buydu.
Cevapla

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

Yorum yapmak için üye olmanız gerekiyor

ya da