alpeki hocam kod aşağıdaki gibi oluyor en verdiğiniz kodu koyduğumda
Kod:
Private Sub Saat_BeforeUpdate(Cancel As Integer)
Dim SD1, SD2, SD3, c As String
Dim stLinkCriteria1, stLinkCriteria2, stLinkCriteria3 As String
SD1 = Me.AdiSoyadi.Value
SD2 = Me.Tarih.Value
SD3 = Me.Saat.Value
stLinkCriteria1 = "[AdiSoyadi]=" & "'" & SD1 & "'"
stLinkCriteria2 = "[Tarih]=" & "#" & SD2 & "#"
stLinkCriteria3 = "[Saat]=" & "'" & SD3 & "'"
[color=#FF4500]If DCount("*", "HATIRLATMALAR", "AdiSoyadi='" & Me.AdiSoyadi & "' and Tarih =#" & Me.Tarih & "# and Saat=#" & SD3 & "# > 0")[/color]
c = MsgBox("DİKKAT!...LİSTENİZDE...*" _
& SD1 & " *adında ki kayıt * " _
& SD2 & " * Tarihinde*" _
& SD3 & " * Saatinde GİRİLMİŞ *" _
& vbCr & vbCr & " DEVAM ETMEK İSTİYORMUSUNUZ...", vbYesNo + vbQuestion, "..***..DİKKAT..***..")
If c = vbNo Then Undo: Exit Sub
If c = vbYes Then
cevap = MsgBox("Emin misiniz", vbYesNo, "KONTROL")
If cevap <> 6 Then
MsgBox "Kayıt Yapılmadı", vbOKOnly, "KAYIT YAPILMADI"
Undo
ElseIf vbNo Then
MsgBox "KAYIT YAPILDI", vbOKOnly, "KAYIT TAMAM"
End If
End If
End If
End Sub
Gördüğüm kadarıyla verilen kodları doğru aktaramamışsınız,
bir de bunları kopyalayıp deneyin.
Bende doğru şekilde çalışıyor.
Kod:
Private Sub Saat_BeforeUpdate(Cancel As Integer)
Dim SD1, SD2, SD3, c As String
Dim Kriter, Kriter1, Kriter2, Kriter3 As String
SD1 = Me.AdiSoyadi.Value
SD2 = Me.Tarih.Value
SD3 = Me.Saat.Value
Kriter1 = "[AdiSoyadi]=" & "'" & SD1 & "'"
Kriter2 = "[Tarih]=" & "#" & SD2 & "#"
Kriter3 = "[Saat]=" & "#" & SD3 & "#"
Kriter = Kriter1 & " And " & Kriter2 & " And " & Kriter3
If DCount("*", "HATIRLATMALAR", Kriter) > 0 Then
c = MsgBox("DİKKAT!...LİSTENİZDE...*" _
& SD1 & " *adında ki kayıt * " & SD2 & " * Tarihinde*" & SD3 & " * Saatinde GİRİLMİŞ *" _
& vbCr & vbCr & " DEVAM ETMEK İSTİYORMUSUNUZ...", vbYesNo + vbQuestion, "..***..DİKKAT..***..")
If c = vbNo Then Me.Undo: Exit Sub
Cevap = MsgBox("Emin misiniz", vbYesNo, "KONTROL")
If Cevap = vbNo Then
MsgBox "Kayıt Yapılmadı", vbOKOnly, "KAYIT YAPILMADI"
Me.Undo
Else
MsgBox "KAYIT YAPILDI", vbOKOnly, "KAYIT TAMAM"
End If
End If
End Sub
Hocam, bence Sayın osman06'nın sorunu bunların yanı sıra tarih ayracı... Tarih ayracı olarak nokta kullandığı için bu tarz bir sorunla karşılaşıyor muhtemelen. Slaç kullanması gerekiyor oysa ki... Aynı hatayı defalarca ben de yaşadım bunu yapmaya çalışırken. Bi sürü kod yazdım ettim. Sürekli hata aldım. Değiştirmeden de yapabilir miyim diye... Ama nafile...
Bölge ve dil seçeneklerinden tarih bölümündeki tarih ayırıcısını slaç yaptığımda sorun kalmadı.
Sayın osman06, size de aynısını tavsiye ediyorum. Resim de ekledim...
Kolay gelsin...
Doğrudur, bir deneyip bilgi versin bakalım.
Ama kod da da sorunlar vardı, daha sade ve anlaşılır oldu şimdi.
Mesela,
Kod:
Dim stLinkCriteria1, stLinkCriteria2, stLinkCriteria3 As String
stLinkCriteria1 = "[AdiSoyadi]=" & "'" & SD1 & "'"
stLinkCriteria2 = "[Tarih]=" & "#" & SD2 & "#"
stLinkCriteria3 = "[Saat]=" & "'" & SD3 & "'"
yazılmış ama hiç bir yerde kullanılmıyordu.
Kod:
[color=#FF4500]If DCount("*", "HATIRLATMALAR", "AdiSoyadi='" & Me.AdiSoyadi & "' and Tarih =#" & Me.Tarih & "# and Saat=#" & SD3 & "# > 0")[/color]
Kodun başında ve sonunda color tagleri kalmış, bunları çıkarmamış sanırım koddan.
Çıkarmış olsa bile
ifadesi yanlış, ">0" ifade parantezin ve tırnağın içinde kalmış.
şeklinde olmalıydı.
Seruz hocam haddime değil ama gözünüzden kaçmış olabilir düşüncesi ile söylüyorum.
SD3 & "# > 0") ifadesindeki > 0 parantez içinde kalması gerekmez mi? Sonuçta o parantez Dcount'a ait parantezin kapatılması. > 0 ifadesi de kriterde yer aldığına göre parantez içinde olması gerekmez mi?
Estağfurullah sn. Alpeki99,
insanlık hali gözümden kaçmış olabilir ama
tekrar kontrol ettim ve benim söylediğim şekilde doğru olduğunu düşünüyorum.
şeklinde olmalı,
sizin dediğiniz ">0" kriteri parantezin içinde kalırsa
olarak kalıyor ki bu doğru olmaz.
Çünkü Dcount() fonksiyonundan dönen değerin sıfırdan büyük olup olmadığına bakmaya çalışıyoruz.
VBA'de If kontrolüne Breakpoint koyup Immediate penceresinde "?" ile kriter kısmına bakarsanız daha iyi görebilirsiniz.
Benimkinde, Kriter = "[AdiSoyadi]='HASAN HÜSEYİN' And [Tarih]=#01/01/2009# And [Saat]=#18:00:00#"
Sizinkinde, Kriter = "[AdiSoyadi]='HASAN HÜSEYİN' And [Tarih]=#01/01/2009# And [Saat]=#18:00:00# > 0"
Yani parantez içinde kaldığında, saat eşitliğinin sıfırdan büyük olup olmadığını kontrol etmiş gibi oluyor.
Benim yazdığım kodda bu daha doğru olarak görünüyor.
Kod:
If DCount("*", "HATIRLATMALAR", Kriter) > 0 Then