Forum

Crystal Rapor Sayıy...
 
Bildirimler
Hepsini Temizle

Crystal Rapor Sayıyı Yazıya Çevirmek

4 Yazılar
3 Üyeler
0 Likes
415 Görüntüleme
(@Anonim)
Gönderiler: 0
Konu başlatıcı
 

Local stringvar array Birler := ["BİR", "İKİ", "ÜÇ", "DÖRT", "BEŞ", "ALTI", "YEDİ", "SEKİZ", "DOKUZ"];
Local stringvar array Onlar  := ["ON", "YİRMİ", "OTUZ", "KIRK", "ELLİ", "ALTMIŞ", "YETMİŞ", "SEKSEN", "DOKSAN"];
Local stringvar array Yuzler := ["BİN", "MİLYON", "MİLYAR", "TRİLYON", "TRİLYAR"];
 
Stringvar YaziIle;
numbervar deger;
numbervar deger000;
Numbervar Uzunluk;
Numbervar I;
Numbervar K;
Numbervar j;
stringvar ssayi;
Numbervar lSayi;
numbervar deneme:=1163.94;

 
sSayi := sSayi := CStr (abs(int(deneme)), 0 , "");
YaziIle := "";
Uzunluk := Len(sSayi);

For I := 1 To Uzunluk do
(
               deger := cdbl(Mid(sSayi, I, 1));
               J := Uzunluk - I + 1;
               K := J Mod 3 ;
               Select K
                      Case 1:
                            (
                            If deger <> 0 Then
                                YaziIle := YaziIle + Birler[deger];
                          
                            If J > 3 Then
                                   (
                                   K := J / 3;
                                   YaziIle := YaziIle + Yuzler[K];
                                   )
                            )
                      Case 2 :
                            If deger <> 0 Then
                               YaziIle := YaziIle + Onlar[deger]
                      Case 0 :
                            (
                            deger000 := cdbl(Mid(sSayi, I, 3));
                            If deger000 = 0 Then
                                I := I + 2;
                            //Else
                            If deger <> 0 and deger000 <> 0 Then
                                     If deger = 1 Then
                                         YaziIle := YaziIle + "YÜZ"
                                     Else
                                         YaziIle := YaziIle + Birler[deger] + "YÜZ"
                             );
);
YaziIle := YaziIle & "    TL    ";
 
lSayi := 100 * (deneme - round(deneme,0));
if lSayi  <  0 then
   lSayi := 100 - (-1 * lSayi);

sSayi := CSTR(lSayi, 0,"");
 
Uzunluk := Len(sSayi);

For I := 1 To Uzunluk do
(
               deger := cdbl(Mid(sSayi, I, 1));
               J := Uzunluk - I + 1;
               K := J Mod 3 ;
               Select K
                      Case 1:
                            (
                            If deger <> 0 Then
                                YaziIle := YaziIle + Birler[deger];
                          
                            If J > 3 Then
                                   (
                                   K := J / 3;
                                   YaziIle := YaziIle + Yuzler[K];
                                   )
                            )
                      Case 2 :
                            If deger <> 0 Then
                               YaziIle := YaziIle + Onlar[deger]
                      Case 0 :
                            (
                            deger000 := cdbl(Mid(sSayi, I, 3));
                            If deger000 = 0 Then
                                I := I + 2;
                            //Else
                            If deger <> 0 and deger000 <> 0 Then
                                     If deger = 1 Then
                                         YaziIle := YaziIle + "YÜZ"
                                     Else
                                         YaziIle := YaziIle + Birler[deger] + "YÜZ"
                             );
);

YaziIle := YaziIle & ""; 

arkadaşlar crystal raporda rakamı yazıya çevirmek için bu sitede  böyle
bir fonksiyon buldum fakat bu fonksiyonda 1500 rakamı çevireceği zaman
birbinbeşyüz olarak çeviriyor bu hatayı nasıl düzeltebilirim?

 
Gönderildi : 03/10/2011 15:07

(@ferhatkaratas)
Gönderiler: 100
Estimable Member
 

birbinbeşyüz ifadesi şu kod esnasında oluşuyor.

 

  If J > 3 Then
                                   (
                                   K := J / 3;
                                   YaziIle := YaziIle + Yuzler[K];
                                   )

 

dolayısla Yuzler[K]  dan önce Yazille eğer bir ise o satırı

 

                                   YaziIle := Yuzler[K];

 

şeklinde yazmanız çözüm olabilir.

 

Ferhat Karataş
fkaratas.com

 
Gönderildi : 12/10/2011 16:26

(@Anonim)
Gönderiler: 0
Konu başlatıcı
 

Ferhat Bey söylediğiniz gibi yaptım fakat yine değişen birşey olmadı başka yol veya başka çözümü var mıdır şimdiden teşekkür ederim

 
Gönderildi : 13/10/2011 13:45

(@AYDEMiROZAN)
Gönderiler: 2
New Member
 

Bulabildiğim tek kaynak burası olduğu için konuyu hortlatsamda ÇÖZÜM bulduğum için yazıyorum.

yukarıdaki ilk case 1 deki

If J > 3 Then
(
K := J / 3;
YaziIle := YaziIle + Yuzler[K];
)

kırmızı ile yazdığım yere şunu yazın ben sorunumu bu şekilde çözdüm.

(if deger = 1 then "" else yaziIle)

Anlamı: eğer 1 görürsen boş bırak sonrası için "İKİ" "ÜÇ" "DÖRT" yazmaya devam ediyor.

Yani son hali şu şekilde olacak. Parantezler dahil.

Case 1:
(
If deger <> 0 Then
YaziIle := YaziIle + Birler[deger];

If J > 3 Then
(
K := J / 3;
YaziIle := (if deger = 1 then "" else yaziIle) + Yuzler[K];
)
)
Case 2 :
If deger <> 0 Then
YaziIle := YaziIle + Onlar[deger]

Ben çok uğraştım ve ilk defa bir foruma yazıyorum. Çünkü başka yerde cevap yok.

 
Gönderildi : 13/02/2017 20:00

Paylaş: