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

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
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
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