Forum

Para Birimi yazı il...
 
Bildirimler
Hepsini Temizle

Para Birimi yazı ile yazdırmak.

11 Yazılar
7 Üyeler
0 Reactions
2,843 Görüntüleme
(@tulay)
Gönderiler: 61
Trusted Member
Konu başlatıcı
 

Merhabalar ;

c# kullanarak crystal reportta bir fatura raporu yapmam lazım. Bu raporun en altına faturanın tutarını yazı ile yazdırmam gerekiyor. Hepimiz biliriz YALNIZ ile başlayan satırdan bahsediyorum.

Yardımcı olanlara şimdiden teşekkür ederim.

 
Gönderildi : 12/01/2010 18:01

(@AhmetASLAN)
Gönderiler: 32
Eminent Member
 

Merhaba Bununla ilgili vb.net teki bu function işine yarar. C# a çevirmede problem yaşarsan çevirebiliriz.



YTL olarak Rakamı Yazıya Çeviren Fonksyon


 


Function Yaziyla(Sayi)
Dim birler$(10), onlar$(10), basamak$(5)
Dim virgul%, cevap$, virgul2$, say, x%, i%, uclu$, y%, o%, B%, yazi$
    birler$(0) = "":        birler$(1) = "Bir"
    birler$(2) = "İki":     birler$(3) = "Üç"
    birler$(4) = "Dört":    birler$(5) = "Beş"
    birler$(6) = "Altı":    birler$(7) = "Yedi"
    birler$(8) = "Sekiz":   birler$(9) = "Dokuz"
   
    onlar$(0) = "":         onlar$(1) = "On"
    onlar$(2) = "Yirmi":    onlar$(3) = "Otuz"
    onlar$(4) = "Kırk":     onlar$(5) = "Elli"
    onlar$(6) = "Altmış":   onlar$(7) = "Yetmiş"
    onlar$(8) = "Seksen":   onlar$(9) = "Doksan"
   
    basamak$(1) = "":       basamak$(2) = "Bin"
    basamak$(3) = "Milyon": basamak$(4) = "Milyar"
    basamak$(5) = "Trilyon"
   
    virgul2$ = "": cevap$ = "":


    say = Sayi
    virgul% = InStr(1, say, ".")
    If virgul% Then
        say = Right$(say, Len(say) - virgul%)
        GoSub cevir


        virgul2$ = cevap$
        cevap$ = ""
       
        say = Sayi
        say = Left(say, virgul% - 1)
    End If
    GoSub cevir
   
    If (Trim(cevap$) = "") And Trim(virgul2$) = "" Then
        Yaziyla = ""
    ElseIf Trim(virgul2$) = "" Then
        Yaziyla = "Yalnız" & cevap$ & "TL."
    ElseIf Trim(cevap$) = "" Then
        Yaziyla = "Yalnız" & virgul2$ & "Kr."
    Else
        Yaziyla = "Yalnız" & cevap$ & "TL" & virgul2$ & "Kr."
    End If
   
Exit Function


cevir:
     x% = Len(say)
     say = String$(3 - (x% - Int(x% / 3) * 3), 48) + say
     x% = Len(say) / 3
     For i% = 1 To x%
            uclu$ = Mid$(say, Len(say) - i% * 3 + 1, 3)
            y% = Val(Mid$(uclu$, 1, 1))
            o% = Val(Mid$(uclu$, 2, 1))
            B% = Val(Mid$(uclu$, 3, 1))


            yazi$ = ""
            If y% <> 0 Then
                If y% > 1 Then yazi$ = birler$(y%)
                yazi$ = yazi$ + "Yüz"
            End If
           
            yazi$ = yazi$ + onlar$(o%) + birler$(B%)


            If yazi$ <> "" Then
                If LCase(yazi$) = "bir" And i% = 2 Then yazi$ = ""
                cevap$ = yazi$ + basamak$(i%) + cevap$
            End If
     Next i%
     Return
End Function
 
 

 
Gönderildi : 13/01/2010 12:24

(@ismailOZER)
Gönderiler: 9
Active Member
 

Size yıllar önce yazdığım slq sp yi vereyim.

Örnek kullanım

declare @HKelimeler varchar(100)
execute [kslRakamdanKelimeler_sp] 2032340, @HKelimeler out
Select @HKelimeler

 

----------------------------------------------------------------------------------------------------
     IkiMilyonOtuzIkiBinÜçYuzKirk 

