sayın berduş; ödediği fazla para kaydedilecek ve yine T_GELIR tablosuna kayıt edilecek. Fazla para takibi ise F_DAIRE_INCELEME formundan yapılacak.
Bunlar zaten var ve hazır.
sadece 3. kod : fazla ödeme yaptınız uyarısı, zaten eksik ödeme ve tam ödeme yapınca tabloya kayıt yapıp listeden kalkıyor. istemiş olduğum kodu bir çalıştırabilsem onu da uyarlayabilirim diye düşünüyorum.
3 durumlu if için aşağıdaki mantık geçerli
kendi isteğinize göre diğer kodları eklersiniz
If Forms![F_TAHSILAT]![KALAN] = 0 Then
MsgBox ("Tam")
'Tam ödeme yapıldıysa yazılacak kodlar
ElseIf Forms![F_TAHSILAT]![KALAN].Value < 0 Then
MsgBox ("Eksik")
'Eksik ödeme yapıldıysa yazılacak kodlar
Else
MsgBox ("Fazla")
'Fazla ödeme yapıldıysa yazılacak kodlar
End If
Public Function BosKontrol_3(frm As Form) 'TAHSILAT FORMUNDAKİ ÖDEMEYİ GERÇEKLEŞTİR KODU
Forms(formadi).TimerInterval = 0
formadi = frm.Name
BosAra
'Boş alan varsa detaylı olarak mesaja veriyor..
If trz > 0 Then
a = Right(a, Len(a) - 2)
MsgBox "Boş bırakmamanız gereken " & trz & " alan var ..:" _
& Chr(13) & Chr(13) & "Bu Alanları Doldurun!", vbCritical, "Site Gelir / Gider Takip Programı"
'Boş olan ilk alanın ismini bulur ve odaklanıyor..
If trz = 1 Then
b = a
Else
b = Left(a, InStr(1, a, ",") - 1)
End If
Forms(formadi).Controls(b).SetFocus
Forms(formadi).TimerInterval = 500
'Forms(formadi).kontrolBtn.Caption = trz & " Boş Alan Var."
Else
Forms(formadi).TimerInterval = 0
SekmeAyar
'İSTENEN İŞLEM KODU BURAYA YAZILACAK
If Forms![F_TAHSILAT]![KALAN] = 0 Then
MsgBox ("Tam")
'Tam ödeme yapıldıysa yazılacak kodlar
ElseIf Forms![F_TAHSILAT]![KALAN].Value < 0 Then
MsgBox ("Eksik")
'Eksik ödeme yapıldıysa yazılacak kodlar
Else
MsgBox ("Fazla")
'Fazla ödeme yapıldıysa yazılacak kodlar
End If
DoCmd.Close acForm, "F_TAHSILAT"
Forms!F_ALACAK.Refresh
Forms!F_ALACAK.Metin86 = Nz(DSum("TUTAR", "S_ALACAK"), 0)
Forms!F_ALACAK.sayac.Caption = DCount("TUTAR", "S_ALACAK")
End If
End Function
İlginiz için teşekkür ederim en kısa sürede deneyip sonucu bildireceğim.
iyi günler.
sayın berduş, çözümünüzü bir süreliğine şehir dışına çıktığımdan dolayı deneyememiştim. Biraz önce denedim maalesef tam ödeme yapınca kodlar çalışıyor, eksik veya fazla ödeme yapınca kodlar çalışmıyor. Yazdığım kod aşağıdaki gibidir.
Yapmak istediğim;
Eksik veya fazla ödeme yapınca uyarı mesajı işleme devam etmek isteyip istemediğimizi sorsun, evet seçtiğimizde ise tablodaki [ODENDI]=TRUE olsun. Hayırı seçtiğimizde ise F_TAHSILAT formuna düzeltme işlemi için geri dönsün.
Kod:
KALAN = ODENEN - TOPLAM
If Forms![F_TAHSILAT]![KALAN] = 0 Then
If MsgBox("Borcun Tamamını Ödediniz. Ödeme Kayıtlara Aktarıldı..", vbInformation, "Site Gelir / Gider Takip Programı") Then
Forms![F_TAHSILAT]![ODENDI] = True
DoCmd.Close acForm, "F_TAHSILAT"
Forms!F_ALACAK.Refresh
Forms!F_ALACAK.Metin86 = Nz(DSum("TUTAR", "S_ALACAK"), 0)
Forms!F_ALACAK.sayac.Caption = DCount("TUTAR", "S_ALACAK")
ElseIf Forms![F_TAHSILAT]![KALAN] < 0 Then
If MsgBox(Forms![F_TAHSILAT]![KALAN] & " TL Fazla Ödeme Yaptiniz. Yine de Devam etmek istiyor musunuz?", vbYesNo, "Prg") = 6 Then Forms![F_TAHSILAT]![ODENDI] = True
DoCmd.Close acForm, "F_TAHSILAT"
Forms!F_ALACAK.Refresh
Forms!F_ALACAK.Metin86 = Nz(DSum("TUTAR", "S_ALACAK"), 0)
Forms!F_ALACAK.sayac.Caption = DCount("TUTAR", "S_ALACAK")
Else
'Forms![F_TAHSILAT]![KALAN].Value > 0 Then
If MsgBox(Forms![F_TAHSILAT]![KALAN] & " TL Eksik Ödeme Yaptiniz. Yine de Devam etmek istiyor musunuz?", vbYesNo, "Prg") = 6 Then Forms![F_TAHSILAT]![ODENDI] = True
DoCmd.SetWarnings 0 '/////////////////////
DoCmd.OpenQuery "S_KALANBAKIYE" '///////////////////////
DoCmd.SetWarnings -1 '//////////////////
Forms![F_TAHSILAT]![ODENDI] = True
MsgBox "Kalan Bakiye Aktarıldı.", vbOKOnly, "Site Gelir / Gider Takip Programı" '////////////
DoCmd.Close acForm, "F_TAHSILAT"
Forms!F_ALACAK.Refresh
Forms!F_ALACAK.Metin86 = Nz(DSum("TUTAR", "S_ALACAK"), 0)
Forms!F_ALACAK.sayac.Caption = DCount("TUTAR", "S_ALACAK")
End If
Maalesef olmadı, iki seçenekli olunca çalışıyor, ancak üçüncü seçenek devreye girince kod bir türlü istediğim gibi çalışmıyor. Fazla ödemek isteyenlere fazla ödeme kabul etmiyoruz demekten başka çare kalmadı.