fastreportta sayıyı yazıya çevirme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
ALUCARD
Üye
Mesajlar: 1270
Kayıt: 27 Eyl 2003 10:12
Konum: Samsun
İletişim:

fastreportta sayıyı yazıya çevirme

Mesaj gönderen ALUCARD »

fastreportta sayıyı yazıya nasıl çevirebilirim

arkadaşlar bu konuda bi çalışması olan varsa yardım ederse cok sevinirim.
بِسْمِ اللهِ الرَّحْمنِ الرَّحِيمِ
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz

Erkan ÇAĞLAR
Kullanıcı avatarı
spiderman
Üye
Mesajlar: 70
Kayıt: 02 Ara 2005 03:17

Mesaj gönderen spiderman »

Selamlar,

Kod: Tümünü seç


if frReport1.FindObject('SayiIle')<>Nil Then
    frReport1.FindObject('SayiIle').Memo.Text:=SayiToYazi(frReport1.FindObject('SayiIle').Tag);
Fast Reportta yaziyi basmak istediginiz yere 1 tane memo koyun, adini SayiIle olarak degistirin. Tag'ina ise database'inizdeki tutar hanesini atin sanki memonun icine yazar gibi yani. Raporu yazmadan once yukardaki kodu calistirin. boylece SayiIle olan memo alaniniza tag da yazan degerin yazi hali gecer. yanliz tag'in string dondugune dikkat edin. yani

Kod: Tümünü seç

frReport1.FindObject('SayiIle').Memo.Text:=SayiToYazi(StrToFloat(frReport1.FindObject('SayiIle').Tag));
olarakta kullanabilirsiniz[/quote]
Kullanıcı avatarı
ALUCARD
Üye
Mesajlar: 1270
Kayıt: 27 Eyl 2003 10:12
Konum: Samsun
İletişim:

Mesaj gönderen ALUCARD »

hocam yanlış anşalıldım galiba ben
1979 sayısnı bindokuzyüzyetmişdokuz yapmak istiyorum

ve raporda bunun gibi onlarca alan var
بِسْمِ اللهِ الرَّحْمنِ الرَّحِيمِ
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz

Erkan ÇAĞLAR
Kullanıcı avatarı
spiderman
Üye
Mesajlar: 70
Kayıt: 02 Ara 2005 03:17

Mesaj gönderen spiderman »

hayir dogru anlasilmissin,

1979 rakkaminini nerde goremk istiyorsan oranin tag'ina bu rakkami veya database baglantisini atiyorsun. rakkami yaziya ceviren func. ile yukarda anlattigim sekilde yaparsan sorunsuz calisir. eger onlarca boyle hanen varsa for dongusu ile yapabilirsin. ben faturada bu yontemi kullaniyorum
Kullanıcı avatarı
ALUCARD
Üye
Mesajlar: 1270
Kayıt: 27 Eyl 2003 10:12
Konum: Samsun
İletişim:

Mesaj gönderen ALUCARD »

Kod: Tümünü seç

if frReport1.FindObject('SayiIle')<>Nil Then 
    frReport1.FindObject('SayiIle').Memo.Text:=SayiToYazi(frReport1.FindObject('SayiIle').Tag);
kodundaki memo alanın tanınmadığı yönünde hata alıyorum
بِسْمِ اللهِ الرَّحْمنِ الرَّحِيمِ
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz

Erkan ÇAĞLAR
Kullanıcı avatarı
spiderman
Üye
Mesajlar: 70
Kayıt: 02 Ara 2005 03:17

Mesaj gönderen spiderman »

Uses Kismina FR_View eklemelisin sanirim ama genede elinde bulunsun diye sana kendi uses'imi veriyorum.




FR_DSet, FR_DBSet, FR_Class,FR_DCtrl, FR_Rich, FR_OLE, ExtCtrls,
PsFR_E_WMF, PsFR_E_EMF, PsFR_E_BMP, PsFR_E_GIF, PsFR_E_Graphic,
PsFR_E_JPEG, PsFR_E_EXCEL, PsFR_E_RTF, PsFR_E_HTML, PsFR_E_Main,
PsFR_E_PDF, FR_Shape, FR_Chart, FR_ADODB, FR_BarC, FR_RRect, FR_Cross, FR_ChBox, FR_View,
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

Mesaj gönderen pro_imaj »

spiderman yazdı:rakkami yaziya ceviren func. ile yukarda anlattigim sekilde yaparsan sorunsuz calisir.
@spiderman Rakamı sayıya çeviren function'u yazmamışsınız yoksa benmi göremiyorum !!! :shock:
@ALUCARD hata almanın nedenide bu fonction'un sende olmaması. :!:

Kolay gelsin.
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
Kullanıcı avatarı
spiderman
Üye
Mesajlar: 70
Kayıt: 02 Ara 2005 03:17

Mesaj gönderen spiderman »

ALUCARD yazdı: kodundaki memo alanın tanınmadığı yönünde hata alıyorum
dedigi icin o cevabi yazdim. Rakkami yaziya ceviren delphi kodu vardir herkezde diye yazmadim, forumdada bulunabilir.

