SayKayit = DCount("*", "Tablo2", [harf_id] & "=" & Me.harf_id & " and " & "tarih='" & Me.tarih & " and " & "sayı='" & Me.sayı & "'")
Kodunuzda hem sayisal hem de tarih değerlerini tek tırnak içine almışsınız sadece metinsel değerler tek tırnak içine alınır. Ayrıca tarihi clng(me.tarih) içine almanız daha doğru olur.
Maalesef,
Bu kod da hata veriyor. Dediğiniz düzenlemeyi ilk mesajımda verdiğim örnek dosyada deneyebilirsiniz. Hata neyden kaynaklanıyor anlamadım.
kodun son halini ekler misiniz?
bu arada galiba bir yanlış anlama olmuş: ben 7. mesajda size kod önermedim hatalı olan yerleri kırmızı ile gösterdim.
Anladım. Neyse, durumu ChatGPT'ye tanımladım sağolsun çözdü benim için. Kodu aşağıda veriyorum, başka bu konuda arayışı olanlara da çözüm olabilri. Teşekkürler.
Kod:
Private Sub Komut4_Click()
Dim veriSayisi As Integer
Dim kontrolVerisi1 As String
Dim kontrolVerisi2 As String
Dim kontrolVerisi3 As String
' Kontrol edilecek verileri al
kontrolVerisi1 = Me.HARF1 ' 1. alan
kontrolVerisi2 = Me.HARF2 ' 2. alan
kontrolVerisi3 = Me.HARF3 ' 3. alan
' Tablo adı ve kontrol edilecek alan adlarını değiştirin
veriSayisi = DCount("*", "Tablo1", "HARF1='" & kontrolVerisi1 & "' AND HARF2='" & kontrolVerisi2 & "' AND HARF3='" & kontrolVerisi3 & "'")
' Eğer tablo da bu veri sayısı 0'dan fazla ise uyarı ver
If veriSayisi > 0 Then
MsgBox "Bu kayıt zaten mevcut. Kayıt yapılamaz.", vbExclamation, "Uyarı"
Me.Undo
Else
' Kayıt işlemini gerçekleştirin
DoCmd.RunCommand acCmdSaveRecord
' Yeni kayda geç
DoCmd.GoToRecord , , acNewRec
End If
End Sub
açıkçası kodun çalışmasına şaşırdım, sayısal/tarih alanlarında tek tırnak kullanılmaz diye biliyorum. bu kodda hepsi tek tırnaklı!