Merhaba,
herkese kolay gelsin ;
Hazırladığım projede bir Cari hesaba sıralı ve artan tarihli alacak senetleri oluşturuyor ve bunları gridde listeletiyorum..
Oluşturduğum senet sayısı kadar fastreporta da hazırladığım senetleri ayrı ayrı oluşturuyorum.. Buraya kadar bir sıkıntı yok..
Asıl sıkıntım senet miktarlarının fastreportta hazırladığım senet raporu üzerine ayrı ayrı yazıyla yazdırabilmek..
Aslında hazırlanılan bütün senetlerin miktarları aynı olsa yine bir sorun olamayacak..Fakat bazen müşterinin talebine bağlı olarak senet miktarları değişebiliyor.
Delphi kısmında sayıyı yazıya çeviren fonksiyonu kullanıyorum ama bunu fastreporttaki aynı memo alana ayrı ayrı aktaramadım..
Fast reportta Müşteri bilgilerini Masterbantta ,Senet bilgilerini ise detail bantta listeliyorum.
Senetler.ShowReport(true) demeden önce
TFrxMemoview(Senet.FindObject('Memo1')).text:= rakyazf(sayi,0); diyerek memo1 e aktardığım yazı fastreportta diğer senet miktarları değişik olan kayıtlarda değişmiyor.. Sayıyı yazıya çeviren fonsiyon ve procedureyi fast reporta mı yazmam ve örmeğin memo1 buna mı bağlamam lazım ? Nasıl ?
FastReportla ilgili forumda bir çok şey okudum ama bir sonuç yakalayamadım..
İlginiz için şimdiden teşekkür ederim..
Fast Report ve Sayıyı Yazıya Çevirme
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Re: Fast Report ve Sayıyı Yazıya Çevirme
s.a.
fastreportta sayıyı yazıya çeviren bir script hazırlayabilirsin.
veya tabloda calculated alan oluşturup buraya sayıyı yazı ile alırsın fastreporttada onu kullanırsın.
kolay gelsin.
fastreportta sayıyı yazıya çeviren bir script hazırlayabilirsin.
veya tabloda calculated alan oluşturup buraya sayıyı yazı ile alırsın fastreporttada onu kullanırsın.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
- White Rose
- Üye
- Mesajlar: 726
- Kayıt: 06 Tem 2005 09:41
- Konum: Güneyden
- İletişim:
Re: Fast Report ve Sayıyı Yazıya Çevirme
Rapor Senetlerinde yazıyla olan kısmı için bir değişken tanımlayın (örn: YAZIYLA)
sonra program kısmında fast reportun getvalue olayında bu değişkene fonksiyondan gelen yazı değerini atayın
procedure TForm1.FastRaport1GetValue(const ParName: String; var ParValue: Variant);
begin
If ParName='YAZIYLA' then // değişken kontrolü
Parvalue:=Yaziyla(Senetler.SenetTutari.AsString);
end;
sonra program kısmında fast reportun getvalue olayında bu değişkene fonksiyondan gelen yazı değerini atayın
procedure TForm1.FastRaport1GetValue(const ParName: String; var ParValue: Variant);
begin
If ParName='YAZIYLA' then // değişken kontrolü
Parvalue:=Yaziyla(Senetler.SenetTutari.AsString);
end;
-
- Üye
- Mesajlar: 24
- Kayıt: 23 Eki 2006 06:33
Re: Fast Report ve Sayıyı Yazıya Çevirme
Daha önce script hiç yazmadım maalesef;
Yol gösterebilirseniz sevinirim..
Teşekkürler..
Yol gösterebilirseniz sevinirim..
Teşekkürler..
-
- Üye
- Mesajlar: 24
- Kayıt: 23 Eki 2006 06:33
Sanırım Sorunu Şöyle Çözeceğim
Senetleri listelettirdiğim dataset e bir calculated alan tanımlayıp buraya delphi kısmında kullandığım yazıya dönüştür fonksiyonunun sonucunu aktaracağım.
Buradaki alanı da otomatik rapor daki datasetten çekip yazdırmış olacağım..
Bir deneyelim bakalım nasıl olacak...
Buradaki alanı da otomatik rapor daki datasetten çekip yazdırmış olacağım..
Bir deneyelim bakalım nasıl olacak...
-
- Üye
- Mesajlar: 122
- Kayıt: 31 Tem 2010 06:38
Re: Fast Report ve Sayıyı Yazıya Çevirme
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 & "YETMİŞ"
ElseIf OnlarBasamagi = 6 Then
GeriyeKalaniYaziyaCevir = GeriyeKalaniYaziyaCevir & "ALTMIŞ"
ElseIf OnlarBasamagi = 5 Then
GeriyeKalaniYaziyaCevir = GeriyeKalaniYaziyaCevir & "ELLİ"
ElseIf OnlarBasamagi = 4 Then
GeriyeKalaniYaziyaCevir = GeriyeKalaniYaziyaCevir & "KIRK"
ElseIf OnlarBasamagi = 3 Then
GeriyeKalaniYaziyaCevir = GeriyeKalaniYaziyaCevir & "OTUZ"
ElseIf OnlarBasamagi = 2 Then
GeriyeKalaniYaziyaCevir = GeriyeKalaniYaziyaCevir & "YİRMİ"
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 & "SEKİZ"
ElseIf BirlerBasamagi = 7 Then
GeriyeKalaniYaziyaCevir = GeriyeKalaniYaziyaCevir & "YEDİ"
ElseIf BirlerBasamagi = 6 Then
GeriyeKalaniYaziyaCevir = GeriyeKalaniYaziyaCevir & "ALTI"
ElseIf BirlerBasamagi = 5 Then
GeriyeKalaniYaziyaCevir = GeriyeKalaniYaziyaCevir & "BEŞ"
ElseIf BirlerBasamagi = 4 Then
GeriyeKalaniYaziyaCevir = GeriyeKalaniYaziyaCevir & "DÖRT"
ElseIf BirlerBasamagi = 3 Then
GeriyeKalaniYaziyaCevir = GeriyeKalaniYaziyaCevir & "ÜÇ"
ElseIf BirlerBasamagi = 2 Then
GeriyeKalaniYaziyaCevir = GeriyeKalaniYaziyaCevir & "İKİ"
ElseIf BirlerBasamagi = 1 Then
GeriyeKalaniYaziyaCevir = GeriyeKalaniYaziyaCevir & "BİR"
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) & "MİLYAR"
End If
If KacMilyon <> 0 Then
YaziyaCevir = YaziyaCevir & GeriyeKalaniYaziyaCevir(KacMilyon) & "MİLYON"
End If
If KacBin <> 0 Then
YaziyaCevir = YaziyaCevir & GeriyeKalaniYaziyaCevir(KacBin) & "BİN"
End If
YaziyaCevir = YaziyaCevir & GeriyeKalaniYaziyaCevir(GeriyeKalan)
End Function
bu çeviri yapıyor ama bir hata var yardımcı olabilecek arkadaş varmıdır.
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 & "YETMİŞ"
ElseIf OnlarBasamagi = 6 Then
GeriyeKalaniYaziyaCevir = GeriyeKalaniYaziyaCevir & "ALTMIŞ"
ElseIf OnlarBasamagi = 5 Then
GeriyeKalaniYaziyaCevir = GeriyeKalaniYaziyaCevir & "ELLİ"
ElseIf OnlarBasamagi = 4 Then
GeriyeKalaniYaziyaCevir = GeriyeKalaniYaziyaCevir & "KIRK"
ElseIf OnlarBasamagi = 3 Then
GeriyeKalaniYaziyaCevir = GeriyeKalaniYaziyaCevir & "OTUZ"
ElseIf OnlarBasamagi = 2 Then
GeriyeKalaniYaziyaCevir = GeriyeKalaniYaziyaCevir & "YİRMİ"
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 & "SEKİZ"
ElseIf BirlerBasamagi = 7 Then
GeriyeKalaniYaziyaCevir = GeriyeKalaniYaziyaCevir & "YEDİ"
ElseIf BirlerBasamagi = 6 Then
GeriyeKalaniYaziyaCevir = GeriyeKalaniYaziyaCevir & "ALTI"
ElseIf BirlerBasamagi = 5 Then
GeriyeKalaniYaziyaCevir = GeriyeKalaniYaziyaCevir & "BEŞ"
ElseIf BirlerBasamagi = 4 Then
GeriyeKalaniYaziyaCevir = GeriyeKalaniYaziyaCevir & "DÖRT"
ElseIf BirlerBasamagi = 3 Then
GeriyeKalaniYaziyaCevir = GeriyeKalaniYaziyaCevir & "ÜÇ"
ElseIf BirlerBasamagi = 2 Then
GeriyeKalaniYaziyaCevir = GeriyeKalaniYaziyaCevir & "İKİ"
ElseIf BirlerBasamagi = 1 Then
GeriyeKalaniYaziyaCevir = GeriyeKalaniYaziyaCevir & "BİR"
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) & "MİLYAR"
End If
If KacMilyon <> 0 Then
YaziyaCevir = YaziyaCevir & GeriyeKalaniYaziyaCevir(KacMilyon) & "MİLYON"
End If
If KacBin <> 0 Then
YaziyaCevir = YaziyaCevir & GeriyeKalaniYaziyaCevir(KacBin) & "BİN"
End If
YaziyaCevir = YaziyaCevir & GeriyeKalaniYaziyaCevir(GeriyeKalan)
End Function
bu çeviri yapıyor ama bir hata var yardımcı olabilecek arkadaş varmıdır.