Skip to main content

AccessTr.neT


Mükerrer Kayıtı Engellemek

Mükerrer Kayıtı Engellemek

Çözüldü #1
iyi aksamlar arkadaşlar,
ekteki çalışmamdaki formumda mükerrer kayıtları engellemek istiyorum. forumda benzer konular üzerindeki kodları uygulamaya çalıştım ama devamlı sorun verdi. öğrencinin bilgilerini süzerek mükerrer kayıtların öğrenci bilgileri üzerinden kontrol edilmesini istiyorum. veli bilgileri aynı olabilir lakin öğrenci bilgileri olamaz şeklinde kayıt yaptırmak istiyorum.
.rar 11.rar (Dosya Boyutu: 133,46 KB | İndirme Sayısı: 22)
Herkesin aynası kendisidir.
Cevapla
#2
Merhaba,
tabloda Ogrencinin_Adi_Soyadi alanı birincil anahtar olmaz, birincil anahtar S/N alanı olmalıdır. 

Kaydet butonunun tıklandığında olayındaki kodu aşağıdaki ile değiştirerek deneyiniz.

Dim Key_Adet As Integer
Dim kriter
kriter = Me.Ogrencinin_Adi_Soyadi & Me.Ogrencinin_Okul_Numarasi & Me.Ogrencinin_Cep_Telefonu_Numarasi
Key_Adet = DCount("*", "Ana_Tablo", "Ogrencinin_Adi_Soyadi&Ogrencinin_Okul_Numarasi&Ogrencinin_Cep_Telefonu_Numarasi='" & kriter & "'")
If Key_Adet > 0 Then
   MsgBox "Dikkat..! Bu öğrenci bilgilerine sahip bir kayıt zaten var olduğundan tekrar kaydedemezsiniz."
   Me.Undo
   Exit Sub
End If

'*******KAYDET**********
DoCmd.RunCommand acCmdSaveRecord
'******YENI KAYIT********
DoCmd.GoToRecord , , acNewRec

Ayrıca, aynı veriyi girdikten sonra uyarı verdirip Me.Undo kodu ile eski haline getirirseniz aynı verileri tekrar yazmak zorunda kalırsınız.
Me.Undo yerine

Ogrencinin_Adi_Soyadi.setfocus


 kodlarını ekleyerek uyarı sonrası düzeltme yapılabilmesi için öğrenci adı soyadı alanına odaklanılmasını sağlayabilirsiniz.
Cevapla
#3
(03/01/2018, 14:33)ozanakkaya yazdı: Merhaba,
tabloda Ogrencinin_Adi_Soyadi alanı birincil anahtar olmaz, birincil anahtar S/N alanı olmalıdır. 

Kaydet butonunun tıklandığında olayındaki kodu aşağıdaki ile değiştirerek deneyiniz.

Dim Key_Adet As Integer
Dim kriter
kriter = Me.Ogrencinin_Adi_Soyadi & Me.Ogrencinin_Okul_Numarasi & Me.Ogrencinin_Cep_Telefonu_Numarasi
Key_Adet = DCount("*", "Ana_Tablo", "Ogrencinin_Adi_Soyadi&Ogrencinin_Okul_Numarasi&Ogrencinin_Cep_Telefonu_Numarasi='" & kriter & "'")
If Key_Adet > 0 Then
   MsgBox "Dikkat..! Bu öğrenci bilgilerine sahip bir kayıt zaten var olduğundan tekrar kaydedemezsiniz."
   Me.Undo
   Exit Sub
End If

'*******KAYDET**********
DoCmd.RunCommand acCmdSaveRecord
'******YENI KAYIT********
DoCmd.GoToRecord , , acNewRec

Ayrıca, aynı veriyi girdikten sonra uyarı verdirip Me.Undo kodu ile eski haline getirirseniz aynı verileri tekrar yazmak zorunda kalırsınız.
Me.Undo yerine

Ogrencinin_Adi_Soyadi.setfocus


 kodlarını ekleyerek uyarı sonrası düzeltme yapılabilmesi için öğrenci adı soyadı alanına odaklanılmasını sağlayabilirsiniz.


Sayın Ozan,
teşekkür ederim kodunuz çalışıyor ve mükerrer kayıt olarak uyarıyı veriyor. sonrasında sizin de dediğiniz gibi formu boşaltıyor. bunun içinde dediginiz kodu me.undo yerine koydum bu seferde VBA'da hata veriyor kabul etmiyor.
Herkesin aynası kendisidir.
Cevapla
#4
Sayın Ozan olay çözülmüştür. programsal hatadan kaynaklanıyor du. sizin me.undo yerine vermiş olduğunuz kod çalışıyor, ilginize teşekkürler.
Herkesin aynası kendisidir.
Cevapla

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

Yorum yapmak için üye olmanız gerekiyor

ya da