FastReport yazıya çevirme
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
FastReport yazıya çevirme
Herkese Merhaba;
Fast reporta fastreport diyalog kutusundan parasal değer gönderiyorum. Bu değeri nasıl yazıya çavirebilirim.
(Parasal değeri delphiden göndermiyorum. Fastreportun kendi diyalog penceresinden gönderiyorum)
İyi günler.
Fast reporta fastreport diyalog kutusundan parasal değer gönderiyorum. Bu değeri nasıl yazıya çavirebilirim.
(Parasal değeri delphiden göndermiyorum. Fastreportun kendi diyalog penceresinden gönderiyorum)
İyi günler.
Re: FastReport yazıya çevirme
FastScript ile bir procedure yazıp gösterebilirsin ya da Delphiden Fastreport içine parametre ile yazı şeklinde gönderebilirsin.
Re: FastReport yazıya çevirme
Hocam script yazmayı bilmiyorum. Delphi içinden gönderebilirim ama iş baya uzuyor. Çünkü fastreport diyalogdan gönderdiğim epey bi veri var.orhancc yazdı:FastScript ile bir procedure yazıp gösterebilirsin ya da Delphiden Fastreport içine parametre ile yazı şeklinde gönderebilirsin.
Re: FastReport yazıya çevirme
Sorum hala güncel.
Bir yöntemini bulamadım. Valla kırk çeşidini denedim, fastreportun kendi diyalog kutusundan gönderdiğim rakamı yazıya çeviremiyorum.
Bir yöntemini bulamadım. Valla kırk çeşidini denedim, fastreportun kendi diyalog kutusundan gönderdiğim rakamı yazıya çeviremiyorum.
- sabanakman
- Kıdemli Üye
- Mesajlar: 3077
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Re: FastReport yazıya çevirme
Fast Report üzerinde kullanılacak Bileşen - Fonksiyon eklemeyi araştırın veya Fast Script üzerinde çalışın. Bu noktadan sonrası, çalışma gerektirdiği için bu araştırmayı ve çalışmayı sizin yerine başkasının yapmasını beklemek biraz abes olacaktır. Belli ki sorunuz üzerinde çalışan birisi henüz ya olmamış veya sorunuzu okumamış olabilir. Soru uzun süredir güncel olduğu için iş artık kolları sıvamanıza bakıyor.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
- sabanakman
- Kıdemli Üye
- Mesajlar: 3077
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Re: FastReport yazıya çevirme
Yine de dayanamadım, balığı kendim tutarak sunayım . FastReport kod bloğunda verdiğim fonksiyonları yazarsanız mesele hallolacaktır.Bu fonksiyonu bizzat bir raporda denedim ve frxMemo içerisine "[RakamOku(125)]" yazarak çalıştırdım, sonuç YüzYirmiBeş şeklinde geldi. İyi çalışmalar.
Kod: Tümünü seç
function Basamak(const i:Int):String;
begin
case i of
1:Result:='Bin';
2:Result:='Milyon';
3:Result:='Milyar';
4:Result:='Trilyon';
5:Result:='Katrilyon';
6:Result:='Kentrilyon';
else
Result:='';
end;
end;
function Onlar(const i:Int):String;
begin
case i of
1:Result:='On';
2:Result:='Yirmi';
3:Result:='Otuz';
4:Result:='Kırk';
5:Result:='Elli';
6:Result:='Altmış';
7:Result:='Yetmiş';
8:Result:='Seksen';
9:Result:='Doksan';
else
Result:='';
end;
end;
function Birler(const i:Integer):String;
begin
case i of
1:Result:='Bir';
2:Result:='İki';
3:Result:='Üç';
4:Result:='Dört';
5:Result:='Beş';
6:Result:='Altı';
7:Result:='Yedi';
8:Result:='Sekiz';
9:Result:='Dokuz';
else
Result:='';
end;
end;
function RakamOku(Sayi:Integer):String;
{Sayi yi Türkçe okunacak şekilde yazı üretir...................................}
const n=9;
var i:Byte; UcHane:Word; Yed,UcluHane:String; HangiBasamak:Byte;
Negatif,BasamakYaz:Boolean;
function Modu(var Sayisi:Word):Byte;
begin
Result:=Sayisi mod 10;
Sayisi:=Sayisi div 10;
end;
begin
if Sayi=0 then
Result:='Sıfır'
else begin
Negatif:=Sayi<0;
if Negatif then Sayi:=-Sayi;
Result:='';
HangiBasamak:=0;
while Sayi>0 do begin
UcHane:=Sayi mod 1000; Sayi:=Sayi div 1000;
BasamakYaz:=UcHane>0;
repeat
UcluHane:='';
if ((HangiBasamak=1) and (UcHane=1)) then Break;//sadece bin yazılacaksa
i:=Modu(UcHane); UcluHane:=Birler(i); //3 hanenin 1. si
i:=Modu(UcHane); UcluHane:=Onlar(i)+UcluHane; //3 hanenin 2. si
i:=Modu(UcHane);
if i>0 then Yed:='Yüz' else Yed:='';
if i>1 then Yed:=Birler(i)+Yed;
UcluHane:=Yed+UcluHane;//3 hanenin 3. sü
until True;
if BasamakYaz then Result:=UcluHane+Basamak(HangiBasamak)+Result;
inc(HangiBasamak);
end;
if Negatif then Result:='Eksi'+Result
else //Delete(Result,1,1);
end;
end;
begin
end.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
Re: FastReport yazıya çevirme
Hocam ilginiz için teşekkür ederim.
Ama isteğim hazır kod değil (balık tutmayı sevmem ama bilmem gerektiğini düşünüyorum ), istediğimi tam anlatamadım galiba.
Fastreport un kendi diyalog penceresinden aldığım bilgiyi yazdırmak istiyorum.
Bir rapor hazırladım birde diyalog formu bu formda bir adet frxedit var (ikisinide fastreportta yaptım) rapor göster dediğimde bu diyalog geliyor. Ben bu edite yazdığım rakamın yazılmasını istiyorum ama bir türlü beceremedim. Daha doğrusu editteki rakamı almayı beceremedim.
Mesela sizin kodunuz üzerinden
yapınca geçersiz işlem gösteriyor.
yazınca sorun yok ama diyalog kutusundan parametre gönderemiyorum.
Fastreport diyalogda ki butonun kliğine yazdım yine olmadı.
Ama isteğim hazır kod değil (balık tutmayı sevmem ama bilmem gerektiğini düşünüyorum ), istediğimi tam anlatamadım galiba.
Fastreport un kendi diyalog penceresinden aldığım bilgiyi yazdırmak istiyorum.
Bir rapor hazırladım birde diyalog formu bu formda bir adet frxedit var (ikisinide fastreportta yaptım) rapor göster dediğimde bu diyalog geliyor. Ben bu edite yazdığım rakamın yazılmasını istiyorum ama bir türlü beceremedim. Daha doğrusu editteki rakamı almayı beceremedim.
Mesela sizin kodunuz üzerinden
Kod: Tümünü seç
[rakamyaz(edit1.text)]
Kod: Tümünü seç
[rakamyaz(125)]
Fastreport diyalogda ki butonun kliğine
Kod: Tümünü seç
memo26.text:=edit1.text;
- sabanakman
- Kıdemli Üye
- Mesajlar: 3077
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Re: FastReport yazıya çevirme
Tip yüzünden veya nesne ismi ve özelliklerinde hatalı değer yüzünden sorun çıkıyor olabilir . Zaten gelen hata mesajı bunu size söylüyor olmalı. Hata mesajları genel olarak üstünde durulması gereken en önemli noktanın altını çizer. (Hata mesajı yoksa bile) Sorunun ne olduğu belirtilmediği için bir fikir beyan etmek imkansız.
Buyrun size balık ..:Konu ile alakalı yapmış olduğum örnek çalışma dosya olarak ekte var.
Buyrun size balık ..:
Kod: Tümünü seç
[RakamOku(StrToInt(Edit1.Text))]
- Dosya ekleri
-
- Deneme.rar
- Deneme.fr3 isimli raporda uygulamalı örneği
- (1.46 KiB) 251 kere indirildi
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
Re: FastReport yazıya çevirme
Hocam ilginiz için teşekkür ederim.
Bazen insan kör olabiliyor demek ki
[RakamOku(StrToInt([Edit1.Text]))]
Yaptığım denemelerin tamamında yukarıdaki hatayı yapmışım (hemde kaç gündür) ...
Tekrar teşekkür ederim.
Bazen insan kör olabiliyor demek ki
[RakamOku(StrToInt([Edit1.Text]))]
Yaptığım denemelerin tamamında yukarıdaki hatayı yapmışım (hemde kaç gündür) ...
Tekrar teşekkür ederim.
Re: FastReport yazıya çevirme
Merhaba biraz eski bir konu fakat benim de bir sorum olacak;
data dan çağırdığım bedeli yazıya dökmeye çalışıyorum fakat hata alıyorum.
[RakamOku(StrToInt([frxDBDataset1."bedel"]))]
Sürekli söz dizimi hatası alıyorum.
hatayı nerede yapıyorum bulamadım. Teşekkür ederim.
data dan çağırdığım bedeli yazıya dökmeye çalışıyorum fakat hata alıyorum.
[RakamOku(StrToInt([frxDBDataset1."bedel"]))]
Sürekli söz dizimi hatası alıyorum.
hatayı nerede yapıyorum bulamadım. Teşekkür ederim.
-
- Üye
- Mesajlar: 254
- Kayıt: 16 Şub 2004 06:12
- Konum: istanbul
Re: FastReport yazıya çevirme
Kod: Tümünü seç
Function SayiYaziKurus(Rakam: Extended; ParaBirimi: String; KurusBirimi: String;Ondalik:Integer): string;
var
Asil, Kurus: Extended;
Say, Onda: Integer;
Function SayiYazi(Sayi: Extended): String;
Const
Yuzler: Array[1..3,0..9] of String=(
('','Yüz','İkiYüz','ÜçYüz','DörtYüz','BeşYüz','AltıYüz','YediYüz','SekizYüz','DokuzYüz'),
('','On','Yirmi','Otuz','Kırk','Elli','Altmış','Yetmiş','Seksen','Doksan'),
('','Bir','İki','Üç','Dört','Beş','Altı','Yedi','Sekiz','Dokuz'));
Binler: Array[1..8] of String=
('KatTrilyar','Trilyar','KatTrilyon','Trilyon','Milyar','Milyon','Bin','');
Var
FloR: TFloatRec;
FloV: TFloatValue;
i, y, z: Integer;
Parca : String;
ASt: String[24];
EkSt: String[26];
AraSonuc, Sonuc: String;
n, hane: Integer;
Begin
Sonuc:='';
FloV:= fvExtended;
FloatToDecimal(FloR,Sayi,FloV,18,0);
ASt:=FloR.Digits;
n:=length(ASt);
if FloR.Exponent<>Length(ASt) then
begin
EkSt:='';
FillChar(EkSt,FloR.Exponent-n+1,'0');
EkSt[0]:=Chr(FloR.Exponent-n);
ASt:=ASt+EkSt;
end;
n:=Length(ASt);
if n<24 then
begin
EkSt:='';
FillChar(EkSt,24-n+1,'0');
EkSt[0]:=Chr(24-n);
ASt:=EkSt+ASt;
end;
n:=Length(ASt);
i:=1;
hane:=1;
while i<n do
begin
Parca:=Copy(ASt,i,3);
AraSonuc:='';
for y:=1 to 3 do
begin
z:=StrToInt(Copy(Parca,y,1));
AraSonuc:=AraSonuc+Yuzler[y,z];
end;
if AraSonuc<>'' then AraSonuc:=AraSonuc+Binler[hane];
if AraSonuc='BirBin' then AraSonuc:='Bin';
i:=i+3;
Inc(hane);
Sonuc:=Sonuc+AraSonuc;
end;
SayiYazi:=Sonuc;
end;
begin
if Ondalik > 0 then
begin
Onda := 1;
for say := 1 to Ondalik do
begin
Onda := 10*Onda;
end;
end;
Asil:= int(Rakam);
Kurus:= frac(Rakam);
if Asil > 0 then
begin
if Kurus = 0 then
begin
Result := SayiYazi(asil)+Parabirimi;
end else
begin
Result := SayiYazi(asil)+Parabirimi+' '+SayiYazi(Kurus)+ KurusBirimi;
end;
end else
begin
if Asil = 0 then
begin
Result := 'Sıfır'+ParaBirimi;
end;
if kurus > 0 then
begin
Result := SayiYazi(Kurus)+ Kurusbirimi;
end else
begin
if Kurus < 0 then
begin
Result := 'Eksi'+SayiYazi(Kurus)+ Kurusbirimi;
end;
end;
if Asil < 0 then
begin
if Kurus = 0 then
begin
Result := 'Eksi'+SayiYazi(asil)+Parabirimi;
end else
begin
Result := 'Eksi'+SayiYazi(asil)+Parabirimi+' '+SayiYazi(Kurus)+ KurusBirimi;
end;
end;
end;
end;
Kod: Tümünü seç
Edit3.Text := SayiYaziKurus(StrtoCurr(Sozlesme.fieldbyname('MAAS').AsVariant),' TL',' Kr.',2);
- adelphiforumz
- Üye
- Mesajlar: 602
- Kayıt: 01 Nis 2008 05:38
- Konum: İstanbul
Re: FastReport yazıya çevirme
Çok önceden yazılmış bir kod
şimdiye kadar sorun çıkarmadı
FastReport Code Kısmına yazılan
FastReport'ta Tutarı elde ettiğin nesnenin "OnAfterPrint" kısmı "memoYazdir" yazının görüneceği nesne oluyor
şimdiye kadar sorun çıkarmadı
FastReport Code Kısmına yazılan
Kod: Tümünü seç
function Basamak(const i:Int):String;
begin
case i of
1:Result:='Bin';
2:Result:='Milyon';
3:Result:='Milyar';
4:Result:='Trilyon';
5:Result:='Katrilyon';
6:Result:='Kentrilyon';
else
Result:='';
end;
end;
function Onlar(const i:Int):String;
begin
case i of
1:Result:='On';
2:Result:='Yirmi';
3:Result:='Otuz';
4:Result:='Kırk';
5:Result:='Elli';
6:Result:='Altmış';
7:Result:='Yetmiş';
8:Result:='Seksen';
9:Result:='Doksan';
else
Result:='';
end;
end;
function Birler(const i:Integer):String;
begin
case i of
1:Result:='Bir';
2:Result:='İki';
3:Result:='Üç';
4:Result:='Dört';
5:Result:='Beş';
6:Result:='Altı';
7:Result:='Yedi';
8:Result:='Sekiz';
9:Result:='Dokuz';
else
Result:='';
end;
end;
FastReport'ta Tutarı elde ettiğin nesnenin "OnAfterPrint" kısmı "memoYazdir" yazının görüneceği nesne oluyor
Kod: Tümünü seç
var
sSayi, sTmp, sYaziTL, sYaziKurus, sTL, sKurus:string;
i, iTL, iKurus : Integer;
bSwcAyrac : Boolean;
begin
sKurus := '';
sTL := '';
sSayi := '';
sSayi := Trim(memoGenel.Text);
sYaziTL := '';
sYaziKurus := '';
iTL := 0;
iKurus := 0;
bSwcAyrac := False;
i := Length(sSayi);
while i > 0 do
begin
if sSayi[I] in ['0'..'9'] then
begin
if bSwcAyrac = False then
sKurus := sKurus + sSayi[I]
else
sTL := sTL + sSayi[I];
end
else
begin
if (Length(sSayi) - I) <= 2 then
bSwcAyrac := True;
end;
Dec(I);
end;
sTmp := '';
if sKurus <> '' then
for I := Length(sKurus) downto 1 do
sTmp := sTmp + sKurus[I];
sKurus := sTmp;
sTmp := '';
if sTL <> '' then
for I := Length(sTL) downto 1 do
sTmp := sTmp + sTL[I];
sTL := sTmp;
if ( (sTL = '') and (sKurus <> '') ) then
begin
sTL := sKurus;
sKurus := '';
end;
if sTL <> '' then
iTL := StrToInt(sTL);
if sKurus <> '' then
iKurus := StrToInt(sKurus);
sYaziTL := RakamOku(iTL);
sYaziKurus := RakamOku(iKurus);
memoYazdir.Text:= ' Fatura Genel Toplamı : Yalnız '+sYaziTL+'TL ' +sYaziKurus+'Kuruş ';
Ehil olmayanlara sabretmek ehil olanları parlatır.
Akıllı birisinden gelen cefa, bilgisizlerin vefasından iyidir.
Bilgiye ulaştı mı ayak, kanat olur
Biz insanı kıyafetiyle ağırlar bilgisiyle uğurlarız.
Mevlana
Akıllı birisinden gelen cefa, bilgisizlerin vefasından iyidir.
Bilgiye ulaştı mı ayak, kanat olur
Biz insanı kıyafetiyle ağırlar bilgisiyle uğurlarız.
Mevlana
-
- Üye
- Mesajlar: 1
- Kayıt: 10 Şub 2018 11:27
Re: FastReport yazıya çevirme
function Basamak(const i:Int):String;
begin
case i of
1:Result:='Bin';
2:Result:='Milyon';
3:Result:='Milyar';
4:Result:='Trilyon';
5:Result:='Katrilyon';
6:Result:='Kentrilyon';
else
Result:='';
end;
end;
function Onlar(const i:Int):String;
begin
case i of
1:Result:='On';
2:Result:='Yirmi';
3:Result:='Otuz';
4:Result:='Kırk';
5:Result:='Elli';
6:Result:='Altmış';
7:Result:='Yetmiş';
8:Result:='Seksen';
9:Result:='Doksan';
else
Result:='';
end;
end;
function Birler(const i:Integer):String;
begin
case i of
1:Result:='Bir';
2:Result:='İki';
3:Result:='Üç';
4:Result:='Dört';
5:Result:='Beş';
6:Result:='Altı';
7:Result:='Yedi';
8:Result:='Sekiz';
9:Result:='Dokuz';
else
Result:='';
end;
end;
function RakamOku(Sayi:Integer):String;
{Sayi yi Türkçe okunacak şekilde yazı üretir...................................}
const n=9;
var i:Byte; UcHane:Word; Yed,UcluHane:String; HangiBasamak:Byte;
Negatif,BasamakYaz:Boolean;
function Modu(var Sayisi:Word):Byte;
begin
Result:=Sayisi mod 10;
Sayisi:=Sayisi div 10;
end;
begin
if Sayi=0 then
Result:='Sıfır'
else begin
Negatif:=Sayi<0;
if Negatif then Sayi:=-Sayi;
Result:='';
HangiBasamak:=0;
while Sayi>0 do begin
UcHane:=Sayi mod 1000; Sayi:=Sayi div 1000;
BasamakYaz:=UcHane>0;
repeat
UcluHane:='';
if ((HangiBasamak=1) and (UcHane=1)) then Break;//sadece bin yazılacaksa
i:=Modu(UcHane); UcluHane:=Birler(i); //3 hanenin 1. si
i:=Modu(UcHane); UcluHane:=Onlar(i)+UcluHane; //3 hanenin 2. si
i:=Modu(UcHane);
if i>0 then Yed:='Yüz' else Yed:='';
if i>1 then Yed:=Birler(i)+Yed;
UcluHane:=Yed+UcluHane;//3 hanenin 3. sü
until True;
if BasamakYaz then Result:=UcluHane+Basamak(HangiBasamak)+Result;
inc(HangiBasamak);
end;
if Negatif then Result:='Eksi'+Result
else //Delete(Result,1,1);
end;
end;
// ÖRNEK [RakamOku(10000000001)] METİN KUTUSUNA BUNU YAZARSAN SONUCU METİN OLARAK DÖNECEK
function RakamOkuKurus (para:Extended):String;
var
tamkismi:string;
kuruskismi:string;
begin
tamkismi:='';
kuruskismi:='';
tamkismi:= RakamOku(trunc(para))+' TL ';
// Round round(para*100)/100
//showmessage(floattostr(para));
// showmessage(floattostr( round(para*100)));
//kuruskismi:=RakamOku( round(para*100) );
// kuruskismi:=RakamOku(trunc(Frac(round(para*100)/100)*100))+' KR';
kuruskismi:=RakamOku(round(Frac(para)*100))+' KR';
result:=tamkismi+kuruskismi;
end;
// örnek kullanım text objesinde [RakamOkuKurus(<Kasa."GELIR">)]
begin
end.
begin
case i of
1:Result:='Bin';
2:Result:='Milyon';
3:Result:='Milyar';
4:Result:='Trilyon';
5:Result:='Katrilyon';
6:Result:='Kentrilyon';
else
Result:='';
end;
end;
function Onlar(const i:Int):String;
begin
case i of
1:Result:='On';
2:Result:='Yirmi';
3:Result:='Otuz';
4:Result:='Kırk';
5:Result:='Elli';
6:Result:='Altmış';
7:Result:='Yetmiş';
8:Result:='Seksen';
9:Result:='Doksan';
else
Result:='';
end;
end;
function Birler(const i:Integer):String;
begin
case i of
1:Result:='Bir';
2:Result:='İki';
3:Result:='Üç';
4:Result:='Dört';
5:Result:='Beş';
6:Result:='Altı';
7:Result:='Yedi';
8:Result:='Sekiz';
9:Result:='Dokuz';
else
Result:='';
end;
end;
function RakamOku(Sayi:Integer):String;
{Sayi yi Türkçe okunacak şekilde yazı üretir...................................}
const n=9;
var i:Byte; UcHane:Word; Yed,UcluHane:String; HangiBasamak:Byte;
Negatif,BasamakYaz:Boolean;
function Modu(var Sayisi:Word):Byte;
begin
Result:=Sayisi mod 10;
Sayisi:=Sayisi div 10;
end;
begin
if Sayi=0 then
Result:='Sıfır'
else begin
Negatif:=Sayi<0;
if Negatif then Sayi:=-Sayi;
Result:='';
HangiBasamak:=0;
while Sayi>0 do begin
UcHane:=Sayi mod 1000; Sayi:=Sayi div 1000;
BasamakYaz:=UcHane>0;
repeat
UcluHane:='';
if ((HangiBasamak=1) and (UcHane=1)) then Break;//sadece bin yazılacaksa
i:=Modu(UcHane); UcluHane:=Birler(i); //3 hanenin 1. si
i:=Modu(UcHane); UcluHane:=Onlar(i)+UcluHane; //3 hanenin 2. si
i:=Modu(UcHane);
if i>0 then Yed:='Yüz' else Yed:='';
if i>1 then Yed:=Birler(i)+Yed;
UcluHane:=Yed+UcluHane;//3 hanenin 3. sü
until True;
if BasamakYaz then Result:=UcluHane+Basamak(HangiBasamak)+Result;
inc(HangiBasamak);
end;
if Negatif then Result:='Eksi'+Result
else //Delete(Result,1,1);
end;
end;
// ÖRNEK [RakamOku(10000000001)] METİN KUTUSUNA BUNU YAZARSAN SONUCU METİN OLARAK DÖNECEK
function RakamOkuKurus (para:Extended):String;
var
tamkismi:string;
kuruskismi:string;
begin
tamkismi:='';
kuruskismi:='';
tamkismi:= RakamOku(trunc(para))+' TL ';
// Round round(para*100)/100
//showmessage(floattostr(para));
// showmessage(floattostr( round(para*100)));
//kuruskismi:=RakamOku( round(para*100) );
// kuruskismi:=RakamOku(trunc(Frac(round(para*100)/100)*100))+' KR';
kuruskismi:=RakamOku(round(Frac(para)*100))+' KR';
result:=tamkismi+kuruskismi;
end;
// örnek kullanım text objesinde [RakamOkuKurus(<Kasa."GELIR">)]
begin
end.