benim yazdigim kodda rakkam yaziya cevirme islemi delphi tarafindan yapiliyor fast report tarafindan degil
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

Mesaj gönderen pro_imaj »

spiderman yazdı: benim yazdigim kodda rakkam yaziya cevirme islemi delphi tarafindan yapiliyor fast report tarafindan degil
Değişen bişey yok fastreporttaki script dili ile pascal kodu delphideki gibi yazılabilir.

Kolay gelsin.
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Kod: Tümünü seç

if frReport1.FindObject('SayiIle')<>Nil Then
    frReport1.FindObject('SayiIle').Memo.Text:=SayiToYazi(frReport1.FindObject('SayiIle').Tag);
Yukarıda verilen formata uygun olarak delphi tarafta yazacağın fonksiyonu kullanabilirsin.. İstersen pascal script ile de yazabilirsin fakat hem sadece o formda kullanabilir hem de delphi ortamındaki kadar rahat olamayabilirsin. Genelde kullanılan yöntem bu şekildedir. :wink:

viewtopic.php?t=6823
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
ALUCARD
Üye
Mesajlar: 1270
Kayıt: 27 Eyl 2003 10:12
Konum: Samsun
İletişim:

Mesaj gönderen ALUCARD »

FAOsoft yazdı:

Kod: Tümünü seç

Function BirlerCevir(BirDeger:String):String;
Var
BirSonuc:String;
  Begin
Case BirDeger Of
'1': BirSonuc:='Bir';
'2': BirSonuc:='İki';
'3': BirSonuc:='Üç';
'4': BirSonuc:='Dört';
'5': BirSonuc:='Beş';
'6': BirSonuc:='Altı';
'7': BirSonuc:='Yedi';
'8': BirSonuc:='Sekiz';
'9': BirSonuc:='Dokuz';
'0': BirSonuc:='';
  End;
  Result:=BirSonuc;
    End;
Function OnlarCevir(OnDeger:String):String;
Var
OnSonuc:String;
  Begin
Case OnDeger Of
'1': OnSonuc:='On';
'2': OnSonuc:='Yirmi';
'3': OnSonuc:='Otuz';
'4': OnSonuc:='Kırk';
'5': OnSonuc:='Elli';
'6': OnSonuc:='Altmış';
'7': OnSonuc:='Yetmiş';
'8': OnSonuc:='Seksen';
'9': OnSonuc:='Doksan';
'0': OnSonuc:='';
  End;
  Result:=OnSonuc;
    End;
Function YuzlerCevir(YuzDeger:String):String;
Var
YuzSonuc:String;
  Begin
Case YuzDeger Of
'1': YuzSonuc:='Yüz';
'2': YuzSonuc:='İkiyüz';
'3': YuzSonuc:='Üçyüz';
'4': YuzSonuc:='DörtYüz';
'5': YuzSonuc:='Beşyüz';
'6': YuzSonuc:='Altıyüz';
'7': YuzSonuc:='Yediyüz';
'8': YuzSonuc:='Sekizyyüz';
'9': YuzSonuc:='Dokuzyüz';
'0': YuzSonuc:='';
  End;
  Result:=YuzSonuc;
    End;
Function BinlerCevir(BinDeger:String):String;
Var
BinSonuc:String;
  Begin
Case BinDeger Of
'1': BinSonuc:='Bin';
'2': BinSonuc:='İkibin';
'3': BinSonuc:='Üçbin';
'4': BinSonuc:='Dörtbin';
'5': BinSonuc:='Beşbin';
'6': BinSonuc:='Altıbin';
'7': BinSonuc:='Yedibin';
'8': BinSonuc:='Sekizybin';
'9': BinSonuc:='Dokuzbin';
'0': BinSonuc:='';
  End;
  Result:=BinSonuc;
    End;


Function Cevir(Deger:String):String;
Var
Sonuc:String;
uz:integer;
  Begin
  Sonuc:='';
uz:=Length(Deger);
if uz=4 then
Sonuc:=BinlerCevir(Copy(Deger,1,1))+ YuzlerCevir(Copy(Deger,2,1))+ OnlarCevir(Copy(Deger,3,1))+BirlerCevir(Copy(Deger,4,1));
if uz=2 then
Sonuc:= OnlarCevir(Copy(Deger,1,1))+BirlerCevir(Copy(Deger,2,1));
if uz=1 then
Sonuc:= BirlerCevir(Copy(Deger,1,1));
  Result:=Sonuc;
    End;


procedure MasterData1OnBeforePrint(Sender:TfrxComponent);
var
strem:string;
begin
strem:='';
strem:=Cevir(IntToStr(DayOf(<frxDBDataset1."TRH1">)))+' ';
strem:=strem+Cevir(IntToStr(MonthOf(<frxDBDataset1."TRH1">)))+' ';
strem:=strem+Cevir(IntToStr(YearOf(<frxDBDataset1."TRH1">)));
Memo3.Text:=strem;
end;

begin

end.
kendisine çok teşekkür ediorum

sorunu bu şekilde hallettim. :lol:
بِسْمِ اللهِ الرَّحْمنِ الرَّحِيمِ
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz

