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?
Hata mesajı yerine,
kodun sonuna silme sorgusu ekleyerek mükerrer olan kayıtların silinmesini sağladım.
İhtiyacı olanlar için paylaşıyorum.
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; )));
Merhaba, birde butonun tıklandığında olayındaki kodu aşağıdaki ile değiştirerek deneyiniz.
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
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.
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));
(13/04/2018, 12:38)A.Kadir. yazdı: [ -> ]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.
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...