FastReportta Script Kullanmak

Yazdığınız makaleleri ve üyelerimizin işine yarayacağını düşündüğünüz kodlarınızı gönderebilirsiniz. Bu foruma soru sormayın!
Cevapla
Kullanıcı avatarı
Fatih!
Kıdemli Üye
Mesajlar: 1172
Kayıt: 26 Kas 2004 10:46
Konum: Malatya
İletişim:

FastReportta Script Kullanmak

Mesaj gönderen Fatih! »

FastReportta Script kullanmak için Fastreport rapor tasarım anında TreeView’in Kod sekmesine geçiyoruz. Kod bölümüne girdiğinizde karşınıza

Kod: Tümünü seç

Begin

End. 
Bloğu gelecektir. Tahmin ettiğiniz gibi buraya kod yazıp raporlamada kullanıyoruz. Bu kısımda değişken procedure bile tanımlayabilirsiniz. Kod bloğunda tanımladığınız değişkenler, fastreportta tanımladığımız değişkenler farklıdır.
FastReportta kullandığımız nesnelere aşağıdaki nesnelere kolaylıkla atama yapabiliriz.

Kod: Tümünü seç

Memo1.Color := clRed; //memo rengini kırmızı yapar.
FastReportta kullandığımız değişkenleri aşağıdaki şekilde kod bloğunda kullanabiliriz.

Kod: Tümünü seç

