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! » 12 Tem 2005 07:13

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: 109
Kayıt: 08 Tem 2008 05:25
Konum: Antalya

Re: FastReportta Script Kullanmak

Mesaj gönderen emrahgs » 22 Eyl 2008 12:21

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: 4319
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: FastReportta Script Kullanmak

Mesaj gönderen aslangeri » 22 Eyl 2008 01:22

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: 109
Kayıt: 08 Tem 2008 05:25
Konum: Antalya

Re: FastReportta Script Kullanmak

Mesaj gönderen emrahgs » 22 Eyl 2008 02:27

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! » 22 Eyl 2008 07:46

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: 3014
Kayıt: 17 Nis 2006 07:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: FastReportta Script Kullanmak

Mesaj gönderen sabanakman » 23 Eyl 2008 07:38

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 10:04 tarihinde düzenlendi, toplamda 2 kere düzenlendi.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .

emrahgs
Üye
Mesajlar: 109
Kayıt: 08 Tem 2008 05:25
Konum: Antalya

Re: FastReportta Script Kullanmak

Mesaj gönderen emrahgs » 23 Eyl 2008 08:24

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: 4319
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: FastReportta Script Kullanmak

Mesaj gönderen aslangeri » 23 Eyl 2008 09:20

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: 109
Kayıt: 08 Tem 2008 05:25
Konum: Antalya

Re: FastReportta Script Kullanmak

Mesaj gönderen emrahgs » 23 Eyl 2008 09:39

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: 127
Kayıt: 12 Tem 2014 09:22

Re: FastReportta Script Kullanmak

Mesaj gönderen AfterPost » 06 Ara 2015 03:52

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

Cevapla