Merhaba,
Forumda yeniyim o yüzden hatam olursa affola.
Çalışmamı ekte gönderiyorum. Benim çalışmamla ilgili iki problemim var;
-Kaydet butonuna tıkladığım zaman 'Kayıtlar' formunda açılan kutular boş ise hata versin diye kod yazdım. Ancak hata vermeden direk kaydediyor. Forumda bununla ilgili bir çalışma bulamadım.
-Kayıt işlemi tamamlanmadan başka bir yere tıklarsam kaydı eksik haliyle kaydediyor. Ben sadece kaydet butonu ile kayıt yapılsın istiyorum. Bu konuda bazı çalışmalar var ancak ben kendime uyarlayabileceğim bir çalışma bulamadım.
Şimdiden teşekkürler.
Merhaba, kod tasarımınız hatalı. Yapı olarak
Private Sub Kaydet_Click()
If IsNull(Kayit_ID) Then
MsgBox "Kayıt No Boş Kalamaz", vbInformation, "Kayıt No Boş!"
Kayit_ID.SetFocus
Exit Sub
End If
If IsNull(DepoGirisTarihi) Then
MsgBox "Tarih Boş Kalamaz", vbInformation, "Tarih Boş!"
DepoGirisTarihi.SetFocus
Exit Sub
End If
If IsNull(Me.UrunCinsi) Or Me.UrunCinsi = "" Then
MsgBox "Ürün Cinsi Boş Kalamaz", vbInformation, "Ürün Cinsi Boş!"
UrunCinsi.SetFocus
Exit Sub
End If
If Me.Ebat = "" Then
MsgBox "Ebat Boş Kalamaz", vbInformation, "Ebat Cinsi Boş!"
Ebat.SetFocus
Exit Sub
End If
If DepoGirisTarihi < Date Then
MsgBox " Eski bir tarih için kayıt girilemez!", vbInformation, "Geçmiş Tarih!"
DepoGirisTarihi.SetFocus
Exit Sub
End If
If DepoCikisTarihi < DepoGirisTarihi Then
MsgBox "Depo Çıkış Tarihi Depo Giriş Tarihinden Önce Olamaz", vbInformation, "Hatalı Tarih!"
DepoCikisTarihi.SetFocus
Exit Sub
End If
If MsgBox("Değişiklikler kaydedilsin mi?", vbCritical + vbYesNo + vbDefaultButton1, "UYARI!") = vbYes Then
DoCmd.GoToRecord , , acNewRec
Me.KayitListesi.Requery
Else
Me.Undo
End If
End Sub
Şeklinde olmalı ki siz kaydedilsin mi sorusuna cevap vermeden önce alanların denetimini yapsın.
Kayıt sorunu ile ilgili olarak,
Formun güncelleştirme sonrasında olayına
If Me.Dirty Then
If MsgBox("Kayıt verisinde değişiklik yapıldı.Kaydetmek ister misiniz?", vbYesNo + vbQuestion, "Değişikliği KAYDET") = vbNo Then
Me.Undo
End If
End If
kodu ekleyerek deneyiniz.
(02/05/2018, 14:07)ozanakkaya yazdı: Merhaba, kod tasarımınız hatalı. Yapı olarak
Private Sub Kaydet_Click()
If IsNull(Kayit_ID) Then
MsgBox "Kayıt No Boş Kalamaz", vbInformation, "Kayıt No Boş!"
Kayit_ID.SetFocus
Exit Sub
End If
If IsNull(DepoGirisTarihi) Then
MsgBox "Tarih Boş Kalamaz", vbInformation, "Tarih Boş!"
DepoGirisTarihi.SetFocus
Exit Sub
End If
If IsNull(Me.UrunCinsi) Or Me.UrunCinsi = "" Then
MsgBox "Ürün Cinsi Boş Kalamaz", vbInformation, "Ürün Cinsi Boş!"
UrunCinsi.SetFocus
Exit Sub
End If
If Me.Ebat = "" Then
MsgBox "Ebat Boş Kalamaz", vbInformation, "Ebat Cinsi Boş!"
Ebat.SetFocus
Exit Sub
End If
If DepoGirisTarihi < Date Then
MsgBox " Eski bir tarih için kayıt girilemez!", vbInformation, "Geçmiş Tarih!"
DepoGirisTarihi.SetFocus
Exit Sub
End If
If DepoCikisTarihi < DepoGirisTarihi Then
MsgBox "Depo Çıkış Tarihi Depo Giriş Tarihinden Önce Olamaz", vbInformation, "Hatalı Tarih!"
DepoCikisTarihi.SetFocus
Exit Sub
End If
If MsgBox("Değişiklikler kaydedilsin mi?", vbCritical + vbYesNo + vbDefaultButton1, "UYARI!") = vbYes Then
DoCmd.GoToRecord , , acNewRec
Me.KayitListesi.Requery
Else
Me.Undo
End If
End Sub
Şeklinde olmalı ki siz kaydedilsin mi sorusuna cevap vermeden önce alanların denetimini yapsın.
Kayıt sorunu ile ilgili olarak,
Formun güncelleştirme sonrasında olayına
If Me.Dirty Then
If MsgBox("Kayıt verisinde değişiklik yapıldı.Kaydetmek ister misiniz?", vbYesNo + vbQuestion, "Değişikliği KAYDET") = vbNo Then
Me.Undo
End If
End If
kodu ekleyerek deneyiniz.
Öncelikle teşekkür ederim ilk problemimi verdiğiniz düzenleme ile hallettim.
Ancak kaydetme konusunda hala sıkıntım var.
Örneğin; herhangi bir kayda girip değişiklik yaptıktan sonra; direk başka bir kayda tıkladığımda yapılan değişiklik kaydediliyor. Ben ne olursa olsun kayıttan çıkarken bana kayıt işlemini sorsun istiyorum.
Yardımcı olursanız çok sevinirim.
Merhaba, önceki mesajımda verdiğim kodu uygulamaya ekledim. Kayıt değiştirince uyarı veriyor.
Sorunlarım çözüldü.
Teşekkür Ederim.