(1 row(s) affected)

 

 

 

ALTER PROCEDURE [dbo].[kslRakamdanKelimeler_sp] @Sayi as varchar(100),@HKelimeler as varchar(100) OUTPUT
/*
Written by :ismail özer
Date:14.06.2005
*/
AS
DECLARE
            @FlagHata as int,
            @rakamla as varchar (100)
SELECT @FlagHata = 0
SELECT @rakamla = ''
--SELECT @Sayi = '1215544'

CREATE TABLE #v
    (ID  int,
      Deger  varchar (10)
      )
CREATE TABLE #c
    (ID  int,
      Deger  varchar (10)
      )

CREATE TABLE #b
    (ID  int,
      Deger  varchar (10)
      )
insert into #b (ID,Deger)
    values      (0 ,' ')
insert into #b (ID,Deger)
    values      (1 ,'Bir')
insert into #b (ID,Deger)
    values      (2 ,'İki')
insert into #b (ID,Deger)
    values      (3 ,'Üç')
insert into #b (ID,Deger)
    values      (4 ,'Dört')
insert into #b (ID,Deger)
    values      (5 ,'Bes')
insert into #b (ID,Deger)
    values      (6 ,'Alti')
insert into #b (ID,Deger)
    values      (7 ,'Yedi')
insert into #b (ID,Deger)
    values      (8 ,'Sekiz')
insert into #b (ID,Deger)
    values      (9 ,'Dokuz')

CREATE TABLE #y
    (ID  int,
      Deger  varchar (10)
      )
insert into #y  (ID,Deger)
    values      (0 ,' ')
insert into #y (ID,Deger)
    values      (1 ,'On')
insert into #y (ID,Deger)
    values      (2 ,'Yirmi')
insert into #y (ID,Deger)
    values      (3 ,'Otuz')
insert into #y (ID,Deger)
    values      (4 ,'Kirk')
insert into #y (ID,Deger)
    values      (5 ,'Elli')
insert into #y (ID,Deger)
    values      (6 ,'Altmis')
insert into #y (ID,Deger)
    values      (7 ,'Yetmis')
insert into #y (ID,Deger)
    values      (8 ,'Seksen')
insert into #y (ID,Deger)
    values      (9 ,'Doksan')

CREATE TABLE #m
    (ID  int,
      Deger  varchar (10)
      )
insert into #m (ID,Deger)
    values      (0 ,'Tirilyon')
insert into #m (ID,Deger)
    values      (1 ,'Milyar')
insert into #m (ID,Deger)
    values      (2 ,'Milyon')
insert into #m (ID,Deger)
    values      (3 ,'Bin')
insert into #m (ID,Deger)
    values      (4 ,' ')

       

Declare     @a as varchar (15),
            @pozitif as int,
            @x as int

SELECT @a = LTrim(@Sayi)

IF Left(@a,1) = ' '
 SELECT @pozitif = 1
ELSE
 SELECT @pozitif = 0
    --SELECT @a = RIGHT(@a , LEN(@a) - 1 )
    SELECT @x = 1
    WHILE @x <= LEN(@a)
    BEGIN
     

     
         If (Ascii(SubString(@a, @x, 1)) > Ascii('9')) Or (Ascii(Substring(@a, @x, 1)) < Ascii('0'))
        BEGIN
              print 'Hata'
            SELECT @FlagHata = 1
        END -- end if
     SELECT @x = @x + 1
    END -- end while

    If Len(@a) > 15
        SELECT @FlagHata = 1
print @a
    SELECT @a = SubString('000000000000000',1,15 - Len(@a)) + @a
print @a
---------------------------------------------------------
    SELECT @x = 1
        WHILE @x <= 15 -- wa
        BEGIN
           
            insert into #v (ID,Deger)
                SELECT      @x ,substring(@a,@x,1)

            SELECT @x = @x + 1           
        END --end while wa
---------------------------------------------------------

    Declare @s as varchar (100),
                @e as varchar(100)
    SELECT @s = '' , @e = ''

