Mükerrer kayıt engelleme

Katılım
14 Şubat 2006
Mesajlar
3,426
Excel Vers. ve Dili
(Excel 2016 - İngilizce)
Altın Üyelik Bitiş Tarihi
30-11-2022
Merhaba,

Ekteki örnekte görüldüğü gibi kayit formunda ekle butonu ile personeli çağırıp tarih ve saatleri girerek kaydet butonu ile verileri kayıt tablosuna ekleyebiliyorum.

Mükerrer kayıdı engellemek için aynı sicil ve tarihe ait daha önce girilen saatler arasında tekrar kayıt yapmak istediğimde bana uyarı vermesini istiyorum.

Sadece sicil ve tarihi kontrol edip girilen saat daha önce girilen saatlerle çakışıyorsa uyarı versin.
 

Ekli dosyalar

Katılım
25 Aralık 2005
Mesajlar
4,160
Excel Vers. ve Dili
MS Office 2010 Pro Türkçe
Sayın Recep İpek,

Kayıt ve güncelleme için Access te kod yazmanıza gerek yok.

Eklediğim formu inceleyin.

İyi çalışmalar
 

Ekli dosyalar

Katılım
13 Ekim 2005
Mesajlar
64
Excel Vers. ve Dili
MsSql 2016, SSMS 17.1, Office 2013 ent. (Eng)
sayın modalı

hic kod kullanmadan sicil ve tarihi beraber birincil anahtar yaparak da mükerrer kayıt engelleniyor(boylece sadece o formla girilen mukerrek kayıtlar degil tumu engellenir).
ama uyarı verme meselesini bu yolla nasıl yaparız? sayın modalı bir yolu varmıdır. SORU: yani birincil anahtardan dolayı eklenemeyen kayıt için şu malum uzun uyarı yerine kendimiz yazamazmıyız??
 
Katılım
25 Aralık 2005
Mesajlar
4,160
Excel Vers. ve Dili
MS Office 2010 Pro Türkçe
hic kod kullanmadan sicil ve tarihi beraber birincil anahtar yaparak da mükerrer kayıt engelleniyor(boylece sadece o formla girilen mukerrek kayıtlar degil tumu engellenir).
ama uyarı verme meselesini bu yolla nasıl yaparız? sayın modalı bir yolu varmıdır. SORU: yani birincil anahtardan dolayı eklenemeyen kayıt için şu malum uzun uyarı yerine kendimiz yazamazmıyız??
Eklediğim örneği incelediniz mi?
 
Katılım
14 Şubat 2006
Mesajlar
3,426
Excel Vers. ve Dili
(Excel 2016 - İngilizce)
Altın Üyelik Bitiş Tarihi
30-11-2022
Sn. modalı ilginiz için teşekkürler.

Sanırım sorumu eksik ifade ettim.:redface:

Örnek vermek gerekirse 1 kişinin 15.01.2010 08:00-16:00 şeklinde daha önce girilmiş bir kaydı var.

Ben tekrardan aynı kişiye ve aynı tarihe 08:00-16:00 veya 13:00-16:00
şeklinde bir kayıt daha girmek istediğimde bu saatlerle çakışan bir kayıt var şeklinde beni uyarsın.

Kısacası benim yapmak istediğim sadece saat aralıklarını kontrol ettirmek.
Oysaki bir kişinin aynı tarihe ait birden fazla kaydı olabilir.15.01.2010 08:00-16:00 ve 15.01.2010 16:00-17:30 gibi....
 
Katılım
13 Ekim 2005
Mesajlar
64
Excel Vers. ve Dili
MsSql 2016, SSMS 17.1, Office 2013 ent. (Eng)
Eklediğim örneği incelediniz mi?
evet inceledim afterupdate ile oluyor (önceki verilerle bi karşılaştırma sözkonusu). benim sorum daha genel. birincil anahtardan dolayı kayıt yapılamadıgındaki uyarıyı kendimiz belirleyebilir miyiz? (örnek: tablo da verilen kritere uymayan bir veri girildiginde istedigimiz uyarıyı verdirebiliyoruz, birincil anahtar için de boyle bişey mumkunmu)
 
Katılım
25 Aralık 2005
Mesajlar
4,160
Excel Vers. ve Dili
MS Office 2010 Pro Türkçe
Sayın celoga,

