[VBA] Mükerrer kayıt engellemede run-time hatası
#1
Selam arkadaşlar;
Sitede bulunan bütün mükerrer kayıt engellme ilgili bilgi, belgelere baktım ve ona göre uygulamamı ayarladım.Ancak, bir bölümde sorun çıktı.Hem engelleme olucak hemde izin verilecek. Aynı şahsı bulması durumunda kayıtlı şahsa gitmesi gibi.
Mesajı uzatmamak için, word dosyasında olayı anlattım.
Yardım ederseniz sevinirim.Kod [/code]üzerindede bakarsanız.
Visual Basic
  1. Private Sub Form_BeforeUpdate(Cancel As Integer)
  2. 'MÜKERRER KAYIT ENGELLEME
  3. Dim Tarih, Adi, Ulke As String
  4.  
  5. Tarih = DLookup("KTrh", "Tbl_Yab", "Adi='" & Me.Adi & "'")
  6.  
  7. Adi = DLookup("Adi", "Tbl_Yab", "Adi='" & Me.Adi & "'")
  8.  
  9. Ulke = DLookup("Ulke", "Tbl_Yab", "Ulke='" & Me.Ulke & "'")
  10.  
  11. If Len(Tarih) > "" Then
  12. MsgBox "" & vbCr & Tarih & " tarihinde" & vbCr & vbCr & Adi & " Adında " & vbCr & vbCr & Ulke & " Uyruğunda " & vbCr & vbCr & _
  13. " Aynı İsimle Kaydınız Var Değiştirin!!!!", vbExclamation, "Sistem Uyarı"
  14. Me.Undo
  15.  
  16. End If
  17. End Sub




Eklenti Dosyaları
.rar   DENEME-2003.rar (Boyut: 62,99 KB / İndirilme: 54)
.rar   DENEME-2007.rar (Boyut: 111,63 KB / İndirilme: 53)
.doc   Mükerrer kayıt engelleme.doc (Boyut: 381 KB / İndirilme: 50)



  Alıntı
Bu mesajı beğenenler:
#2
Merhaba..

Prosedürünüzü bu şekilde değiştirip deneyiniz..:

Visual Basic
  1. Dim Tarih, Adi, Ulke As String
  2.  
  3. Tarih = DLookup("KTrh", "Tbl_Yab", "Adi='" & Me.Adi & "'")
  4.  
  5. Adi = DLookup("Adi", "Tbl_Yab", "Adi='" & Me.Adi & "'")
  6.  
  7. Ulke = DLookup("Ulke", "Tbl_Yab", "Adi='" & Me.Adi & "'")
  8.  
  9. If Len(Tarih) > "" Then
  10. If MsgBox("" & vbCr & Tarih & " tarihinde" _
  11. & vbCr & vbCr & Adi & " Adında " & vbCr & vbCr _
  12. & Ulke & " Uyruğunda " & vbCr & vbCr & _
  13. " Aynı İsimle Kaydınız Var " & _
  14. "Değiştirtirmek istiyor musunuz!", vbYesNo, "Sistem Uyarı") = vbNo Then
  15. Undo
  16. Else
  17. Undo
  18. Dim rs As Object
  19.  
  20. Set rs = Me.Recordset.Clone
  21. rs.FindFirst "cstr([KTrh]) = '" & Tarih & "' and [Adi]& '" & Adi & "'"
  22. If Not rs.EOF Then Me.Bookmark = rs.Bookmark
  23. End If
  24. End If





  Alıntı
Bu mesajı beğenenler:
#3
Sayın Taruz bey;

