Duyuruyu Kapat
Facebook Gözat
Twitter Gözat

access:ölçüt ifadesinde veri türü uyuşmazlığı

Konu, 'Veritabanları' kısmında savask tarafından paylaşıldı.

  1. savask

    savask Üye

    Kayıt:
    28 Şubat 2004
    Mesajlar:
    109
    Beğenilen Mesajlar:
    0
    Merhaba,
    bir tablodaki gün/ay/yıl şeklindeki tarih alanını sorguda yıl/ay/gün şekline çevirmem gerekiyor. artı bu alan boş bırakılabilir bir alan ve boşsa sorguda 0 (sıfır) görünmesi gerekiyor. bunun için aşağıdaki function'u hazırladım.

    Kod:
    Function donustur(tarih As String) As String
    
    If Not IsNull(tarih) Then
       
       yil = Mid(tarih, 7, 4)
       ay = Mid(tarih, 4, 2)
       gun = Mid(tarih, 1, 2)
       
       donustur = yil & ay & gun
       
    ElseIf IsNull(tarih) Then
        donustur = "0"
    End If
    hemen belirteyim ilk satırı Function donustur(tarih As Date) As String
    şeklinde de denedim olmadı. bu function'ı sorguda kullandığımda alan boşsa "ölçüt ifadesinde veri türü uyuşmazlığı" hatası veriyor. eğer alanı doldurup çalıştırırsam sorgu düzgün çalışıyor.
    tarih değeri alıp string değeri döndürdüğü için hata verse ilgili alanı doldurduğumda da hata vermesi gerekir diye düşünüyorum. öyleyse boş bıraktığım için bir problem oluşuyor sanırım. peki ben if ile null kontrolü yaptığım halde niye hataya düşüyor?
     
  2. acemi

    acemi Misafir

    Tarih tipindeki veriyi, string gibi islemeye calismissin.
     
  3. zuzuu

    zuzuu Aktif Üye

    Kayıt:
    26 Mayıs 2005
    Mesajlar:
    289
    Beğenilen Mesajlar:
    0
    eğer veritabındaki tarih alanınınızın veri tipi datetime ve veritabanınız MS-sql ise şu şekilde dönüşüm yapabilirsiniz:

    select convert(char(8),tarih,112) as tarih from tablom
     
  4. savask

    savask Üye

    Kayıt:
    28 Şubat 2004
    Mesajlar:
    109
    Beğenilen Mesajlar:
    0
    @zuzuu,
    denedim ama olmadı. "ifadede tanımlanmamış convert işlevi" dedi bana.

    @acemi,
    benimde bahsettiğim o. tarih alanında 04/02/2007 değeri varsa bana çok güzel 20070204 yapıyor bunu. yani "tarih tipini string gibi işliyorsun" demiyor. ama alan boşsa hata veriyor. alan boşsa 0 (sıfır) yazdırmasını nasıl sağlarım o lazım bana.
    teşekkürler...
     
  5. savask

    savask Üye

    Kayıt:
    28 Şubat 2004
    Mesajlar:
    109
    Beğenilen Mesajlar:
    0
    sql sorgumun select bölümündeki ilgili kısım,

    Kod:
    donustur(nz(personel.dogum_tarihi,0)) as DOĞUM,
    function ise,

    Kod:
    Function donustur(tarih As String) As String
     
     If tarih = "0" Then
          donustur = "0"
          Exit Function
     End If
     
       yil = Mid(tarih, 7, 4)
       ay = Mid(tarih, 4, 2)
       gun = Mid(tarih, 1, 2)
       
       donustur = yil & ay & gun
       
    End Function
    haline getirilerek problem aşılmıştır.
    ilginize teşekkür ederim...