Skip to main content

AccessTr.neT


run-time error 3464 ifade türü uyuşmazlığı hk

run-time error 3464 ifade türü uyuşmazlığı hk

Çözüldü #31
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

Cevapla
Çözüldü #32
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

Bildiğini bilenin arkasından git, bildiğini bilmeyeni uyar, bilmediğini bilene öğret, bilmediğini bilmeyenden kaç.
Konfüçyüs
Cevapla
Çözüldü #33
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...
NZ Fonksiyonunun (İşlevinin) Ayrıntılı Anlatımı İçin Tıklayın...
DSum ve Sum Fonksiyonunun (İşlevinin) Ayrıntılı Anlatımı İçin Tıklayın...
DLookup Fonksiyonunun (İşlevinin) Ayrıntılı Anlatımı İçin Tıklayın...
Cevapla
Çözüldü #34
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ı.
Bildiğini bilenin arkasından git, bildiğini bilmeyeni uyar, bilmediğini bilene öğret, bilmediğini bilmeyenden kaç.
Konfüçyüs
Cevapla
Çözüldü #35
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?
AccessTr.Net teknik konular içeren bir sitedir. Bu tip sitelerde en iyi şekilde yardım alabilmeniz için Site Kurallarını mutlaka okumanız ve buna göre hareket etmeniz lazım.
Cevapla
Çözüldü #36
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
Bildiğini bilenin arkasından git, bildiğini bilmeyeni uyar, bilmediğini bilene öğret, bilmediğini bilmeyenden kaç.
Konfüçyüs
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da
Task