---------------------------------------------------------
    SELECT @x = 0
        WHILE @x <= 4
        BEGIN
            DELETE FROM #c
            insert into #c (ID,Deger)
                        SELECT 1,Deger FROM #v WHERE ID = (@x * 3) + 1
            insert into #c (ID,Deger)
                        SELECT 2,Deger FROM #v WHERE ID = (@x * 3) + 2
            insert into #c (ID,Deger)
                        SELECT 3,Deger FROM #v WHERE ID = (@x * 3) + 3
            IF (SELECT deger FROM #c  WHERE ID = 1) = '0'
            SELECT @e = ''
            ELSE
            IF (SELECT deger FROM #c WHERE ID = 1) = '1'
            SELECT @e = 'Yuz'
            ELSE
            SELECT @e = (SELECT Deger FROM #b WHERE ID =
                                            (SELECT Deger FROM #c WHERE ID = 1) ) + 'Yuz'
print @e + '        ddddddddd'           
            SELECT @e = @e + (SELECT Deger FROM #y WHERE ID =
                                            (SELECT Deger FROM #c WHERE ID = 2) ) +
            (SELECT Deger FROM #b WHERE ID =
                                                        (SELECT Deger FROM #c WHERE ID = 3) ) 
print @e + '        ddddddddd'

            If @e <> ''
            SELECT @e = @e + (SELECT Deger FROM #m WHERE ID = @x)  

            If (@x = 3) And (@e = 'BirBin')
            SELECT @e = 'Bin'
            SELECT @s = @s + @e

           
            SELECT @x = @x + 1
            SELECT @rakamla = @rakamla + @e

        END
print @rakamla + '        ------------------------'
---------------------------------------------------------

        If @s = ''
            SELECT @s = 'Sıfır'
        If @pozitif = 0
        SELECT @s = 'Eksi' + @s
 

--SELECT * from #c

DROP TABLE #b
DROP TABLE #y
DROP TABLE #m
DROP TABLE #v
DROP TABLE #c

SELECT @HKelimeler = @rakamla
 

 
Gönderildi : 10/02/2010 23:08

(@ismailOZER)
Gönderiler: 9
Active Member
 

Arkadaşlar yazmış olduğumuz bu kodların içirisinde written by kısmını değiştirmeniz durumunda hakkımı helal etmem ona göre. Bu kodları ticari (commercial use is forbidden. Please contact me or site manager to use) amaçlı kullanımlarınızda lütfen bilgi veriniz.

İyi çalışmalar.

 
Gönderildi : 10/02/2010 23:13

(@ismailOZER)
Gönderiler: 9
Active Member
 

Arkadaşlar yazmış olduğumuz bu kodların içirisinde written by kısmını değiştirmeniz durumunda hakkımı helal etmem ona göre. Bu kodları ticari (commercialy use is forbidden. Please contact me or site manager to use) amaçlı kullanımlarınızda lütfen bilgi veriniz.

İyi çalışmalar.

 
Gönderildi : 10/02/2010 23:14

(@orhanakdogan)
Gönderiler: 311
Reputable Member
 

Merhabalar,
Crstall Report da yeni birformül oluştur (adınıda yaziile yap misal),

içeriğine aşağıda kodları yapıştır,

tek yapmanız gereken formüldeki tutar geçen yerleri kendi  toplam fieldinin adı ile değiştirmek

, sonra bu formulü forma bırak hepsi bu. ticari micari her türlü kullanabilirsiniz 😀

 

//Formül içerisinde {tabloadi.Toplam} görülen yerlere
//form içerisinde yazı ile yazdırılmak istenen field eklenilecek.

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;

 
sSayi := sSayi := CStr (abs(int({tabloadi.Toplam})), 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 * ({tabloadi.Toplam} - round({tabloadi.Toplam},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 & ".kr.";

 
Gönderildi : 11/02/2010 00:03

(@tulay)
Gönderiler: 61
Trusted Member
Konu başlatıcı
 

Teşekkürler Orhan Bey,

formülünüz işime yaradı.

 
Gönderildi : 21/04/2010 18:06

(@Anonim)
Gönderiler: 0
 

Arkadaşlar bunun reporting tools için olanı var mı

 
Gönderildi : 07/03/2011 17:56

(@Anonim)
Gönderiler: 0
 

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.

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

(@VOLKANTUBEK)
Gönderiler: 1
New Member
 

kolay gelsin kodları kopyalayıp yapıştırdım ama "case" hatası veriyor. 

bununla ilgili yapmam gereken bi değişiklik varmı acaba.

 
Gönderildi : 11/11/2015 16:27

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

Orhan Beye teşekkür ederim.

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

Paylaş: