Fastreport ile kolay yonetilebilir/guncellenebilir raporlar

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2131
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Fastreport ile kolay yonetilebilir/guncellenebilir raporlar

Mesaj gönderen sadettinpolat »

150 - 200 arasi rapordan olusacak bir sistemde fastreport 4 ile kolay guncellenebilen, degistirilebilen, bakimi kullanimi kolay bir sistem yapmak istiyorum. fastreportta cok usta degilim bu yuzden sizlerden biraz fikir almak istedim.

bu raporlardan bazilari birbirine cok benzerken bazilari birbirinden cok farkli.

mesela % 40 raporda sayfa ust bilgisi ve sayfa altbilgisi nerdeyse ayni gibi (sadece rapor basligi , rapor numarasi degisik vs) sayfa alt bilgisi ve saufa ust bilgilerinde ileride olabilecek tasarim degisikligi gibi bir durumda her raporu ayri ayri elden gecirip yeniden duzenlemek iskence gibi birsey olabilir.

yine tum rapoarlarin excel, pdf, word gibi ciktilarinin da en kolay ve zahmetsiz bir yoldan alinmasi gerekiyor.

delphi tarafinda ise raporlar icin ozel olarak yazilacak kodlarin minimum seviyede olmasi gerekiyor. butun raporlari tek bir frxReport bileseni kullanarak almayi dusundugumden bazi cetrefilli raporlar icin rapora ozel frxReportun eventllerine herhangi bir kod yazmadan tum islemleri olabildigince rapor kisminda halletmem gerekiyor.

kisaca ilerde olabilecek degisikliklere karsi simdiden onlem almak istiyorum ve sizin bu konudaki yorumlarinizi merak ediyorum :)
"Sevmek, ne zaman vazgececegini bilmektir." dedi, bana.

---
http://sadettinpolat.blogspot.com/
Kullanıcı avatarı
Lost Soul
Üye
Mesajlar: 1064
Kayıt: 01 Nis 2007 02:55
Konum: mekan ANKARA toprak ELAZIĞ
İletişim:

Mesaj gönderen Lost Soul »

Merhaba. Excel ve word için bir çok bileşen ve döküman mevcut zaten. Biraz aramayla bunları nasıl yapabileceğini bulabilirsin.

Raporu güncel tutmak için iki yöntem kullanabilirsin.
1. Eğer rapr formatı aynı ise sadce bazı başlıklar değişken ise. Bu başlıkları ya da alanları paramtre tanımı ile ( Fast report için parametreler [] içinde tanımlanır.] yapabilirsin.

2. Eğer Kalite yönetimi ISO vb. gibi Revize edilebilir formlar kullanılması gerekiyorsa o zaman Fastreport Runtime Tasarım seçeneği ile imdadına yetişiyor zaten. Ayrıca Raporları programda gömülü olarak kullanma ya da Dosyaya kaydedip erişim sağlama ile kullanama seçeneklerin mevcut (ki Gömülü kullanmak istisalar dışında pek de doğru bir karar değildir)
Dosyadan erişim seçeneği sayesinde runtime da kllanıcıya revize ettirmek yerine kendin hazırlayıp replace edebilirsin.

3. Fastreport içerisinde PAscal kodlarına benzer (Hatta aynı) sekilde procedure yazma seçeneği var (ki bunu kullanırsan çok harika bir özellik) bazı işlemlerini bu kodlarla da halledebilirsin.

Fastreport da yazılacak scriptler minumum seviyede olmalı diyorsun.
Bence bu kodları maximum seviyede tutman ana programının selahiyeti açısından daha hayırlı olacaktır ;) (Tabii kulllanıcı tarafından revize gerekmiyorsa)

Deneme yanılma yöntemiyle Fastreport'un bir çok özelliğini keşfedebilirsin.
(Örneğin Fastreport'un gelişmiş Chart özelliği sayesinde (dbChart vb..) diğer chartları kullanmak yerine bu işi direkt fastreport'tan hallediyorum)

Fastreport'la yapabileceklerin senin hayal gücüne kalmış. :)

Kolay gelsin.

Edit :
Kendi programlarımdan örnek verirsem.
Kalite YÖnetimi Programı ve Ceza Evi Emanet PAra Otomasyon programlarında. 1. Müdür 2. Müdür , Genel alite Kontrol Müdürü, Raporu Hazırlayan, Revizyon Numarası, Firma Adı, Adres Bilgileri gibi değişkenleri Veritabanına ya da Registry'e kaydetmek suretil ile raporda paramtetrik olarak okutmuştum.
Yine Kalite Yönetimi programında Raporun hangi tedarikçiye, hangi zman dilimine ve aylara ait olduğunu çalışma zamanında V.T. dan çekerek parametre ile tanımlamıştım.

Uzun zamandır satmakta olduğumuz PEGASOFT yazılımı ise daha farklı bir yöntem kuullanmakta.
Rapor başlıkları gene parametre ile tanımlıyken. Raporun biçimi, sayfa yapısı hangi kayıt alanlarının yazdırıldığı, tekrasrlı mı yoksa bir kez mi yazılacağ gibi bilgiler kendi oluşturduğu bir arayüzle kullanıcıya hazırlattırılıyordu. Ve bu paramtreler V.T.' na kaydedilip RunTime'da create ettirilmek sureti ile icra ettiriliyordu. Runtime da Rapor hazırlama için FastReport'un example'larına bakabilirsin. Bu örneklerde fastreportun bir çok değişik kullanım yöntemleri gösterilmektedir.

Edit 2 : :D
Ayrıca Runtime'da ttasarım için Fastreport'un örneklerine bakabileceğin gibi IBExpert' de Fastreport kullanmakta ve ÇAlışma Anında tasarım olanağı vermektedir. Onları da incelemende fayda var.
Tekrar Kolay gelsin ;)
Kullanıcı avatarı
kadirkurtoglu
Üye
Mesajlar: 748
Kayıt: 22 May 2005 01:20
Konum: Uzakta Görünen Tepeden...

Mesaj gönderen kadirkurtoglu »

merhabalar. yukarda belirlediğiniz unsurların tamamını gerçekleştirebilirsiniz. fastraport uygundur. tek bir bileşen ile bütün raporları çağırabilirsiniz. fastreport bu konuda 2 seçenek sunuyor.
1 - design time kaynak koda ekleme
2 - run time da dizayn edilip, run time da dosyadan rapor alabilme.

sizin yapmanız gereken her bir raporu proje altında tek tek oluşturup kaydetmek, daha sonra ilgili raporu loadfromfile yöntemi ile yükleyip show etmek. run time da dizayn işi de aynı yöntem le mümkün.

export işine gelince. fastreport bileşenleri sekmesinde fastreport export tabında bulunan export bileşenlerini projenize dahil etmeniz yeterli. rapor önizleme ekranında "export" "dışarı veri ver" ismi main menude yerini alacaktır. kullanıcı rapor önizleme de uğraşmasın. raporu direkt kod ile export edeyim derseniz. ilgili export bileşenin export ayarlarını kod ile yapıp, frxreport1.export(Tfrxexport) işlemi ile raporu kod ile export etmenizde mümkün...
Bir mum, yanındaki mumları tutuşturmakla,
ışığında hiç bir şey kaybetmez.

Mevlana

OS win.10, IDE Delphi 10.3, RDBMS Firebird and MSSQL, BROWSER Chrome
Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2131
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Mesaj gönderen sadettinpolat »

cevaplar icin tesekkur ederim arkadaslar.

fastreportun manualini biraz karistirma imkani buldum. kalitimla rapor olusturmak gibi bir secenek varmis. hatta fastreportun news grubunda eleman bunu runtimede calistiran bir ornekte gondermis.

yani ust ve alt bolumleri birbirine benzeyen sadece ortadaki bolumleri degisik olan raporlar icin bu kalitim secenegi isimi buyuk oranda gorecek. ust ve alt bolumu iceren template bir rapor olusturup diger raporlari bu template rapordan turettigim zaman hem yeni rapor tasarlarken ust ve alt bolumlere zaman harcamamis olacam hem de ust ve alt bolumlerde ileride meydana gelebilecek degisiklikleri tek bir yerden degistirerek tum raporlara degisikliklerin etki etmesini saglamis olacam.

@Lost Soul, parametreler den kastin rapor icinde tanimlanan variablelar mi ?

runtime da yeniden dizany olayi son kullanici icin biraz kullanissiz bence. musterilerimden buyuk bir cogunlugu raporu tekrar dizayn edebilecek bilgiye sahip degilller ki zaten olmamalari da gerekir ;)


raporun icerisinden halletmem gereken diger bir konu ust ve alt bolumlerde her raporda degismesi gereken alanlar. mesela rapor adi gibi. bunu da delphi tarafindan

FastReport.FindComponent(label1) as frxMemo).caption :='XYZ Raporu'

seklinde degilde raporun kendi icerisinden bi sekilde halletmem lazim. bunun icinde raporun kendi icerisindeki kod bolumunu kullanmam gerekir saniyorum.

