Bulunan 1 den 5 - Toplam 5

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

  1. #1
    Ceviz Üyesi
    Üyelik Tarihi
    28-Şubat-2004
    Mesaj
    109

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

    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. #2
    acemi
    misafir

    Varsayılan

    Tarih tipindeki veriyi, string gibi islemeye calismissin.

  3. #3
    Ceviz Üyesi zuzuu Üyenin Avatarı
    Üyelik Tarihi
    26-Mayıs-2005
    Mesaj
    289

    Varsayılan

    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. #4
    Ceviz Üyesi
    Üyelik Tarihi
    28-Şubat-2004
    Mesaj
    109

    Varsayılan

    @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. #5
    Ceviz Üyesi
    Üyelik Tarihi
    28-Şubat-2004
    Mesaj
    109

    Varsayılan

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

Konu Bilgileri

Bu Konuya Gözatan Kullanıcılar

Şu anda 1 kullanıcı bu konuyu görüntülüyor. (0 kayıtlı ve 1 misafir)

Yer İmleri

Mesaj Yetkileriniz

  • Yeni konu açmaya yetkiniz yok
  • Cevap yazmaya yetkiniz yok
  • Eklenti yüklemeye yetkiniz yok
  • Mesajınızı düzeltmeye yetkiniz yok
  •