Skip to main content

AccessTr.neT


String Tarih Formatında Mı Yazılmış

String Tarih Formatında Mı Yazılmış

#43
evet her ikisi de tarih görüyor ama şöyle yazarsam
MsgBox CDate("39.12.20")
sonuç  20.12.1939 çıkıyor
Cevapla
#44
Hacı abi benim ki hata vermez çünkü 10 karakter sorgulaması var.
Yani 10 karakterden az olursa hata mesaj çıkar.Bir daha deneyin ve hangi kodu denediyseniz yazınız buraya.
Alttaki kod zaten 10 karakter kontrol ediyor.
Berduş hocamız sayedindeki diğer koduda sildik if len(Tarih(0))<  gibi olanı gerçi hata vermez.

If Not deger Like "##.##.####" Then
Cevapla
#45
Function isTarih() As Boolean
On Error GoTo Err_hata

    Dim result As Boolean
    Dim str As String
   
    str = Day(CLng(DateSerial(Year("39.12.20"), Month("39.12.20") + 1, 1) - 1))

    result = True
   
Exit_kod:
    isTarih = result
    Exit Function

Err_hata:
    result = False
    MsgBox Err.Description
    Resume Exit_kod
End Function
Cevapla
#46
(12/03/2020, 12:27)accessman yazdı:
Function isTarih() As Boolean
On Error GoTo Err_hata

    Dim result As Boolean
    Dim str As String
   
    str = Day(CLng(DateSerial(Year("39.12.20"), Month("39.12.20") + 1, 1) - 1))

    result = True
   
Exit_kod:
    isTarih = result
    Exit Function

Err_hata:
    result = False
    MsgBox Err.Description
    Resume Exit_kod
End Function
Diyecek bir kelime bulamıyorum size.
Cevapla
#47
en son onu yazınca olur diye düşünmüştüm kusura bakmayın sizin kodu fonksiyon haline getirsek fonksiyona metin kutusu gönderip boolean sonuç alsak nasıl düzenlemek lazım
Private Function isTarih(metin0 As TextBox) As Boolean
On Error GoTo son
   
    With metin0
        If .Value = "" Then GoTo enson
            Dim tarih As Variant, trh As Date, eom As Long, deger As String

            .Value = Replace(.Value, " ", ".")
            .Value = Replace(.Value, "/", ".")
            tarih = Split(.Value, ".")
         
            If Len(tarih(0)) = 1 Then tarih(0) = "0" & tarih(0)
            If Len(tarih(1)) = 1 Then tarih(1) = "0" & tarih(1)
            deger = tarih(0) & "." & tarih(1) & "." & tarih(2)
         
            If Not deger Like "##.##.####" Then
                MsgBox "Tarih bilgisi ""gg.aa.yyyy"" şeklinde girilmelidir.", vbCritical, "HATA"
                .SetFocus
                GoTo var
            Else
         
                trh = DateSerial(tarih(2), tarih(1), 1)
                eom = Day(CLng(DateSerial(Year(trh), Month(trh) + 1, 1) - 1))
                If Val(tarih(0)) > eom Then
                    GoTo son
                    .SetFocus
                End If
                If tarih(1) > 12 Then
                  GoTo son
                  .SetFocus
            End If
        End If
   
        MsgBox "Tarih Format Dogru...", vbInformation, "Bilgi"
       
var:
    eom = Empty
    trh = Empty
    deger = Empty
    Erase tarih
    Exit Function

son:
    .SetFocus
    MsgBox "Hatali Tarih...", vbCritical, "Hata"
    Cancel = True
    Exit Function

enson:
    End With

End Function
Cevapla
#48
Eğer yazacağım kodu kullanacaksanız uğraşayım yoksa boşuna vakit harcamayayım.
Cevapla

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

Yorum yapmak için üye olmanız gerekiyor

ya da
Task