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;