bu sayede Delphi tarafindan minimum kodla fastReport.LoadFromFile(Rapor.fr3) dedigim zaman baska isleme gerek kalmadan rapor hazir hale gelir saniyorum.


bir de fastreport frxdbDataset haricinde kendisi de rapor icerisinden veritabanlarina baglanabiliyor sanirim. bunun ne gibi avantajlari olabilir ?

bu arada fastreportta sinir oldugum bir kac tane de husus oldu.

frxMemoView bileseni cok gicik bir bilesen olmus. AutoWidth ozelligini True yapmama ragmen tasarim aninda memoview in boyutunda herhangi bir degisiklik olmuyor.

yine frxMemoView bileseninde valign ozelligi cok saglikli calismiyor. yani bekledigim degisim olmuyor. vaTop diyorum yazi bilesenin ortasina geliyor. vaCenter asagi diyebilecegim bir yere geliyor. burda biraz sikinti var gibi.
"Sevmek, ne zaman vazgececegini bilmektir." dedi, bana.

---
http://sadettinpolat.blogspot.com/
Kullanıcı avatarı
Lost Soul
Üye
Mesajlar: 1064
Kayıt: 01 Nis 2007 02:55
Konum: mekan ANKARA toprak ELAZIĞ
İletişim:

Mesaj gönderen Lost Soul »

Parametre olayı :

Vereceğim Örnekte fastreportu açtım ve Sayfanın içeriğine bir frxMEmoView yerleştirdim ve text kısmına köşeli parantez içinde Deneme yazdım

Kod: Tümünü seç

[Deneme]
köşeli parantezin içerisindeki kelime özel anlam ifade eder eğer data ya da fonksiyon değilse parametre olarak algılar ve rapor çalıştığı zaman bu paramtreye karşılık gelen bir değer ister.

raporu aaa.fr3 diye kaydettim


sonra bir form oluşturdum ve formda bir frxreport ve bir button yerleştirdim.

butonun onclik olayın aşağıdaki kodu yazdım

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
begin
aa.LoadFromFile(extractfilepath(paramstr(0))+'aaa.fr3');
aa.ShowReport();
end;

burada 'aa' frxreport nesnesine verdiğim ad. Hızlı hazırladığım için rastgele isimler verdim :D


böylece aaa.fr3 dosyasını yüklemesini sağladım.

rapor yüklenirken parametre için değer isteyecektir.
bunun için rapor nesenesiinin onGetValue olayına aşağıdaki kodu yazdım

Kod: Tümünü seç


procedure TForm1.aaGetValue(const VarName: String; var Value: Variant);
begin
if varname='Deneme' then value :='Deneme yazısı'; 
end;
burada dikkat edersen eğer VarName = 'Deneme' deyimi var .
bu [Deneme] isimli parametre için değer atamamızı sağlar.
Value:='Deneme yazısı diyerek' buraya dinamik olarak 'Deneme Yazısı' yazdırdım.
işte parametreli çalışma dediğim bu.
yukarıda verdiğim örneği Buradan indirebiirsin


Ayrıca MemoView de bir sorun yok. çünkü ben sadece bu nesneyle .ok güzel ve sükse formalr tasarladım. Sadece alışılagelmişten biraz farklı bir çalışma şekli var ;)
Aşağıdaki %80 nini frxMEmoView ile yaptığım örnek bir rapor var.
Resim

yukarıdaki resimde kalın yazılar ve ingilizce yazılar hariç geri kalan tüm yazılar ve sol üst köşedeki logo, ya veritabanından ya da parametre ile alınmıştır.

Kolay gelsin

Not : Fastreport 2 sürümünde dosya uzantısı frp iken fastreport 3 versiyonunda dosya uzantısı .fr3 tür.
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7602
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Bende kalıtım diyecektim ama acaba kullanmaya gerek var mı iyi düşünmek lazım. Belki dosyayı bir kere hazırladıktan sonra kopyalayıp, ortasını değiştirmekte olabilir. Neticede sadece copy-paste ve ufak birkaç düzenleme yapacaksın.

Ben de bir süre önce Firebird ile benzer bir yapı düşündüm. Sistem henüz pratikte devreye alınmadı ama :

- Fastreport 4 kullanılacak (data tabı şart)
- Veritabanı ve SQL bağlantıları rapor içinde yapılacak. Rapor SQL ile veya sp'yi çalıştırarak raporu DB'den çekecek.
- Eğer herhangi bir kriter seçilmesi gerekiyorsa (tarih vs.) fast reportun formu ile sorulacak.

Yani herşeyi komple tek bir dosyaya kaydedip bunu göstereceksin. Bir kaç deneme yapmıştım, bence yeterince başarılı idi.

