Tekrarlayan Kaydı Engelleme

1 2 3 4
02/10/2024, 10:47

berduş

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.
02/10/2024, 11:27

notrino

Maalesef,
Bu kod da hata veriyor. Dediğiniz düzenlemeyi ilk mesajımda verdiğim örnek dosyada deneyebilirsiniz. Hata neyden kaynaklanıyor anlamadım.
02/10/2024, 11:29

berduş

kodun son halini ekler misiniz?
02/10/2024, 11:37

berduş

bu arada galiba bir yanlış anlama olmuş: ben 7. mesajda size kod önermedim hatalı olan yerleri kırmızı ile gösterdim.
02/10/2024, 11:43

notrino

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
02/10/2024, 11:48

berduş

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ı!
1 2 3 4