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
Belirtilen Tarihlerde İzinli Mi?
Merhaba,
Örnek uygulamanıza yeni modül eklendi. Modüle, izinli olmayan personelin tespit edilmesi için
Şeklinde fonksiyon eklendi. Bu fonksiyon, sorguda
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
Ş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.
Ö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.
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.
Konuyu Okuyanlar: 1 Ziyaretçi