Dediğiniz gibi değiştirdim.Veri tabanına girmiş olduğum ilk kayıtlı aynı isimde daha önce veri girişi yapmış olduğum şahsa gidiyor.Değiştimek istersem bu kayıt üzerinde sorun yok gibi. Ancak hep bulduğu başka kayıt bile olsa vetitabanına kayıtlı ilk kayıda gidiyor.Hayır dediğim zaman yeni kayda yönlerdiriyor.Ama başka kayıt ekleme imkanı vermiyor yeni olarak.
Ancak; bilmiyorum word dosyasına bakma imkanınız olduğumu gerekirse buraya ayrıntılı yazayım.Kalabalık olmasın diye yazmamıştım.



  Alıntı
Bu mesajı beğenenler:
#4
İnşallah anlatmayı deneyebilirim.Bazen eskik kalabiliyorum.Bir taraftan işlerle uğraşırken anlatmak istediğimi anlatamıyorum.
Yapmış olduğum örnekte normalde bir şahıs için aynı yıl içerisinde veri girişi yapılıyor.Ancak olurda aynı şahıstan bir daha girme gereği duacak olursam bana bu şahıs daha önce kaydı var uyarısını verdirmek.Ama sonuçta bu yıl için projenin devamı olarak her yıl kayıt girme olayı olacağı için dolayısıyla bir şahıs tekrar girilebilir.Bu noktada bana uyarı vermesini istiyorum.Ama bir isimden aynı ülkeleride farklı insan mutlaka oluyor.Bana uyarı mesajında daha önce aynı isimden şu ülkeler uyarısını verdirmek ilk etapta..
[Resim: KG8L.jpg]
daha sonra aynı değerde eşleşme olan şahsın kaydına buton yardımı ile gitme komutunu verdirmek.(Aynı yıl ise) değilse yeni kayıt için butonla devam edebilmek.
[Resim: AD6L.jpg]
ancak sizin vermiş olduğunuz kodu uyguladığımda veri tabanına aynı şahıs özelliklerine sahip veritabanına girilen şahsı bulup beni o şahsa yönlerdiriyor.Aynı isim olup farklı ülke girmek istesem bile.Hep veritabanındaki ilk kayda yönlendiriyor.
Ben hayır dediğim zamanda yeni form açmaya yönlerdiyor ancak tekrar daha önceki kaydı tekrar bulduğu zaman yine hiçbirşey yapamadan kısır döngü gibi dönüp duruyorum.

Ayrıca; bunlar olduktn sonra ayrı isimle aynı ülke kayıt etmek istiyorum onada izin vermiyor.Belki sizin içinde karmaşık bir durum inşallah bir sonuç alabiliriz...Diğer mükerrer kayıtlardan farklı olduğu için bir sonuç alamadım..



  Alıntı
Bu mesajı beğenenler:
#5
Bu prosedür istediğiniz karşılıyor sanki.. Değilse geliştirebiliriz..

Visual Basic
  1. Dim krt As Integer
  2. Dim tarih As String
  3. tarih = DLookup("KTrh", "Tbl_Yab", "Ulke='" & Me.Ulke & "' and Adi='" & Me.Adi & "'")
  4.  
  5. krt = DCount("*", "Tbl_Yab", "Ulke='" & Me.Ulke & "' and Adi='" & Me.Adi & "'")
  6.  
  7. If krt > 0 Then
  8. If MsgBox("" & vbCr & tarih & " tarihinde" _
  9. & vbCr & vbCr & Adi & " Adında " & vbCr & vbCr _
  10. & Ulke & " Uyruğunda " & vbCr & vbCr & _
  11. " Aynı İsimle Kaydınız Var " & _
  12. "Değiştirtirmek istiyor musunuz!", vbYesNo, "Sistem Uyarı") = vbNo Then
  13. Undo
  14. Else
  15. Undo
  16. Dim rs As Object
  17.  
  18. Set rs = Me.Recordset.Clone
  19. rs.FindFirst "cstr([KTrh]) = '" & tarih & "' and [Adi]& '" _
  20.   & Adi & "' and [Ulke]& '" & Ulke & "'"
  21. If Not rs.EOF Then Me.Bookmark = rs.Bookmark
  22. End If
  23. End If





  Alıntı
