Skip to main content

AccessTr.neT


Aynı Anda Aynı Kaydın Girişini (Mükerrer Kayıt) Engelleme

Aynı Anda Aynı Kaydın Girişini (Mükerrer Kayıt) Engelleme

Çözüldü #1
Merhaba,

Formumdaki "Klasor No" metin kutularına daha önce girilmiş bir kaydın numarası girildiğinde hata veriyor ama daha önce girilmemiş bir numarayı aynı anda farklı iki kutuya girilmesini engellemiyor. Yani farklı iki kutuya aynı anda "10" yazıp kayıt ekleyebiliyorum. 


Henüz kayıt oluşmadığından hata vermemesi normal olabilir. Aynı anda yazılmasını belki engelleyemeyiz ama aynı iki numaranın kayıt edilmesini engelleyebilir miyiz?
.rar Örnek.rar (Dosya Boyutu: 39,71 KB | İndirme Sayısı: 7)
Cevapla
#2
Öncelikle, lütfen örnek uygulamanızın adını "örnek" şeklinde eklemeyiniz, birden fazla konuya örnek adında uygulama ekleyince karışıyor.

Uygulamanızdaki kodları düzenledim, 

Konu başlığındaki soru ile ilgisi yok ama, "std_klasoru_tablosu" isimli tablodaki "klasor_no" alanının veri türünü sayı yaparsanız kodlamada düzeltme yapmalısınız, veri türü Metin olduğu için kodlarda ' (tek tırnak) eklendi.



VarMi = Nz(DLookup("[klasor_no]", "std_klasoru_tablosu", "[klasor_no]= '" & KlasorAdi & "'"), 0)

Veri türünü sayı yaparsanız kırmızı ile işaretlediğim tırnakları silmelisin, bu tırnak olayı docmd.runsql kodunun ilgili yerlerinde de var, onlarında düzeltilmesi gerekli, denetim için oluşturulan sorgu bu uygulamaya eklenmemiş, sorgudaki alan ilişkilendirmelerinin de düzeltilmesi gerekir.
.rar Allback_mukerrer2.rar (Dosya Boyutu: 46,51 KB | İndirme Sayısı: 23)
Cevapla
#3
Ozan Bey,

Örneği inceledim, "Kaydet" butonuna bastığımda "Invalid use of Null" hatası veriyor. 

Hata mesajını verdiği satırı kırmızı ile işaretledim.

Alıntı:Private Sub Komut7_Click()
DoCmd.SetWarnings False
For KontrolNo = 1 To 5
    Klasor2Adi = Controls("klasor" & (KontrolNo))
    KlasorAdi = Controls("klasoradi" & (KontrolNo))
If Not IsNull(Controls("klasor" & (KontrolNo))) And Not IsNull(Controls("klasoradi" & (KontrolNo))) And Controls("klasor" & (KontrolNo)) <> "" And Controls("klasoradi" & (KontrolNo)) <> "" Then
    DoCmd.RunSQL "INSERT INTO std_klasoru_tablosu ([klasor_no],[std_klasoru]) VALUES ('" & Klasor2Adi & "','" & KlasorAdi & "')"
End If
Next KontrolNo

sil2
DoCmd.RunSQL "DELETE tbl_gecici.* FROM tbl_gecici;"
DoCmd.SetWarnings True
End Sub

Hata mesajına rağmen kaydetme işlemini gerçekleştiriyor ama aynı kaydın girilmesini engellemiyor. Sadece uyarı mesajı veriyor.
Cevapla
#4
2. mesajdaki örnek yenilendi.
Cevapla
#5
(10/07/2015, 12:24)ozanakkaya yazdı: 2. mesajdaki örnek yenilendi.

Ozan Bey,

Çok teşekkürler. Hata giderilmiş.

Konu taşınabilir...
Cevapla

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

Yorum yapmak için üye olmanız gerekiyor

ya da
Task