Skip to main content

AccessTr.neT


Mükerrer Kayıt Kontrolü

Mükerrer Kayıt Kontrolü

Çözüldü #1
Selam arkadaşlar. Bir uygulamam var. Birincil alanı mevcut. ilgili alanlar doldurulup kaydet tuşuna basılınca birincil alan daha önce verilmişse uyarıyı veriyor. Ama ben o ilgili birincil alandan çıkıldığında kayıt kontrolü yapmasını ve verilen kayıt varsa uyarıyı versin, yoksa diğer alana geçsin.

Birincil alanı otomatik sayı bilerek yapmadım. kullanıcının vermesi gerekiyor.

Forumda birkaç örnek buldum, ama uyarlama konusunda sıkıntı yaşadım ve sabahtan bu yana bununla uğraşıyorum. Direk hemen sormayayım, uğraşayım dedim ama kaç saatimi aldı. Örnek bir uygulama ekliyorum, KAYIT_NO alanından çıkıldığındamı, yoksa güncelleme sonrası, güncelleme öncesi, hangi olayda nasıl bir kontrol yaptırabilirim. bu konuda siz değerli üstadların bilgisine müracaat ediyorum.

Teşekkürler...
.rar ornek.rar (Dosya Boyutu: 22,34 KB | İndirme Sayısı: 23)
Cevapla
#2
Sayın access06,

Formunuzun içindeki GELDIGI_YER alanının güncelleştirme öncesine aşağıdaki kodu eklerseniz istediğiniz işlem olacaktır.


Dim SID As String

Dim stLinkCriteria As String
SID = Me.[GELDIGI_YER].Value
stLinkCriteria = "[GELDIGI_YER]=" & "'" & SID & "'"
If DCount("[GELDIGI_YER]", "evrakkayit", stLinkCriteria) > 0 Then
Me.Undo
MsgBox "Girmekte Oldugunuz " _
& SID & " Kayıt Daha Önce İşlenmiş." _
& vbCr & vbCr & "Lütfen Kayıtları Kontrol Ediniz.", vbInformation _
, "Mükerrer Kayıt"

End If
Set rsc = Nothing
Cevapla
#3
(05/12/2014, 18:00)boolean_ yazdı: Sayın access06,

Formunuzun içindeki GELDIGI_YER alanının güncelleştirme öncesine aşağıdaki kodu eklerseniz istediğiniz işlem olacaktır.

Dim SID As String

Dim stLinkCriteria As String
SID = Me.[GELDIGI_YER].Value
stLinkCriteria = "[GELDIGI_YER]=" & "'" & SID & "'"
If DCount("[GELDIGI_YER]", "evrakkayit", stLinkCriteria) > 0 Then
Me.Undo
MsgBox "Girmekte Oldugunuz " _
& SID & " Kayıt Daha Önce İşlenmiş." _
& vbCr & vbCr & "Lütfen Kayıtları Kontrol Ediniz.", vbInformation _
, "Mükerrer Kayıt"

End If
Set rsc = Nothing

İlginize çok Teşekkür ediyorum, ama KAYIT_NO alanından çıkıldığında ya da güncellendiğinde bu denetimi yapmasını istiyorum. GELDIGI_YER alanının güncelleştirme öncesine yazdığım zaman hiç bir tepki vermiyor, mükerrer kayıt hatası vermiyor.

bu kodu KAYIT_NO alanına uyguladığım zaman ise, ölçüt ifadesinde veri türü uyuşmazlığı veriyor ve Debug dediğimde ise vb kod sayfasında

If DCount("[KAYIT_NO]", "evrakkayit", stLinkCriteria) > 0 Then

satırına gidiyor.

