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.
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: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.
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: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.
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