Bu mesajı beğenenler:
#6
Sayın Taruz bey;
Size her zaman yardımlarınızdan dolayı teşekkür ederim.Elinizden geldiğince yardımcı olmaya çalışıyorsunuz.Belki sorunun sizin tarafınızdan anlaşılması olsa 5 dk bir çözümdür.
Sizin belirttiğiniz kodu denedim.Yine aynı hataları aldım.1 numaralı isimli şahıstan Afganistan uyruklu kayıt denemesi yapıyorum.Aynı isimde bir kayıt var uyarısı veriyor.EVET dediğimde eşleşen kayda değilde (Örnek,1 numaralı isimli şahıstan Afganistan uyruklu var diyor evet tuşuna bastığımda aynı 1 isimli Endonezya uyruklu şahsın kaydına yönlendiriyor.) Endonezya kayıtlı şahıs veritabanında ilk kayıtlı olduğu için ona yönlendiriliyor.
HAYIR tuşuna basarsam ise belirtilen kayda gidemezsiniz uyarısı veriyor.Her iki işlemde de hiçbirşey yapamıyorum.Yeni düzenleme ne yeni kayıt.
Ayrıca veritabanında aynı isimle kayıtlı olup ülkesi farklı bir kayıt denemesi yapayım diyorum.Onda da runtime hatası veriyor.

Belki çok farklı mükerrer uygulaması olduğundan çöüzümü yapabilirmiyiz bilemiyorum.Sizide sıkmak istemem.
Acaba mantıklı olursa uyarı mesajında aynı şahıstan kayıt var diyerek KAYITLARI GÖR buton yardımı ile bir formmu açtırıp, ordaki eşleşen kayda çift tıklatılarak ana form üzerinde açtırsak?
Uyarı mesajında ayrıca aynı şahıstan kayıt var dediğinde Yeni kayıt gir veya kayda devam et butonu ile hiç eşleşen kayıtlara gitmeden kayda devam etme imkanımı sağlasak?
Bu konudaki fikirleriniz paylaşırsanız yada ufak bir örnekWubclub
Ben örnek olsun diye form1 adında eşleşen kayıtlar olarak açtım.Ayarları hazır değil.Gerçi daha sonra nasıl yapacağımada düşünmem lazımSpinny


Eklenti Dosyaları
.rar   DENEME-2003.rar (Boyut: 67,13 KB / İndirilme: 50)



  Alıntı
Bu mesajı beğenenler:


Benzer Konular...
Konu: Yazar Cevaplar: Gösterim: Son Mesaj
  [TABLO] Talodaki son kayıt ve bir önceki kayıt alienerji 9 4.933 2 saat önce
Son Mesaj: ioriret
  Farklı Tablodan Mükerrer Olmayan Bilgi Almak bilservisci 5 124 17-12-2023, 18:04
Son Mesaj: dsezgin
  [VBA] Kayıt Iptali: Kayıt Iptal Tablosuna Ekle, Kayıdı Sil Işlemi programmer67 6 298 21-07-2023, 10:40
Son Mesaj: onur_can
  Mükerrer Kayıt Ile Ilgili Bir Soru programmer67 10 375 02-05-2023, 09:34
Son Mesaj: programmer67
  Formumda Kayıt Sil Hatası Yaşıyorum. programmer67 23 513 13-04-2023, 17:08
Son Mesaj: programmer67
  [TABLO] Mükerrer Engelleme omergenc7 11 404 01-02-2023, 00:01
Son Mesaj: omergenc7
  [TABLO] Mükerrer Kayıt benuva 21 843 04-04-2022, 16:34
Son Mesaj: benuva
  Mükerrer Kayıt önlemek Fenerli88 1 270 25-03-2022, 09:12
Son Mesaj: dsezgin

Foruma Git:


Bu konuyu görüntüleyen kullanıcı(lar): 1 Ziyaretçi