İlgili anahtar alanının güncelleştirme sonrası olayında önce sistem uyarılarını kapatıp aynı şekilde ileti kutusuyla istediğimiz uyarıyı verebilir alanı silip sistem uyarılarını tekrar etkin hale getirebiliriz.
 
Katılım
25 Aralık 2005
Mesajlar
4,160
Excel Vers. ve Dili
MS Office 2010 Pro Türkçe
Sn. modalı ilginiz için teşekkürler.

Sanırım sorumu eksik ifade ettim.:redface:

Örnek vermek gerekirse 1 kişinin 15.01.2010 08:00-16:00 şeklinde daha önce girilmiş bir kaydı var.

Ben tekrardan aynı kişiye ve aynı tarihe 08:00-16:00 veya 13:00-16:00
şeklinde bir kayıt daha girmek istediğimde bu saatlerle çakışan bir kayıt var şeklinde beni uyarsın.

Kısacası benim yapmak istediğim sadece saat aralıklarını kontrol ettirmek.
Oysaki bir kişinin aynı tarihe ait birden fazla kaydı olabilir.15.01.2010 08:00-16:00 ve 15.01.2010 16:00-17:30 gibi....
Sayın Recep İpek,

Mantık aynı. Akşam evden uygulamanıza eklerim.

İyi çalışmalar
 
Katılım
18 Nisan 2007
Mesajlar
2,053
Excel Vers. ve Dili
Access 2019
Merhaba..

Sayın modalı'nın prosedürünü aşağıdaki gibi geliştirdim.. Aynı tarihteki ve aynı giriş - çıkış saatlerindeki personel kaydının tekrarında uyarı verir..

