• FORUMU MOBİL UYGULAMADAN TAKİP EDİN

    Forumu isteyen üyelerimiz Tapatalk (Harici bir hizmet) üzerinden mobil uygulamadan takip edebilirler.
    iOS için : https://itunes.apple.com/app/id307880732?mt=8
    Android için : https://play.google.com/store/apps/details?id=com.quoord.tapatalkpro.activity
    adreslerinden indirebilirsiniz.

    Bir iki haftaya da foruma özel kendi uygulamamız yayında olacak.
ALTIN ÜYELİK Hakkında Bilgi
-----------------------

Soru Access veritabanına kayıtta mükerrer kayıt engelleme?

Katılım
11 Ocak 2009
Mesajlar
651
Beğeniler
3
Excel Vers. ve Dili
2003
#1
Merhaba arkadaşlar.
Aşağıdaki kod bloğu ile REHBER isimli veritabanına kayıt ekliyorum. İstiyorum ki yeni kayıt yaparken T.C Kimlik numarası ile mükerrer kayıt kontrolü yapılsın. Aynı kayıttan mevcut ise yeni kayıt yapılmasın.
Zamanı müsait olan arkadaşların ilgilenmesi ricasıyla.

Kod:
Private Sub CommandButton1_Click() 'EKLE

If txtAdi.Text = "" Then
txtAdi.SetFocus
MsgBox ("Lütfen Adını Soyad Bilgisi Girin..."), vbInformation, "Süleyman SAVAŞ"
Exit Sub
End If


Set baglan = CreateObject("adodb.connection")
Set rs = CreateObject("adodb.recordset")
Call baglanti

  rs.Open "select * from [REHBER] where [KIMLIK] = " & yeniid, baglan, 1, 3
  If rs.RecordCount = 0 Then
    rs.AddNew

 rs("KIMLIK") = yeniid.Value
 rs("ADI_SOYADI") = txtAdi.Value
 rs("TC_KIMLIK") = txtTCKimlik.Value
 rs("SICIL") = txtSicil.Value
 rs("IL") = cmbIL.Value
 rs("ILCE") = cmbILCE.Value
 
   rs.Update
  
    MsgBox txtAdi & " adlı kayıt başarı ile tamamlandı.", , "Süleyman SAVAŞ"
  End If
  rs.Close
  Set kayit = Nothing
  listeye_al
  temizle
End Sub
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
6,690
Beğeniler
311
Excel Vers. ve Dili
32 Bit 2010 - İngilizce
#2
rs.RecordCount = 0 şartı sağlanıyorsa, veri tabanının KIMLIK alanında aynı kayıttan yok demektir.

rs.RecordCount > 0 şartı sağlanıyorsa, var demektir.

Siz de buna göre IF bloğunu ayarlarsanız, istediğiniz olur ....


Kod:
if rs.RecordCount = 0 then
   kayıt ekle
else
   uyarı ver
   exit sub
end if
gibi .....

.
 
Katılım
12 Aralık 2015
Mesajlar
655
Beğeniler
19
Excel Vers. ve Dili
Ofis 2007
#3
Kod:
rs.Open "select * from [REHBER] where [KIMLIK] = " & yeniid, baglan, 1, 3
yukardaki satırı aşağıdaki gibi değiştirerek deneyin.
Kod:
rs.Open "select * from [REHBER] where [KIMLIK] = " & yeniid & "and [TC_KİMLİK] = " & txtTCKimlik  , baglan, 1, 3
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
6,690
Beğeniler
311
Excel Vers. ve Dili
32 Bit 2010 - İngilizce
#4
Haaa..... ben KIMLIK ile TC Kimlik No yazılıyor sanmıştım..... neyse Ali Cimri bey durumu düzeltti.

Bence değişken isimlerini kod yazarken, okurken size mantıklı şeyler çağrıştıracak birşeyler bulun.
.
 
Katılım
12 Aralık 2015
Mesajlar
655
Beğeniler
19
Excel Vers. ve Dili
Ofis 2007
#5
Merak ettim TCKİMLİK ve SICIL gibi iki tane benzersiz olması gereken alan varken, KIMLIK alanına niye ihtiyaç duydunuz.
 

Erdem_34

Destek Ekibi
Destek Ekibi
Katılım
4 Mayıs 2007
Mesajlar
2,950
Beğeniler
42
Excel Vers. ve Dili
OFİS 2013 TÜRKÇE-İNG. 64 BİT
#6
Merhaba,

Access'te veri tabanını oluştururken TC alanını benzersiz olarak işaretlerseniz kod yazmanıza gerek kalmadan istediğiniz olabilir.
Test etmedim ama olacağını düşünüyorum.
 

Erdem_34

Destek Ekibi
Destek Ekibi
Katılım
4 Mayıs 2007
Mesajlar
2,950
Beğeniler
42
Excel Vers. ve Dili
OFİS 2013 TÜRKÇE-İNG. 64 BİT
#7
Test ettim kayıt atmaya izin vermiyor.
 
