• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Mükerrer kayıt engelleme

Katılım
14 Şubat 2006
Mesajlar
3,426
Excel Vers. ve Dili
(Excel 2016 - İngilizce)
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

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

  • db22.rar
    db22.rar
    15.2 KB · Görüntüleme: 123
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??
 
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?
 
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....
 
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)
 
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.
 
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
 
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]
 
Ç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.
 
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
 
Sn Recep İpek
Sizin versiyon diliniz ingilizce, Replace fonksiyonuna gerek olmayabilir. Kolay gelsin
 
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.
 
Sayın Recep İpek,

Unutmuşum. kusura bakmayın.

iyi çalışmalar
 

Ekli dosyalar

Sn.modalı

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