Kod:
[COLOR=#0600ff]Dim[/COLOR] tarih1 [COLOR=#0600ff]As[/COLOR] [COLOR=#0600ff]String[/COLOR]
tarih1 [COLOR=#008000]=[/COLOR] [COLOR=#0600ff]Month[/COLOR][COLOR=#000000]([/COLOR][COLOR=#0600ff]Me[/COLOR].tarih[COLOR=#000000])[/COLOR] [COLOR=#008000]&[/COLOR] [COLOR=#fb0000]"/"[/COLOR] [COLOR=#008000]&[/COLOR] [COLOR=#0600ff]Day[/COLOR][COLOR=#000000]([/COLOR][COLOR=#0600ff]Me[/COLOR].tarih[COLOR=#000000])[/COLOR] [COLOR=#008000]&[/COLOR] [COLOR=#fb0000]"/"[/COLOR] [COLOR=#008000]&[/COLOR] [COLOR=#0600ff]Year[/COLOR][COLOR=#000000]([/COLOR][COLOR=#0600ff]Me[/COLOR].tarih[COLOR=#000000])[/COLOR]
saat1 [COLOR=#008000]=[/COLOR] bassaat
saat2 [COLOR=#008000]=[/COLOR] bitsaat
saatkontrol [COLOR=#008000]=[/COLOR] DCount[COLOR=#000000]([/COLOR][COLOR=#fb0000]"*"[/COLOR], [COLOR=#fb0000]"kayit"[/COLOR], [COLOR=#fb0000]"sicil="[/COLOR] [COLOR=#008000]&[/COLOR] [COLOR=#0600ff]Me[/COLOR].sicil [COLOR=#008000]&[/COLOR] [COLOR=#fb0000]""[/COLOR] _
[COLOR=#008000]&[/COLOR] [COLOR=#fb0000]" And tarih=#"[/COLOR] [COLOR=#008000]&[/COLOR] tarih1 [COLOR=#008000]&[/COLOR] [COLOR=#fb0000]"# and bassaat=#"[/COLOR] [COLOR=#008000]&[/COLOR] saat1 [COLOR=#008000]&[/COLOR] [COLOR=#fb0000]"# and bitsaat=#"[/COLOR] [COLOR=#008000]&[/COLOR] saat2 [COLOR=#008000]&[/COLOR] [COLOR=#fb0000]"#"[/COLOR][COLOR=#000000])[/COLOR]
[COLOR=#0600ff]If[/COLOR] saatkontrol > [COLOR=#7d2252]1[/COLOR] [COLOR=#0600ff]Then[/COLOR]
MsgBox [COLOR=#fb0000]"Aynı kişinin aynı tarihte kaydı var!"[/COLOR], vbOKOnly
[COLOR=#0600ff]Me[/COLOR].Undo
[COLOR=#0600ff]End[/COLOR] [COLOR=#0600ff]If[/COLOR]
 
Katılım
14 Şubat 2006
Mesajlar
3,426
Excel Vers. ve Dili
(Excel 2016 - İngilizce)
Altın Üyelik Bitiş Tarihi
30-11-2022
Çok yaklaştık ama buda tam çözüm değil.:)

Daha önce yazdığım gibi girilen saatleri daha önce girmiş olduğum saatler arasında kontrol edecek.

Eğer girdiğim saatler daha önceki saatlerle çakışıyorsa uyarı vermesini istiyorum.

Örneğin 101 15.01.2010 08:00 16:00 şeklinde daha önce girilmiş bir kaydım var.

Ben ikinci defa yine aynı kişiye 101 15.01.2010 tarih ve saat olarakta 12:00-16:00 giriyorum.
Bu girdiğim 12:00-16:00 saatleri daha önce aynı kişiye girmiş olduğum 08:00-16:00 saatleri ile çakıştığı için yani aynı saat aralığı içerisinde olduğu için bana uyarı vermesi gerekiyor.

Fakat ben aynı kişiye aynı tarihte 16:00-17:30 bir kayıt girdiğimde kabul etmesi gerekiyor.
 
Katılım
14 Şubat 2006
Mesajlar
3,426
Excel Vers. ve Dili
(Excel 2016 - İngilizce)
Altın Üyelik Bitiş Tarihi
30-11-2022
Yine geç kalmışım ama alternatif olsun. Örnek ekte.
Sn.omerceri

Tam istediğim gibi bir çözüm.Teşekkürler.

Saat aralığını kontrol etmek için mantığı kuramamıştım.

Kod:
Private Sub Command10_Click()
tar = CDbl(tarih)
bas = Replace(CDbl(CDate(bassaat1 & ":" & bassaat2)), ",", ".")
bit = Replace(CDbl(CDate(bitsaat1 & ":" & bitsaat2)), ",", ".")
Dim XX As New ADODB.Recordset
sql = "SELECT* FROM kayit WHERE (((kayit.bassaat)>=" & bas & " And (kayit.bassaat)<=" & bit & ") AND ((kayit.tarih)=" & tar & ")) OR (((kayit.bitsaat)>=" & bas & " And (kayit.bitsaat)<=" & bit & ")) OR (((kayit.bitsaat)>=" & bit & ") AND ((kayit.bassaat)<=" & bas & "));"
XX.Open sql, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
If XX.RecordCount > 0 Then
MsgBox XX("bassaat") & "-" & XX("bitsaat") & " arasında giriş-çıkış yapılmış."
Exit Sub
Else
'Kayıt işleminin yapılacağı bölüm
End If
XX.Close
End Sub
 
Katılım
6 Şubat 2005
Mesajlar
1,467
Sn Recep İpek
Sizin versiyon diliniz ingilizce, Replace fonksiyonuna gerek olmayabilir. Kolay gelsin
 
Katılım
14 Şubat 2006
Mesajlar
3,426
Excel Vers. ve Dili
(Excel 2016 - İngilizce)
Altın Üyelik Bitiş Tarihi
30-11-2022
Sn.omerceri

Sanırım sql cümlesinde sicil kontrolü yapılmıyor.Bunu nereye ekleyebiliriz?
Ayrıca tarih kontrolü içinde parantezlerden dolayı farklı sonuç çıkabiliyor.
 
Katılım
14 Şubat 2006
Mesajlar
3,426
Excel Vers. ve Dili
(Excel 2016 - İngilizce)
Altın Üyelik Bitiş Tarihi
30-11-2022
Sorum hala güncel...
 
Katılım
25 Aralık 2005
Mesajlar
4,160
Excel Vers. ve Dili
MS Office 2010 Pro Türkçe
Sayın Recep İpek,

Unutmuşum. kusura bakmayın.

iyi çalışmalar
 

Ekli dosyalar

Katılım
14 Şubat 2006
Mesajlar
3,426
Excel Vers. ve Dili
(Excel 2016 - İngilizce)
Altın Üyelik Bitiş Tarihi
30-11-2022
Sn.modalı

Çok teşekkürler.Mantık süper..... :D
 
Üst