Skip to main content

AccessTr.neT


Fonksiyonu Sorgudaki Her Kayıt İçin Ayrı Çalıştırma

Yunus Bozkurt
Yunus Bozkurt
3
395

Fonksiyonu Sorgudaki Her Kayıt İçin Ayrı Çalıştırma

Çözüldü #1
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?
.zip gelirvergisihesapla.zip (Dosya Boyutu: 80,04 KB | İndirme Sayısı: 6)
  • En tehlikeli kelime ama’dır. Önceden söylenen her söylemi veya kelimeyi öldürür! Mesela, seni seviyorum ama gibi…
Cevapla
#2
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;
Cevapla
Its My Birthday! #3
+rep
Çok teşekkür ederim. harikasınız. bu konuyu da öğrenmiş oldum hem.
  • En tehlikeli kelime ama’dır. Önceden söylenen her söylemi veya kelimeyi öldürür! Mesela, seni seviyorum ama gibi…
Cevapla
#4
Rica ederim
İyi çalışmalar)
Cevapla

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

Yorum yapmak için üye olmanız gerekiyor

ya da
Task