MS Access Veritabanları, VBA ve SQL Kullanımı

Microsoft Access'e dair herşey...

Veri Girişlerinde Mükerrer (Tekrarlayan) Kayıtları Önleme

PRATİK BİLGİLER

Mükerrer (Tekrarlayan) Kayıtların Önlenmesi

Bugünkü makalemizde bir çok MS Access kullanıcısının sorduğu bir konuya ışık tutmak istiyorum. 
Öncelikle mükerrer kaydı bir tabloda göstermek istiyorum.


mükerrer kayıtların önlenmesi


Tablolarımızı oluşturduk, buna bağlı formlarımızı oluşturduk, Şimdi bu formlara veri girişi yapacağız. Veritabanı mantığında şöyle bir kural vardır. Hiç bir zaman 2 veya daha fazla kayıt aynı olamaz. Her kaydın benzersiz olma özelliği olmalıdır. Şöyleki; Örnek tablo üzerinden gidelim. Bir tane personel bilgilerini barındıran bir tablomuz olsun,
Alanları ise aşağıdaki gibi olsun.
  • Adı
  • Soyadı
  • Doğum Yeri
  • Ünvanı
Yukarıdaki alanları doldurmaya başlıyoruz.
1.Kayıt:
  • Adı: Hasan
  • Soyadı: Kar
  • Doğum Yeri: İzmir
  • Ünvanı : Memur
2.Kayıt:
  • Adı: Hasan
  • Soyadı: Kar
  • Doğum Yeri: İzmir
  • Ünvanı : Memur
olsun. Dikkatinizi çeken bir şey oldu mu? Evet 2 kayıtta birbirinin aynısı, olamaz mı yani elbette olur.

Adı Soyadı Doğum Tarihi Ünvanı aynı olan kişi olabilir. Fakat gerçekte bu kişiler aynı mıdır? Tabii ki hayır. Peki biz o zaman bu iki vatandaşı birbirinden nasıl ayırdedeceğiz. Çok basit, Tabloya bir tane anahtar alan (Primary Key) ekleyerek. Primary Key ne demek, benzersiz alan demek, Şimdi örneğimize uygulayıp öyle bakalım.

1.Kayıt:
  • PersonelID: 1
  • Adı: Hasan
  • Soyadı: Kar
  • Doğum Yeri: İzmir
  • Ünvanı : Memur
2.Kayıt:
  • PersonelID: 2
  • Adı: Hasan
  • Soyadı: Kar
  • Doğum Yeri: İzmir
  • Ünvanı : Memur
Evet istediğimiz işte buydu. Şimdi yukarıda girmiş olduğumuz Adları Soyadları Doğum Yerleri ve Ünvanları aynı olan kişileri Ayırmış olduk. Hasan Kar ile ilgili işlem yapmak istediğimizde hangi Hasan Kar dediğimizde PersonelID'sinden bulacağız, 1 mi yoksa 2 mi
Şimdi gelelim konumuza Önce Mükerrer kayıt diye tanımladığımız bilginin hangi bölümü aynı olursa mükerrer olur? bu soruya cevap bulmamız gerekiyor. Şimdi yukarıdaki işlemi uyguladığımızda ortaya mükerrer bir kayıt çıkmayacaktır, Neden çünkü her kaydın benzersiz bir ID si bulunacaktır. Bundan sonraki alan veya alanlar için mükerrer kayıt kontrolü yapılabilir.
Örneğin Adı alanında tekrarlayan aynı isim girilirse kullanıcı uyarılsın.
Bunun için Adı Alanının (AfterUpdate)  Güncelleştirme Sonrasında Olayına aşağıdaki kodu yazalım.


Option Compare Database
Option Explicit

Sub Adı_AfterUpdate()

If DLookup("Adı","tbl_Personel","Adı = '" & Me.Adı & "') Then
Me.Undo
MsgBox "Adı Alanına girmiş olduğunuz " _
& Me.Adı & " Adlı isim daha önce girilmiş." _
& vbCr & vbCr & "Lütfen Farklı bir isim giriniz.", vbInformation _
, "Mükerrer Veri"
Me.Adı=""
Me.Adı.SetFocus
End If

End Sub

Yukarıdaki kod parçasında DLookup fonksiyonu ile Adı alanına girilen değeri tbl_Personel tablosundan kontrol ediyoruz. Eğer aynı isim tabloda var ise girilen değeri geri alıyoruz ve Msgbox mesaj kutusu ile uyarı veriyoruz, Eğer tabloda bulunamamış ise hiç bir işlem yaptırmıyoruz, veri girişine bir sonraki alandan devam ediyoruz.

Evet Arkadaşlar diğer alanlar içinde mantık aynıdır. Sadece kod içerisinde geçen Alan Adını kontrol etmek istediğiniz alanın adını yazmanız yeterlidir.
Dikkat etmeniz gereken bir diğer husus ise karşılaştırmak istediğiniz veri tipine göre DLookup söz diziminde değişiklik yapmanızdır.
Mesela karşılaştırmak istediğiniz alan sayısal ise,


If DLookup("Adı","tbl_Personel","Adı = " & Me.SayısalAlan ) Then

Eğer tarih alanını karşılaştırmak isterseniz,


If DLookup("Adı", "tbl_Personel", [DogumTarihi]= #" & _ DogumTarihi & "#") Then

komutlarını kullanabilirsiniz.

Şimdilik,
Hoşcakalın...



Yorum Gönder

0 Yorumlar