Toplam Değer Belli Bir Sayıdan Fazla İse

1 2
12/06/2021, 19:43

karaayhan

puantaj kısmında şöyle bir sorunumuz oldu;

kodların bulunduğu sayfada
Private Sub top()
Dim i As Integer
Dim TOPLAM As Integer
For i = 1 To 31
       
        strnum1 = Format(i, "00")
If Me("txt" & strnum1).Enabled = True And Me("txt" & strnum1) <> 0 Then
TOPLAM = TOPLAM + Val(Nz(Me("txt" & strnum1), 0))
End If
Next i
Me.ETOP = TOPLAM / 10
ETOP1
End Sub

burada ETOP değeri en fazla 30 gün olmalı bu değeri aşan durumlarda
fazla çalışmaya(MESAI) yazılmalı ?
bunun için nasıl bir değişiklik yapmalıyız..?
12/06/2021, 23:14

berduş

aşağıdaki bağlantıda yer alan konuda sorun çözülmüştü yanılmıyorsam
https://accesstr.net/konu-calisilan-gun-...kleme.html
13/06/2021, 01:29

karaayhan

sayın berduş burada sadece etop(günlerde çalışılan saat toplamı) 30 günden fazla olursa
fazla olan saatler her ne olursa olsun mesai ye yazmasını istiyoruz
diyelim ki ay içerisinde 350 saat çalışmış olsun
30 gün ve 50 saat yazmalı
programda ise 35 gün olarak yaziyor
biz en fazla 30 gün ile sinirlamak fazla olursa da mesai olarak yazsin istiyoruz
13/06/2021, 09:37

berduş

ayrıntılı bir incelemede bulunmadım sadece yazdığınız kod üzerinden düzenleme yaptım
dilerim işinize yarar
Private Sub top()
Dim i As Integer
Dim TOPLAM As Integer
For i = 1 To 31
       
        strnum1 = Format(i, "00")
If Me("txt" & strnum1).Enabled = True And Me("txt" & strnum1) <> 0 Then
TOPLAM = TOPLAM + Val(Nz(Me("txt" & strnum1), 0))
End If
Next i
ETOP1
'hy_____________________________düzenleme
If TOPLAM > 300 Then
    Me.ETOP = 30
    Me.MESAI = TOPLAM - 300
Else
    Me.ETOP = TOPLAM / 10
End If
'hy_____________________________düzenleme bitti

End Sub
13/06/2021, 10:30

berduş

ama şunu belirteyim daha önceki konunuzda da belirtmiştim kodlamanızın mantığı hatalı, farklı yordamlar bir birine girmiş ve bir kaç defa çağrılıyor, ve bazen bir prosedürün yaptığı değişikliği diğeri sıfırlıyor.
önerim en azından bu formu sıfırdan tasarlamanız, kafanızda neyin ne olduğunu kesinleştirdikten sonra ancak tam olarak yardımcı olabiliriz
mesela yukardaki kod ile istediğiniz sonucu alabilmeniz gerek normalde ama SaatTpl fonksiyonu işi bozuyor ve gün sayısını daha önceki konunuzda belirttiğiniz gibi her 10 saati 1 gün yapacak şekilde değiştiriyor o nedenle de yukardaki koddaki düzenleme anlamsızlaşabiliyor çünkü metin değiştiği için txt...AfterUpdate olayı ile otomatik olarak Form_Current yordamı çağrılıyor ve bu yordam da SaatTpl fonksiyonunu tetiklediği için tekrar "SET [ETOP]=fix([ETOPSAAT]/10), [MESAI]=[ETOPSAAT]-[ETOP]*10 " sorgusu çalışıp [ETOP]=fix([ETOPSAAT]/10 oluyor. dolayısıyla TOP prosedürünü değiştirmek ETOP sonucunu değiştirememiş oluyor
13/06/2021, 13:06

karaayhan

sayın berduş haklısınız sanırım
zira tam performanslı olarak çalışmıyor denedim..
mantık hatalarını giderip tekrar deneyeceğim
çok teşekkür ederim.
sonucu yazarım bu konu altında
1 2