Kritere Göre Hesaplama (Yardım)

1 2
10/01/2020, 01:51

sancaktar

Merhaba değerli arkadaşlar.

Besyö öğrencilerine yapılacak olan test için bir uygulama hazırlamamız gerekiyor. Uygulamanın içeriği kısaca şu şekilde olacak;

- Cinsiyetine göre, örneğin 40 şınavın 16-20 yaş aralığında bir erkek öğrenci için puanı 70 iken, 24 yaşından büyük bir erkek öğrenci için puanı 82 olacak.
Bu 40 şınavın 16-20 yaş aralığında bir bayan öğrenci için ise puanı  100 iken 24 yaşından büyük bir bayan öğrenci için puanı 88 olacak.

Programdaki kriter mantığı kısaca yukarıdaki anlattığım şekilde olacak. Kaç gündür işin içinden çıkamadık, türlü türlü hesaplama yöntemi diyoruz ancak tecrübesizliğimizden ve bilgisizliğimizden olsa gerek, düzgün bir mantık kuramadık.

Yazımın ekinde eklediğim programda ŞınavErkek ve ŞınavBayan isimli 2 tablo oluşturdum. Orada erkekler için şınav tekrar sayısı ve yaş aralığına göre alacağı puan ile aynı işlemin bayanlar için yapılan puanlaması mevcut.

Form üzerinde şınav hesabını yapmamız için yardımcı olabilir misiniz? Yapacak olan arkadaşımın sadece şınav hesabını yapması yeterli, oradaki mantığa göre biz mekik, barfiks ve koşu için hesaplamaları yaparız.

Şimdiden çok teşekkür ediyorum arkadaşlar, saygı ve selamlarımla.
10/01/2020, 08:07

accessman

if lerle kolayca yapılabilecek bir uygulama gibi gözüküyor.


if(kadin ise)
   if(16 ya eşit veya daha büyük ve 20 ye eşit veya daha küçükse)
         puan = 100
   elseif(24 den daha büyükse)
          puan = 88
    end if
else
    if(16 ya eşit veya daha büyük ve 20 ye eşit veya daha küçükse)
         puan = 70

   elseif(24 den daha büyükse)
          puan = 82

    end if
end if

mesela bu neden işinizi görmesin
10/01/2020, 08:08

accessman

belki de sıkıntı 20-24 yaş arasındaki grubu görmezden geldiğiniz içindir
10/01/2020, 10:34

ozanakkaya

Erkek öğrenci için:

Dim GYas As Integer

GYas = DateDiff("yyyy", Me.dogum_tarihi, Now()) + Int(Format(Now(), "mmdd") < Format(Me.dogum_tarihi, "mmdd"))

Me.sinav_puani = "0"

If Me.cinsiyeti = "Bay" Then

    If GYas > "15" And GYas < "21" Then

        Me.sinav_puani = Dlookup ("[16-20Yas]", "SinavErkek", "[SinavSayisi]= " & Me.sinav_tekrar_sayisi)
   
    ElseIf GYas > "24" Then

        Me.sinav_puani = Dlookup ("[24tenBuyuk]", "SinavErkek", "[SinavSayisi]= " & Me.sinav_tekrar_sayisi)
   
    End If

End if

Üstteki kod, 09.01.2000 doğumlu öğrenciyi 20, 11.01.2000 doğumlu öğrenciyi 19 yaşında hesaplar. 

(10/01/2020, 08:08)accessman yazdı: belki de sıkıntı 20-24 yaş arasındaki grubu görmezden geldiğiniz içindir


Üstteki mesajı da gözardı etmeyin.
10/01/2020, 14:11

sancaktar

Çok teşekkür ediyorum değerli hocalarım, hemen kontrol edip geri dönüş sağlayacağım.
10/01/2020, 15:28

berduş

sayın sancaktar diğer alanlarında hesaplama yöntemi aynı mı olacak daha tablolarını eklemediğiniz mekik_puanı gibi alanlar?
eğer öyle ise temel bir şablon oluşturabiliriz
aşağıdaki çalışmada yapılacak ufak bir kod değişimiyle genişletilip diğerleri içinde kullanılabilir
[attachment=31152]
1 2