çözüm olmadı.  Img-cray((
Cevapla
#4
KAYIT_NO alanının güncelleştirme öncesine aşağıdaki kodu yazdım ve oldu. çözümü paylaşmak istedim.

Dim SID As String
Dim stLinkCriteria As String
SID = Me.[KAYIT_NO].Value
stLinkCriteria = "[KAYIT_NO]=" & "'" & SID & "'"

If DCount("*", "evrakkayit", "KAYIT_NO =" & Me.KAYIT_NO) > 0 Then


MsgBox "Girdiğiniz - " _
& SID & " - Kayıt Numarası daha önce verilmiştir." _
& vbCr & vbCr & "Lütfen Kayıtları Kontrol Ediniz.", vbInformation, "Mükerrer Kayıt No Hatası...!"

Me.Undo
Else
Exit Sub
End If

başka bir kodlama yöntemi bilen arkadaşımız var ise alternatifleri uygulayabiliriz.
Cevapla
#5
sonuç olarak hangi alanın kontrol edilmesini istiyorsanız o alanın güncelleştirme öncesine yazmanız yeterli sadece kod içerisindeki alan adını değiştirmeniz yeterli olacaktır.
Cevapla
#6
Sayın access06,

Eklediğiniz örnek uygulamanız incelendiğinde aşağıdaki hususun olduğu görülmektedir.

Son eklediğiniz kodlamaya göre yorumlamak gerekirse,tablonuzdaki KAYIT_NO alanının Varsayılan Değer satırına 0 (Sıfır) değeri yazdığınız için,bu kodlama ilgili olay yordamına dahil edilerek çalıştırıldığında;daha önce girilmiş olan bir KAYIT_NO yazıldığında evet uyarı veriyor fakat hemen akabinde de ilgili denetime 0 değerini yazıyor.doğal olarak da;bilgi girişi yapıldı düşünülerek ve sıfır değeri de daha önce mevcut olmadığından geçerli sayılıyor.bu hali ile de yeni bir kayıt gibi tablonun ilk satırına ekliyor.bunu belirterek,bu hususa dikkat çekmek istedim.

Ayrıca,mükerrer kayıt kontrolü talebiniz öncesinde de bu hususun bilinmesi gerekir. evrakkayit isimli tablonuzun içeriğinde; KAYIT_NO alanınızın Sıralı satırı Evet (Yineleme Yok) olarak işaretlenmiş.doğal olarak da zaten bu işaretleme sonucunda form üzerinde yeni bir kayıt açıp bu alana önceki kayıtlardan girilmiş olan benzer bir değer girdikten sonrasında kayıt yapmak istediğinizde size,bir uyarı bildirimi ile daha önce girilmiş olan bir değer girilmiş olduğunu belirterek yineleme yapılamayacağını gösterecektir.bu nedenle de,harici bir uyarı kodlaması yapmanıza gerek kalmadan size bu uyarı zaten yapılacaktır.

Fakat,sizin istediğiniz gibi;tablodan değil de harici kodlama ile (isteğe göre herhangi bir Olay Yordamı içerisinde) belirtmek için,öncelikle tablonuzdaki KAYIT_NO alanının Birincil Anahtar tercihini iptal etmelisiniz.böylece,Sıralı satırı,Hayır olarak kalacaktır.Varsayılan Değer satırındaki sıfır değerini de iptal ediniz.

Son olarak,form üzerindeki KAYIT_NO denetiminin Çıkıldığında Olay Yordamı içerisine ilgili kodları dahil ettikten sonra,yeni kayıt yapmaksızın diğer kayıtları gezinmek istediğinizde,her bir kayıt öncesinde ilgili uyarı mesajı ekranda belirecektir.bunu engellemek için,ekteki örnekte bir çalışma oluşturulmuştur.

EK’te;talebinize yönelik olarak alternatif olması açısından hazırlanmış örnek uygulama mevcuttur.inceleyebilirsiniz.
bilgilerinize...İyi çalışmalar,Saygılar.
.rar ornek-ATOZ.rar (Dosya Boyutu: 22,95 KB | İndirme Sayısı: 54)
Herkes, kendisinin AR-GE'cisidir...


Konulara eklenen Uygulama içeriğine yönelik Tavsiyeler
Alt Form Denetim Değerlerine ulaşma ve Alt Form Güncelleme
Kapatırken Düzenle (Compact On Close) Seçeneğinin İşaretlenmesi Hakkında
Cevapla

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

Yorum yapmak için üye olmanız gerekiyor

ya da
Task