<DegşiskenAdi> 
Get(‘DegşiskenAdi’) // Değişken değerini alır
Set(' DegşiskenAdi’, 10); // değişkene 10 değerini atıyoruz. 
if Get(‘DegşiskenAdi ') = 10 then ... // değişkenin değeri 10’sa
Alanların kullanımı
<frxDBDatasetAdi."AlanAdi">
örneğin aşağıdaki gibi ara toplam sonucunu almak isteyelim

Kod: Tümünü seç

borç  Alacak  Bakiye
100    0         100
50      0         150
0       25        125
Öncelikle Bakiye adında bir fastreport değişkeni tanımlayın ve değişkeni fastreportun MasterData bandına sürükleyin daha sonra masterData bandını seçip fastreport'un Object inspectorundan OnBeforePrint olayına çift tıklayın. tıpkı delphideki gbi karşına o olaya ait bir procedure gelecektir. aşağıdaki kodu procedure'nin Begin ve End bloğu arasına yazıp test edin.

Kod: Tümünü seç

Set('Bakiye',<frxDBDataset1."ALACAK">-<frxDBDataset 1."BORC">+<Bakiye>);
aynı sonucu aşağıdaki kodlada alabilirssiniz.

Kod: Tümünü seç

procedure MasterData1OnBeforePrint(Sender: TfrxComponent);
Var
Say:Double;
begin
Say:=<frxDBDataset1."ALACAK">-<frxDBDataset1."BORC" >+Say;
MemoBakiye.Text:=FloatToStr(Say);
end;
gördüğünüz gibi daha fazla kod yazdık. burada amaç mantığını anlamanız

Şimdiki örnekte A harfi ile Başlayan Kayıtları Listeleyelim. MasterData Bandının OnBeforePrint olayına aşağıdaki kodu yazın

Kod: Tümünü seç

if Copy(<frxDBDataset1."Adi">, 1, 1) = 'A' then

MasterData1.Visible := True else

MasterData1.Visible := False;
emrahgs
Üye
Mesajlar: 110
Kayıt: 08 Tem 2008 06:25
Konum: Antalya

Re: FastReportta Script Kullanmak

Mesaj gönderen emrahgs »

Merhaba ben FastReport 4 kullanıyorum
sizin belirtiğiniz gibi

procedure MasterData1OnBeforePrint(Sender: TfrxComponent);
Var
Say:Double;
begin
Say:=<frxDBDataset1."ALACAK">-<frxDBDataset1."BORC" >+Say;
MemoBakiye.Text:=FloatToStr(Say);
end;

bakiye hesaplaması yaptırıyorum ama
bi noktada fast reportun yanlış değer verdiğini tespit ettim

Say:=<frxDBDataset1."ALACAK">-<frxDBDataset1."BORC" >+Say;
burada
<frxDBDataset1."ALACAK">-<frxDBDataset1."BORC" > = 20
Say = 20
değerleri gelirse garip rakamlar (5.23432432432) yazıyor 20 olması şart değil yani 2 tafta aynı değer döndürse
bu hataya düşüyor

makalenin üzerinden çok zaman geçmiş ama
Yardım ederseniz sevinirim
Teşekkürler.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: FastReportta Script Kullanmak

Mesaj gönderen aslangeri »

s.a.
tam olarak emin olmamakla beraber iki tarafın aynı olması derken borç ve alacağın eşit olması durumunu söylediğinizi anlıyorum.
aklıma gelen ilk şey küsüratlar olabilir ( değişkenin tipinden kaynaklanan küsüratlardan söz ediyorum). say ın değerini formatlayarak yazdırıp denedinizmi?
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
emrahgs
Üye
Mesajlar: 110
Kayıt: 08 Tem 2008 06:25
Konum: Antalya

Re: FastReportta Script Kullanmak

Mesaj gönderen emrahgs »

a.s
iki tarafın eşit olması dediğim
dediğim borç- alacak yani satır bakiyesi ile
say değişkeninin değerinin eşit olması
formatlanmış bi şekilde de denedim ama olmadı
ResimResim
Kullanıcı avatarı
Fatih!
Kıdemli Üye
Mesajlar: 1172
Kayıt: 26 Kas 2004 10:46
Konum: Malatya
İletişim:

Re: FastReportta Script Kullanmak

Mesaj gönderen Fatih! »

Uzun zamandan beri FastReport ile ilgilenmediğimden sadece tavsiye de bulunacağım.

şart ifadesi ile eşitlik kontrllü yapmanızı öneririm.

Değerleri parantez içine alıpda deneyebilirsiniz. İşlem önceliği yani.
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3077
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: FastReportta Script Kullanmak

Mesaj gönderen sabanakman »

Değeri formatlayarak yazmanızda fayda var. Zira reel sayılarla bir takım işlemler sonucunda gerçekte sıfır elde edilse bile bilgisayar ortamında bu değer çok küçük bir sapma gösterebilir. Bunun nedeni reel sayılar ifade edilirken çok küçük yuvarlamalar ve kayıplara maruz kalmasıdır. Sadece fast reporta has bir durum değil. 1,1368...6E-13'ün anlamı o rakamın on üzeri eksi 13'le çarpılmasıdır. Yani sıfıra çok yakın değerdir. Siz bu değeri yuvarlar veya formatlarsanız o rakamı sıfır olarak görebilirsiniz.

Ayrıca Currency tipli reel sayı bu çok küçük sapmaları saf dışı bıraktığından (4 ondalıklı bir hassasiyet sayesinde) sonuçlar istenildiği gibi gelecektir.
En son sabanakman tarafından 23 Eyl 2008 11:04 tarihinde düzenlendi, toplamda 2 kere düzenlendi.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
emrahgs
Üye
Mesajlar: 110
Kayıt: 08 Tem 2008 06:25
Konum: Antalya

Re: FastReportta Script Kullanmak

Mesaj gönderen emrahgs »

Arkadaşlar Cevapklarınız için Sağolun

Say:=(<DBRapor."BORC">-<DBRapor."ALACAK">)+Say;
Memo33.Text:=FloatToStr(Say);

Formatstr = ###,###,###,###,##0.#0
Kind = fknumaric

yaptım ama hala sonuç aynı
resimdeki gibi
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: FastReportta Script Kullanmak

Mesaj gönderen aslangeri »

s.a.

Kod: Tümünü seç

Memo33.Text:=FloatToStr(Say);
yerine

Kod: Tümünü seç

Memo33.Text:=formatfloat('#,##0.00',Say);
şeklinde deneyin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
emrahgs
Üye
Mesajlar: 110
Kayıt: 08 Tem 2008 06:25
Konum: Antalya

Re: FastReportta Script Kullanmak

Mesaj gönderen emrahgs »

a.s
aslangeri
hocam büyüksün beni büyük bi sıkıntıdan kurtardın
ben bu formatlama olayını yanlış anlamışım
arkadaş hepinize ilginiz ve yardımlarınız için teşekkür ediyorum
bu şekilde doğru sonuç döndürüyor

procedure MasterData1OnBeforePrint(Sender: TfrxComponent);
Var
Say:double;
Say1:Double;
begin
Say:=(<DBRapor."BORC">-<DBRapor."ALACAK">)+Say;
Memo33.Text:=formatfloat('#,##0.00',Say);

Say1:=<DBRapor."DBORC">-<DBRapor."DALACAK">+Say1;
Memo35.Text:=formatfloat('#,##0.00',Say1);
end;
AfterPost
Üye
Mesajlar: 144
Kayıt: 12 Tem 2014 10:22

Re: FastReportta Script Kullanmak

Mesaj gönderen AfterPost »

:bravo: :bravo: :bravo: :bravo: Çok güzel elinize sağlık..
Cevapla