Çarpraz sorgudaki sayılara göre kayıtların kilitlenmesi

Katılım
15 Ekim 2007
Mesajlar
58
Excel Vers. ve Dili
2003 ve 2007
Arkadaşlar kolay gelsin;
Ben işyerinde ödüllendirme ile ilgili bi problemi çözmeye çalışıyorum. Örnek ekte. Problemim ise şu, personel bilgileri bir tabladon alınıyor, alt taplo yani form ise o personele verilen ödülleri gösteriyor. Tabi gösterebilmesi için ödüllerin kaydedilmesi gerekiyor. Buraya kadar problem yok. Bunları hazırladım.

Çarpraz sorgu ile alt tablodaki verileri toplattırarak personelin toplam ne kadar ödül aldığını buluyorum. Bu seferde şöyle birşey istendi. Her personel toplamda istediğimiz kadar ödül alsın, yanlışlıkla dahi olsa fazla ödül almasın, atıyorum 10 aylık ödül, veya 8 aylık ödül, 20 aylık ödül gibi sınırlandırma olsun. Biz o sınırlandırmayı yaptığımızda o sınıra gelen personelin verilerine kayıt yapamıyalım, program bize engel olsun dendi.

Bense bunu beceremedim.

Kısaca çarpraz sorgu veya bir başka şekilde elde edilen toplam ödül kısmında personel manuel olarak bizim koyduğumuz sınırın üstünde ödül alamıyacak ve program o sınırı aşan kaydı kilitleyecek.

Yardımcı olacak arkadaşlara şimdidine teşekkürler.
 

Ekli dosyalar

Katılım
15 Ekim 2007
Mesajlar
58
Excel Vers. ve Dili
2003 ve 2007
cevap yokmu arkadaşlar?

derdimi mi anlatamadım, yoksa proplem karmaşık mı?
 
Katılım
8 Eylül 2006
Mesajlar
155
Excel Vers. ve Dili
Excel 2002
Çözüm

Veri giriş kontrollerini sorguda değil, formda yapmalısınız.
Çünkü sorgular, sadece sorgulama yapar.
Veri girişleri formlardan yapıldığı için kontrollerde formlardan yapılır.

Ekteki örnekte çözümünüzü bulabilirsiniz.

Gerekli kontroller "taltiftakip alt formu" adlı forma eklenmiştir.
Örnekte en fazla ödül sayısını 10 olarak aldım.
İstediğiniz gibi değiştirirsiniz.
Sadece yeni kayıt girişinde değil, düzeltme yaparkende kontrol ediyor.

Kod:
Private Sub Form_BeforeInsert(Cancel As Integer)
If KisininOdulSayisi([Forms]![ANAFORM]![sicili]) > 10 Then
    MsgBox "Bu kişi daha fazla ödül alamaz!"
    Cancel = True
End If
End Sub

Private Sub Form_BeforeUpdate(Cancel As Integer)
If Me.NewRecord Then
    If KisininOdulSayisi([Forms]![ANAFORM]![sicili]) + Me.aldıgımaas > 10 Then
        MsgBox "Ödül sayısını geçiyor!"
        Cancel = True
    End If
Else
    If KisininOdulSayisi([Forms]![ANAFORM]![sicili]) + (Me.aldıgımaas - Me.aldıgımaas.OldValue) > 10 Then
        MsgBox "Ödül sayısını geçiyor!"
        Cancel = True
    End If
End If
End Sub

Private Function KisininOdulSayisi(SicilNo As Long) As Long
Dim Sayi
    Sayi = DSum("aldıgımaas", "taltiftakip", "Sicili=" & SicilNo)
    If IsNull(Sayi) Then Sayi = 0
    KisininOdulSayisi = Sayi
End Function
 

Ekli dosyalar

Katılım
15 Ekim 2007
Mesajlar
58
Excel Vers. ve Dili
2003 ve 2007
seruz teşekkür ediyorum ilgin için. Yaptığın uygulama doğrusu işimi görüyor.
Ancak manuel olarak bizim o rakamı değiştirmemiz işimizi kolaylaştırıcak, çünkü bilgisayar başında hep ben bulunmuyorum.

Bir düğme ile de olsa tercih edilecek bir değerin girilmesiyle bu yapılabilse harika olacak. Eğer bu mümkün değilse yinede ellerine sağlık.. kolay gelsin..
 
Katılım
8 Eylül 2006
Mesajlar
155
Excel Vers. ve Dili
Excel 2002
Bir parametre tablosu ve formu ekledim.
AnaForm'dan Parametreler kısmına tıklayarak rakamı
istediğin gibi değiştirebilirsin.
 

Ekli dosyalar

Katılım
15 Ekim 2007
Mesajlar
58
Excel Vers. ve Dili
2003 ve 2007
Seruz ilgin için teşekkürler, problemimi sayende çözdüm. Görüşmek dileğiyle.
 
Üst