Katılım
11 Ocak 2009
Mesajlar
651
Beğeniler
3
Excel Vers. ve Dili
2003
#8
Kod:
rs.Open "select * from [REHBER] where [KIMLIK] = " & yeniid, baglan, 1, 3
yukardaki satırı aşağıdaki gibi değiştirerek deneyin.
Kod:
rs.Open "select * from [REHBER] where [KIMLIK] = " & yeniid & "and [TC_KİMLİK] = " & txtTCKimlik  , baglan, 1, 3
İlgiye teşekkür ederim.
Aşağıdaki hatayı verdi.
1.PNG 2.PNG
 
Katılım
12 Aralık 2015
Mesajlar
655
Beğeniler
19
Excel Vers. ve Dili
Ofis 2007
#13
SQL metnini deneyemedim ama genel mantığı böyle olması gerekiyor.
Bir alanı Birincil Anahtar ayarlasanız dahi kendi uyarı mesajı karışık gelebilir.
 
Katılım
12 Aralık 2015
Mesajlar
655
Beğeniler
19
Excel Vers. ve Dili
Ofis 2007
#14
Aşağıdaki gibi deneyin. Sadece TC_KIMLIK alanını test ediyor.
Kod:
Private Sub CommandButton1_Click() 'EKLE

If txtAdi.Text = "" Then
txtAdi.SetFocus
MsgBox ("Lütfen Adını Soyad Bilgisi Girin..."), vbInformation, "Süleyman SAVAŞ"
Exit Sub
End If


Set baglan = CreateObject("adodb.connection")
Set rs = CreateObject("adodb.recordset")
Call baglanti

  rs.Open "select * from [REHBER] where [TC_KIMLIK] = " & txtTCKimlik, baglan, 1, 3
  If rs.RecordCount = 0 Then
    rs.AddNew

rs("KIMLIK") = yeniid.Value
rs("ADI_SOYADI") = txtAdi.Value
rs("TC_KIMLIK") = txtTCKimlik.Value
rs("SICIL") = txtSicil.Value
rs("IL") = cmbIL.Value
rs("ILCE") = cmbILCE.Value

   rs.Update

    MsgBox txtAdi & " adlı kayıt başarı ile tamamlandı.", , "Süleyman SAVAŞ"
    else
    Msgbox "Mükerrer Kayıt yapamazsınız"
  End If
  rs.Close
  Set kayit = Nothing
  listeye_al
  temizle
End Sub
 
Katılım
11 Ocak 2009
Mesajlar
651
Beğeniler
3
Excel Vers. ve Dili
2003
#15
Aşağıdaki gibi deneyin. Sadece TC_KIMLIK alanını test ediyor.
Kod:
Private Sub CommandButton1_Click() 'EKLE

If txtAdi.Text = "" Then
txtAdi.SetFocus
MsgBox ("Lütfen Adını Soyad Bilgisi Girin..."), vbInformation, "Süleyman SAVAŞ"
Exit Sub
End If


Set baglan = CreateObject("adodb.connection")
Set rs = CreateObject("adodb.recordset")
Call baglanti

  rs.Open "select * from [REHBER] where [TC_KIMLIK] = " & txtTCKimlik, baglan, 1, 3
  If rs.RecordCount = 0 Then
    rs.AddNew

rs("KIMLIK") = yeniid.Value
rs("ADI_SOYADI") = txtAdi.Value
rs("TC_KIMLIK") = txtTCKimlik.Value
rs("SICIL") = txtSicil.Value
rs("IL") = cmbIL.Value
rs("ILCE") = cmbILCE.Value

   rs.Update

    MsgBox txtAdi & " adlı kayıt başarı ile tamamlandı.", , "Süleyman SAVAŞ"
    else
    Msgbox "Mükerrer Kayıt yapamazsınız"
  End If
  rs.Close
  Set kayit = Nothing
  listeye_al
  temizle
End Sub
Ölçüt ifadesinde veri türü uyuşmazlığı hatası veriyor.
4.PNG
5.PNG
 

Ekli dosyalar

Erdem_34

Destek Ekibi
Destek Ekibi
Katılım
4 Mayıs 2007
Mesajlar
2,950
Beğeniler
42
Excel Vers. ve Dili
OFİS 2013 TÜRKÇE-İNG. 64 BİT
#16
Hata mesajı döndüğünde excel'in "on error goto" özelliğini inceleyin.
 
Katılım
12 Aralık 2015
Mesajlar
655
Beğeniler
19
Excel Vers. ve Dili
Ofis 2007
#17
Altın üye değilim dosyanızı bir dosya paylaşım sitesine yüklerseniz elimden geldiğince yardımcı olayım.
 

Erdem_34

Destek Ekibi
Destek Ekibi
Katılım
4 Mayıs 2007
Mesajlar
2,950
Beğeniler
42
Excel Vers. ve Dili
OFİS 2013 TÜRKÇE-İNG. 64 BİT
#18
Merhaba,

Sorguyu aşağıdaki gibi deneyin. Tc alanını access'te metin olarak oluşturduğunuz için hata veriyordu.

Kod:
 rs.Open "select * from [REHBER] where [TC_KIMLIK] = '" & txtTCKimlik & "'", baglan, 1, 3
Aşağıdaki satırı'da koddan kaldırın. Ona gerek yok , otomatik sayı alanı olduğu için.

Kod:
rs("KIMLIK") = yeniid.Value
 
Son düzenleme:
Üst