8 Eylül 2012 Cumartesi

Raporlarda TL yazıyla Kullanımı (Rakamı Yazıya Çevirir)


Crystal Reports'ta Rakam gelen alanları yazıya çevirmek bazen işkence olabiliyor ama bununda kolayı var tabi ki yeni bir formul ekliyorsunuz ve aşağıdaki kodları yapıştırıyorsunuz. Burada tek yapmanız gereken Formul  eklerken Syntax'ı "Crystal Syntax"'tan "Basic Syntax"'a çevirmek olacaktır.

Dim SencerDegisken As Number
Dim SolTaraf As String
Dim SagTaraf As String
Dim SolYuzler As String
Dim SolOnlar As String
Dim SolOnlarbas As String
Dim SolBirler As String
Dim SolDüzeltme As String
Dim SagYuzler As String
Dim SagOnlar As String
Dim SagOnlarbas As String
Dim SagBirler As String
Dim SagDüzeltme As String

SencerDegisken = Sum ({@TOPLAM})


SolTaraf = ToWords(SencerDegisken)
SolTaraf = Left(SolTaraf, InStrRev(SolTaraf, " and")-1)

SagTaraf = ToWords(ToNumber(Mid(ToText(SencerDegisken), InStr(ToText(SencerDegisken), ",")+1,2)))
SagTaraf = Left(SagTaraf, InStrRev(SagTaraf, " and")-1)

SolYuzler = replace(replace(replace(replace(SolTaraf,"-"," "),"hundred","Yüz"),"thousand","Bin"),"milion","Milyon")
SolOnlar  = replace(replace(replace(replace(replace(replace(replace(replace(replace(SolYuzler,"eleven","On Bir"),"tweleve","On İki"),"thirteen","On Üç"),"fourteen","On Dört"),"fifteen","On Beş"),"sixteen","On Altı"),"seventeen","On Yedi"),"eighteen","On Sekiz"),"nineteen","On Dokuz")
SolOnlarbas = replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(SolOnlar,"zero","Sıfır"),"ten","On"),"twenty","Yirmi"),"thirty","Otuz"),"forty","Kırk"),"fifty","Elli"),"sixty","Altmış"),"seventy","Yetmiş"),"eighty","Seksen"),"ninety","Doksan")
SolBirler = replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(SolOnlarbas,"zero","Sıfır"),"one","Bir"),"two","İki"),"three","Üç"),"four","Dört"),"five","Beş"),"six","Altı"),"seven","Yedi"),"eight","Sekiz"),"nine","Dokuz")
SolDüzeltme = replace(SolBirler,"Bir Yüz","Yüz")

SagYuzler = replace(replace(replace(replace(SagTaraf,"-"," "),"hundred","Yüz"),"thousand","Bin"),"milion","Milyon")
SagOnlar  = replace(replace(replace(replace(replace(replace(replace(replace(replace(SagYuzler,"eleven","On Bir"),"tweleve","On İki"),"thirteen","On Üç"),"fourteen","On Dört"),"fifteen","On Beş"),"sixteen","On Altı"),"seventeen","On Yedi"),"eighteen","On Sekiz"),"nineteen","On Dokuz")
SagOnlarbas = replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(SagOnlar,"zero","Sıfır"),"ten","On"),"twenty","Yirmi"),"thirty","Otuz"),"forty","Kırk"),"fifty","Elli"),"sixty","Altmış"),"seventy","Yetmiş"),"eighty","Seksen"),"ninety","Doksan")
SagBirler = replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(SagOnlarbas,"zero","Sıfır"),"one","Bir"),"two","İki"),"three","Üç"),"four","Dört"),"five","Beş"),"six","Altı"),"seven","Yedi"),"eight","Sekiz"),"nine","Dokuz")
SagDüzeltme = replace(SagBirler,"Bir Yüz","Yüz")

formula = SolDüzeltme + " Lira  " + SagDüzeltme + " Kuruş"


2 yorum:

  1. Crystal Rapor ile verdiğiniz örnek çok başarılı fakat rapor çıktısı alırken 1500 rakamını girdiğimizde birbinbeşyüz olarak bize yansıtmakta bu hatayı nasıl düzeltebiliriz, başında bir ile birlikte gelen binli sayılarda sadece binbeşyüz yazmasını istiyorum.



    Cevaplarınız için şimdiden teşekkür ederim.

    YanıtlaSil
  2. Crytal reportta bu kodu düzeltmeler yaparak çalıştırdım ve kuruş kısmı hatalı çalıştı. .66 gibi rakamı 66 kuruş yazacağına 27 kuruş yazıyor. Bunu farklı bir şekilde sagtaraf değişkenlerinin hesaplandığı kısmı komple değiştirerek çözdüm. Bir iki kelime hatası var million tweleve gibi... Onlarında düzeltilmesi gerek. Ama onun haricinde güzel çalışıyor. Elinize sağlık.

    YanıtlaSil