AccessTr.neT
run-time error 3464 ifade türü uyuşmazlığı hk - Baskı Önizleme

+- AccessTr.neT (https://accesstr.net)
+-- Forum: Microsoft Access (https://accesstr.net/forum-microsoft-access.html)
+--- Forum: Access Cevaplanmış Soruları (https://accesstr.net/forum-access-cevaplanmis-sorulari.html)
+--- Konu Başlığı: run-time error 3464 ifade türü uyuşmazlığı hk (/konu-run-time-error-3464-ifade-turu-uyusmazligi-hk.html)

Sayfalar: 1 2 3 4 5 6 7


Cvp: run-time error 3464 ifade türü uyuşmazlığı hk - osman06 - 11/03/2009

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




Cvp: run-time error 3464 ifade türü uyuşmazlığı hk - Seruz - 11/03/2009

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




Cvp: run-time error 3464 ifade türü uyuşmazlığı hk - tdsharun - 11/03/2009

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...


Cvp: run-time error 3464 ifade türü uyuşmazlığı hk - Seruz - 11/03/2009

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
Kod:
SD3 & "# > 0")
ifadesi yanlış, ">0" ifade parantezin ve tırnağın içinde kalmış.
Kod:
SD3 & "#") > 0
şeklinde olmalıydı.


Cvp: run-time error 3464 ifade türü uyuşmazlığı hk - alpeki99 - 11/03/2009

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?


Cvp: run-time error 3464 ifade türü uyuşmazlığı hk - Seruz - 11/03/2009

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.

Kod:
If Dcount(...) > 0
şeklinde olmalı,
sizin dediğiniz ">0" kriteri parantezin içinde kalırsa
Kod:
If Dcount(...)
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