Erkan ÇAĞLAR
haznedarli
Üye
Mesajlar: 122
Kayıt: 31 Tem 2010 06:38

Re: fastreportta sayıyı yazıya çevirme

Mesaj gönderen haznedarli »

Function GeriyeKalaniYaziyaCevir(GeriyeKalan)
If GeriyeKalan <> 0 Then
KacYuz = Fix(GeriyeKalan / 100)
If Len(GeriyeKalan) > 2 Then
GeriyeKalan = Right(GeriyeKalan,2)
End If

If KacYuz <> 0 Then
GeriyeKalaniYaziyaCevir = GeriyeKalaniYaziyaCevir & GeriyeKalaniYaziyaCevir(KacYuz) & "YÜZ"
End If
If GeriyeKalan > 9 Then
OnlarBasamagi = Left(GeriyeKalan,1)
If OnlarBasamagi = 9 Then
GeriyeKalaniYaziyaCevir = GeriyeKalaniYaziyaCevir & "DOKSAN"
ElseIf OnlarBasamagi = 8 Then
GeriyeKalaniYaziyaCevir = GeriyeKalaniYaziyaCevir & "SEKSEN"
ElseIf OnlarBasamagi = 7 Then
GeriyeKalaniYaziyaCevir = GeriyeKalaniYaziyaCevir & "YETMIS"
ElseIf OnlarBasamagi = 6 Then
GeriyeKalaniYaziyaCevir = GeriyeKalaniYaziyaCevir & "ALTMIS"
ElseIf OnlarBasamagi = 5 Then
GeriyeKalaniYaziyaCevir = GeriyeKalaniYaziyaCevir & "ELLI"
ElseIf OnlarBasamagi = 4 Then
GeriyeKalaniYaziyaCevir = GeriyeKalaniYaziyaCevir & "KIRK"
ElseIf OnlarBasamagi = 3 Then
GeriyeKalaniYaziyaCevir = GeriyeKalaniYaziyaCevir & "OTUZ"
ElseIf OnlarBasamagi = 2 Then
GeriyeKalaniYaziyaCevir = GeriyeKalaniYaziyaCevir & "YIRMI"
ElseIf OnlarBasamagi = 1 Then
GeriyeKalaniYaziyaCevir = GeriyeKalaniYaziyaCevir & "ON"
End If
End If
BirlerBasamagi = Right(GeriyeKalan,1)
If BirlerBasamagi = 9 Then
GeriyeKalaniYaziyaCevir = GeriyeKalaniYaziyaCevir & "DOKUZ"
ElseIf BirlerBasamagi = 8 Then
GeriyeKalaniYaziyaCevir = GeriyeKalaniYaziyaCevir & "SEKIZ"
ElseIf BirlerBasamagi = 7 Then
GeriyeKalaniYaziyaCevir = GeriyeKalaniYaziyaCevir & "YEDI"
ElseIf BirlerBasamagi = 6 Then
GeriyeKalaniYaziyaCevir = GeriyeKalaniYaziyaCevir & "ALTI"
ElseIf BirlerBasamagi = 5 Then
GeriyeKalaniYaziyaCevir = GeriyeKalaniYaziyaCevir & "BES"
ElseIf BirlerBasamagi = 4 Then
GeriyeKalaniYaziyaCevir = GeriyeKalaniYaziyaCevir & "DÖRT"
ElseIf BirlerBasamagi = 3 Then
GeriyeKalaniYaziyaCevir = GeriyeKalaniYaziyaCevir & "ÜÇ"
ElseIf BirlerBasamagi = 2 Then
GeriyeKalaniYaziyaCevir = GeriyeKalaniYaziyaCevir & "IKI"
ElseIf BirlerBasamagi = 1 Then
GeriyeKalaniYaziyaCevir = GeriyeKalaniYaziyaCevir & "BIR"
End If
End If
End Function

Function YaziyaCevir(Sayi)
KacMilyar = Fix(Sayi/1000000000)
If Sayi > 9 Then
Sayi = Right(Sayi,9)
End If
KacMilyon = Fix(Sayi/1000000)
If Sayi > 6 Then
Sayi = Right(Sayi,6)
End If
KacBin = Fix(Sayi / 1000)
If Sayi > 3 Then
Sayi = Right(Sayi,3)
End If

GeriyeKalan = Sayi

If KacMilyar <> 0 Then
YaziyaCevir = YaziyaCevir & GeriyeKalaniYaziyaCevir(KacMilyar) & "MILYAR"
End If
If KacMilyon <> 0 Then
YaziyaCevir = YaziyaCevir & GeriyeKalaniYaziyaCevir(KacMilyon) & "MILYON"
End If
If KacBin <> 0 Then
YaziyaCevir = YaziyaCevir & GeriyeKalaniYaziyaCevir(KacBin) & "BIN"
End If
YaziyaCevir = YaziyaCevir & GeriyeKalaniYaziyaCevir(GeriyeKalan)
End Function


bunda ki hata nerede :?? yardımcı olabilecek bir arkadaş varmıdır..
Cevapla