Skip to main content

AccessTr.neT


Mükerrer Kaydı Engelleme

Mükerrer Kaydı Engelleme

Çözüldü #1
Merhaba,

Ekteki "egitim_katilimci_formu"nda aynı kişiyi ikinci kez eklemeye çalışırsam hata veriyor ama ekli olan kişiden hariç daha önce eklenmemiş bir kişi ile birlikte seçersem hata vermiyor.

Bir de hata mesajına önceden kayıtlı olan kişilerin isimlerini getirebilir miyiz (Ben sadece bir kişinin ismini getirebildim) ya da hata mesajı vermesi yerine ekli olanları değil de sadece tabloda olmayanları eklemesini sağlayabilir miyiz?
.rar Mükerrer Kayıt.rar (Dosya Boyutu: 144,49 KB | İndirme Sayısı: 14)
Son Düzenleme: 13/04/2018, 12:08, Düzenleyen: Allback.
Cevapla
#2
Hata mesajı yerine,

kodun sonuna silme sorgusu ekleyerek mükerrer olan kayıtların silinmesini sağladım.
İhtiyacı olanlar için paylaşıyorum.


Visual Basic Code
DELETE tbl_gecici.sno
FROM tbl_gecici
WHERE (((tbl_gecici.sno) Not In (SELECT Min(tbl_gecici.sno) AS EnAzsno FROM tbl_gecici GROUP BY tbl_gecici.sicilno, tbl_gecici.adisoyadi, tbl_gecici.gorev, tbl_gecici.onay; )));
Cevapla
#3
Merhaba, birde butonun tıklandığında olayındaki kodu aşağıdaki ile değiştirerek deneyiniz.

Visual Basic Code
Dim db As Database
Dim rst As Recordset
    
Set db = CurrentDb()
Set rst = db.OpenRecordset("gorev_sorgusu")
    
rst.MoveFirst

recalc

DoCmd.SetWarnings False

Do While Not rst.EOF

If rst![onay] = True Then

    If DCount("[sicilno]", "tbl_gecici", "[sicilno]= '" & rst![sicilno] & "'") <> 0 Then
     
        GEklenmeyen = rst![adsoyad] & ", " & GEklenmeyen
        
    Else
    
        Geklenen = rst![adsoyad] & ", " & Geklenen
        DoCmd.RunSQL "INSERT INTO tbl_gecici ( adisoyadi, sicilno, gorev, onay ) SELECT adsoyad, sicilno, gorev, onay FROM personel_kayit_tablosu WHERE (((sicilno)= '" & rst![sicilno] & "'));"
             
    End If

End If

    rst.MoveNext
    
Loop

If Len(GEklenmeyen) <> 0 Then

    MsgBox (GEklenmeyen & " daha önceden girilmiş.")

End If

If Len(Geklenen) <> 0 Then

    MsgBox (Geklenen & " Kaydedildi.")

End If

DoCmd.RunSQL "UPDATE personel_kayit_tablosu SET onay = 0"

DoCmd.SetWarnings True
Cevapla
#4
syn allback
cevabınız için teşekkürler.
vt inceleme fırsatı buldum.

bir öneri versem.

formunuzun veri kaynağı görev sorgusu yerine eşleşmeyenleri bulma sorgusu kullanıp gecici tabloda olmayan kayıtları çağırabilirsiniz.
bu sayede gecici tablonuzda kaydı olanlar formunuz üzerine  hiç gelmez.
Visual Basic Code
SELECT personel_kayit_tablosu.id, personel_kayit_tablosu.adsoyad, personel_kayit_tablosu.sicilno, personel_kayit_tablosu.gorev, personel_kayit_tablosu.onay
FROM personel_kayit_tablosu LEFT JOIN tbl_gecici ON personel_kayit_tablosu.[sicilno] = tbl_gecici.[sicilno]
WHERE (((tbl_gecici.sicilno) Is Null));
Universal Form Tasarımı. devamlı güncelleniyor.
SQL TO Vba Convertör.
Cevapla
#5
(13/04/2018 12:38)A.Kadir. Adlı Kullanıcıdan Alıntı: syn allback
cevabınız için teşekkürler.
vt inceleme fırsatı buldum.

bir öneri versem.

formunuzun veri kaynağı görev sorgusu yerine eşleşmeyenleri bulma sorgusu kullanıp gecici tabloda olmayan kayıtları çağırabilirsiniz.
bu sayede gecici tablonuzda kaydı olanlar formunuz üzerine  hiç gelmez.
Visual Basic Code
SELECT personel_kayit_tablosu.id, personel_kayit_tablosu.adsoyad, personel_kayit_tablosu.sicilno, personel_kayit_tablosu.gorev, personel_kayit_tablosu.onay
FROM personel_kayit_tablosu LEFT JOIN tbl_gecici ON personel_kayit_tablosu.[sicilno] = tbl_gecici.[sicilno]
WHERE (((tbl_gecici.sicilno) Is Null));

Kadir Bey,

Öneriniz için çok teşekkürler. Öyle yapmayı da düşündüm ama bu sefer eklediğim birini çıkarmak istersem listede görünmeyeceğinden sorun yaşarım diye düşündüm.
Şu anda geçici tabloda ekli olanlar, formu yeniden açtığımda işaretli olarak geliyor. Eğer işaretlilerden birini çıkarmak istersem, işaretlerini kaldırdıktan sonra geçici tabloyu boşaltıp yeni haliyle ekleme yaptırmayı düşünüyorum.


Ozan Bey,

Çözümünüz için çok teşekkürler, ekli olanların hepsinin isimlerini getirmeyi başaramamıştım. Bu çözümü de kesinlikle saklayacağım...
Cevapla

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

Yorum yapmak için üye olmanız gerekiyor

ya da
Task