Skip to main content

AccessTr.neT


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

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

Çözüldü #1
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..?
.rar PUANTAJ_ 2021.rar (Dosya Boyutu: 340,16 KB | İndirme Sayısı: 6)
Dünya düşünenler için bir komedi, Hissedenler için bir trajedidir ***
Hugh WALPOLE
Cevapla
#2
aşağıdaki bağlantıda yer alan konuda sorun çözülmüştü yanılmıyorsam
https://accesstr.net/konu-calisilan-gun-...kleme.html
Cevapla
#3
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
Dünya düşünenler için bir komedi, Hissedenler için bir trajedidir ***
Hugh WALPOLE
Son Düzenleme: 13/06/2021, 08:41, Düzenleyen: karaayhan.
Cevapla
#4
ayrıntılı bir incelemede bulunmadım sadece yazdığınız kod üzerinden düzenleme yaptım
dilerim işinize yarar
Visual Basic Code
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
Cevapla
#5
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
Cevapla
#6
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
Dünya düşünenler için bir komedi, Hissedenler için bir trajedidir ***
Hugh WALPOLE
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da
Task