Rapor Tarihi İle Doğum Tarihini Kontrol Edip Uyarı Verdirmek.

1 2
28/08/2019, 16:45

hegu

Arkadaşlar ekte gönderdiğim örnekte yaptırmak istediğim sürücü raporu için müracaat eden kişinin doğum tarihi ile rapor tarihini kontrol etmesini ve eğer kişinin yaşı tam 18 ise "Bu gün rapor verilemez. Rapor alması için 18 yaşını bir gün geçmesi gereklidir." uyarısını vermesini ve kayıt yapmamasını sağlamak istiyorum. Bu konuda yardım istiyorum. Teşekkür ederim.

Örneğin : Bugün 28.08.2019 Kişinin Doğum tarihi 28.08.2001 ise uyarı verip kayıt yapmaması gerekli.
28/08/2019, 17:07

berduş

aşağıdaki kod işinize yarayabilir.
if DateDiff("d", DateAdd("yyyy", 18, TxtDogumTrh), Me.TxtKayitTrh)<1 then msgbox("Kaydedilemez")
önce DateAdd() fonksiyonu ile doğum tarihine 18 yıl ekleniyor
sonra DateDiff() fonksiyonu ile kayıt tarihinden çıkarılıp gün farkı hesaplanıyor gün farkı eğer 1'den küçükse uyarı veriyor
28/08/2019, 17:34

hegu

(28/08/2019, 17:07)berduş yazdı: aşağıdaki kod işinize yarayabilir.
Kod:
if DateDiff("d", DateAdd("yyyy", 18, TxtDogumTrh), Me.TxtKayitTrh)<1 then msgbox("Kaydedilemez")
önce DateAdd() fonksiyonu ile doğum tarihine 18 yıl ekleniyor
sonra DateDiff() fonksiyonu ile kayıt tarihinden çıkarılıp gün farkı hesaplanıyor gün farkı eğer 1'den küçükse uyarı veriyor
örnek üzerinde gösterebilirmisiniz. Teşekkür ederim. Ben beceremedim.
28/08/2019, 17:45

berduş

kaydetme butonuna ekleyebilirsiniz
çalışmanızda hangi formda olduğunu bilmediğimden -kayıt formundaki ekleme butonu makroya bağlıydı- sadece kodu yazdım hangi form hangi buton olacak belirtirseniz eklemeye çalışırım
28/08/2019, 17:50

hegu

(28/08/2019, 17:45)berduş yazdı: kaydetme butonuna ekleyebilirsiniz
çalışmanızda hangi formda olduğunu bilmediğimden -kayıt formundaki ekleme butonu makroya bağlıydı- sadece kodu yazdım hangi form hangi buton olacak belirtirseniz eklemeye çalışırım
Çalışmam KayitFormu da

Kaydet butonuna denedim. Yaşı sorun olmayanlarda bile aynı uyarıyı veriyor.
28/08/2019, 18:22

berduş

komut33'ün kodu
kendi denmelerimde sorun çıkmadı
yalnız doğum tarihini doğru formatta değiştirmeme rağmen uygun format değil uyarısı verdi
Dim Uygunluk As Long
Uygunluk = DateDiff("d", DateAdd("yyyy", 18, CDate(CLng(Me.Dota))), CDate(CLng(Me.Ra_Ta)))
If Uygunluk < 1 Then
    MsgBox ("Kaydedilemez : " & Uygunluk)
    Exit Sub
End If
If MsgBox("Sürücü Raporunu KAYDETMEK istiyor musunuz?", vbYesNo, "KAYDETME UYARISI") = vbYes Then
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
Else
Me.Undo
MsgBox ("Kaydetme işlemi iptal edilmiştir"), vbCritical, "KAYDETME İPTAL BİLGİLENDİRMESİ"
Exit Sub
End If

'Me.Requery
Me.Liste1.Requery
Me.Metin42.Requery
Me.kayitsa.Requery
Me.Metin69.Requery

eğer isterseniz "Komut33"ün "MouseMove" yada "Form_Current" olaylarına ekleyerek butonu aktif yada pasif de yapabilirsiniz, "Form_Current" olayında  tarihler değiştiğinde 2. bir kontrol kodu daha eklemek gerekebilir
"MouseMove" yada "Form_Current" olaylarına aşağıdaki kod eklenebilir
tekrar belirteyim "Form_Current" olayında, "Dota"  ve "Ra_Ta"  çıkıldığında olaylarına aşağıdaki kod tekrar yazılmalı
Dim Uygunluk As Long
If Me.NewRecord Then
    GoTo 10
    Me.Komut33.Enabled = True
End If
   
Uygunluk = CLng(Me.Ra_Ta) - CLng(DateAdd("yyyy", 18, Me.Dota))
If Uygunluk < 1 Then
    Me.Komut33.Enabled = False
Else
    Me.Komut33.Enabled = True
End If
10
1 2