Daha sonra kullanıcı istediği gibi değiştirsin... Kullanıcı acemi ise sen değiştir gönder, adam üstüne kopyalasın : )

Kolay gelsin.
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 »

Merhaba;
mussimsek yazdı: Yani herşeyi komple tek bir dosyaya kaydedip bunu göstereceksin. Bir kaç deneme yapmıştım, bence yeterince başarılı idi.
Mustafa hocam eğer mümkünse şu fastreport içinden form oluşturmayla ilgili bir örnek verebilrmisiniz acaba.

Teşekkürler.
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ı
mussimsek
Admin
Mesajlar: 7602
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

pro_imaj yazdı:...
Mustafa hocam eğer mümkünse şu fastreport içinden form oluşturmayla ilgili bir örnek verebilrmisiniz acaba.
...
FR4 için : File -> New Dialog komutu verirsen boş bir form ekliyor ve sol tarafta EditBox, Combobox gibi bileşenler çıkıyor. Bunları formun üzerine koyup tasarımını yapıyorsun. Rapor ilk çalıştığında bu form ekrana geliyor ve kullanıcının girdiği verilere göre rapor alabiliyorsun. Gerekirse ilave kodda yazabiliyorsun, mesela ben Query'deki SQL'i kullanıcının seçimlerine göre oluşturuyorum.

Fast reportun demosunda da örnek kullanımlar var.

Kolay gelsin.
Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2131
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Mesaj gönderen sadettinpolat »

fastreportta dbGrid , TDataset gibi bilesenleri otomatik yazdirma gibi bir ozellik mevcut mu ?

internetten arastirdim TfrPrintGrid adli bir bilesenden bahsediyorlar ama bendeki fr4 te boyle bir bilesen goremedim...
"Sevmek, ne zaman vazgececegini bilmektir." dedi, bana.

---
http://sadettinpolat.blogspot.com/
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 »

mussimsek yazdı: FR4 için : File -> New Dialog komutu verirsen boş bir form ekliyor ve sol tarafta EditBox, Combobox gibi bileşenler çıkıyor. Bunları formun üzerine koyup tasarımını yapıyorsun. Rapor ilk çalıştığında bu form ekrana geliyor ve kullanıcının girdiği verilere göre rapor alabiliyorsun. Gerekirse ilave kodda yazabiliyorsun, mesela ben Query'deki SQL'i kullanıcının seçimlerine göre oluşturuyorum.

Fast reportun demosunda da örnek kullanımlar var.

Kolay gelsin.
Teşekkür Ederim Mustafa Hocam.
Almış başını gitmiş fastreport. :P
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 »

Tamamen programınızdan bağımsız tasarım yapılabilen Fast Report Studio diye Türkçe arayüz desteği de olan bir ürün var.

http://fast-report.com/en/download/
http://fast-report.com/en/download/fast ... nload.html
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7602
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

sadettinpolat yazdı:fastreportta dbGrid , TDataset gibi bilesenleri otomatik yazdirma gibi bir ozellik mevcut mu ?

internetten arastirdim TfrPrintGrid adli bir bilesenden bahsediyorlar ama bendeki fr4 te boyle bir bilesen goremedim...
Bildiğim kadarıyla yok. Ama kendin TDataset'ten rapor üretip yazan birşeyler yazabilirsin.

DevExpress'in Printing System diye bir componenti var. Belki ilgini çekebilir :

* Bu cxGrid, RichEdit, hatta form gibi pek çok bileşeni aynen bastırabiliyor. Yani kolon ekledin çıkardın, rengini, fontunu vs. kısaca ekranda o an grid nasılsa o şekilde yazdırıyor.
* İstersen sen kendi bileşenlerini de yazdıracak şekilde link yazabiliyorsun, genişletebiliyorsun.
* Ara yüzü de M$'unkine çok benzediğinden kullanıcılar açısındn da kullanması kolay.
Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2131
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Mesaj gönderen sadettinpolat »

fastreportun bu tür kolayliklari saglamamasi kotu olmus. birde devexpressin raporlama aracina goz atayim.

cevaplar icin saolun..
"Sevmek, ne zaman vazgececegini bilmektir." dedi, bana.

---
http://sadettinpolat.blogspot.com/
iqprog

Mesaj gönderen iqprog »

benim gördüğüm fastreportta en büyük eksiklik F5 butonuna basıp da bir refresh yapamamaktı. onu da ben kaynak kodlarına kendim ekledim, üste de bir refresh butonu ekledim. böylece diyalog formu olan raporları terkar açıp diyalogtaki seçenekler değiştirerek raporu tekrar izlemek mümkün oldu.
Cevapla