AccessTr.neT

Tam Versiyon: Fonksiyonu Sorgudaki Her Kayıt İçin Ayrı Çalıştırma
Şu anda arşiv modunu görüntülemektesiniz. Tam versiyonu görüntülemek için buraya tıklayınız.
Merhaba örnekteki hesapla sorgusunu çalıştırdığımda sadece ilk kayıttan değer alıp hesaplamaları ona göre yapıyor. her kayıt için degerleri değiştirip yeniden hesaplama yaptırabilir miyim?
veriler
AylıkMatrah = Dlookup ("[GVMatrahi]", "hesapla")
BirikimliMatrah = Dlookup ("[Kumulatif]", "s_kumulatif")
bu 2 değer üzerinden alınıyor ama siz bu alanlara kriter girmediğiniz için doğrudan ilgili sorgu/tablodaki ilk veriyi alıyorlar hata bundan kaynaklanıyor gibi
VERGI fonksiyonunu aşağıdaki gibi
Function VERGI(ByVal xKimlik As Long, ByVal AylıkMatrah As Currency) As Currency
Dim Barem1, Barem2, Barem3, Barem4, BirikimliMatrah As Currency
Barem1 = Dlookup ("[Barem1]", "vdilimleri")
Barem2 = Dlookup ("[Barem2]", "vdilimleri")
Barem3 = Dlookup ("[Barem3]", "vdilimleri")
Barem4 = Dlookup ("[Barem4]", "vdilimleri")

BirikimliMatrah = Dlookup ("[Kumulatif]", "s_kumulatif", "pkimlik=" & xKimlik)
If BirikimliMatrah <= Barem1 Then
VERGI = AylıkMatrah * 0.15
ElseIf BirikimliMatrah - Barem1 <= AylıkMatrah Then
VERGI = (BirikimliMatrah - Barem1) * 0.2 + (AylıkMatrah - (BirikimliMatrah - Barem1)) * 0.15
ElseIf BirikimliMatrah <= Barem2 Then
VERGI = AylıkMatrah * 0.2
ElseIf BirikimliMatrah - Barem2 <= AylıkMatrah Then
VERGI = (BirikimliMatrah - Barem2) * 0.25 + (AylıkMatrah - (BirikimliMatrah - Barem2)) * 0.2
ElseIf BirikimliMatrah <= Barem3 Then
VERGI = AylıkMatrah * 0.27
ElseIf BirikimliMatrah - Barem3 <= AylıkMatrah Then
VERGI = (BirikimliMatrah - Barem3) * 0.3 + (AylıkMatrah - (BirikimliMatrah - Barem3)) * 0.27
ElseIf BirikimliMatrah <= Barem4 Then
VERGI = AylıkMatrah * 0.35
ElseIf BirikimliMatrah - Barem4 <= AylıkMatrah Then
VERGI = (BirikimliMatrah - Barem4) * 0.35 + (AylıkMatrah - (BirikimliMatrah - Barem4)) * 0.35
ElseIf BirikimliMatrah > Barem4 Then
VERGI = AylıkMatrah * 0.35
End If
End Function
hesapla sorgusunu da ağaıdaki gibi düzenleyip dener misiniz?
SELECT puantajlar.pkimlik, puantajlar.unvani, puantajlar.punvani, puantajlar.sozlesmeucreti, puantajlar.GVMatrahi, puantajlar.Donemi, Dlookup ("[Kumulatif] ","s_kumulatif","[pkimlik] =" & [pkimlik]) AS KumulatifGV, VERGI([puantajlar].[pkimlik],[puantajlar].[GVMatrahi]) AS GelVer
FROM puantajlar;
+rep
Çok teşekkür ederim. harikasınız. bu konuyu da öğrenmiş oldum hem.
Rica ederim
İyi çalışmalar)