fast report calisma mantigi ve export yetenegi

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

fast report calisma mantigi ve export yetenegi

Mesaj gönderen sadettinpolat »

arkadaslar merhaba,
projede fast report kullanmaya karar verdim ama bazi cozemedigim kisimlar
ile ilgili olarak sizden yardim almam gerekiyor. fast reportun calisma
mantigina cok asina degilim.

proje plugin yapisina sahip , hemen hemen her bir rapor ayri bir dll
icerisinde yer aliyor.

database , frxReport ve export bilesenleri ana exe uzerinde yer aliyor.
dataset , frxdbdataset gibi bilesenlerde plugin icerisindeki formda yer
aliyor. database ve frxReport bilesenlerini parametre olarak plugine gonderip ,
plugindeki frxdbdataseti frxReporta ekleyip, rapor dosyasinin adini belirtip
ShowReport diyorum lakin frxdbdataset olusturulmamis tarzinda hatalar
aliyorum.

tek bir tane frxReport bileseni kullanarak raporlama isini cozmenin bir yolu
var mi?

+

fast reportun export bilesenlerinden memnun musunuz?
"Sevmek, ne zaman vazgececegini bilmektir." dedi, bana.

---
http://sadettinpolat.blogspot.com/
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Re: fast report calisma mantigi ve export yetenegi

Mesaj gönderen vkamadan »

Merhabalar ,

Tek bir TfrxReport bileşeniyle bu işi çözebilirsiniz fakat raporları dosyadan yada stream olarak yüklemeniz gerekir, yüklediğiniz rapor dosyasına göre frxReport kendini şekillendirir, kullandığı frxDBDataset nesneleride yüklediğiniz rapor dosyasına göre aranır, ayrıca TfrxReport nesnenizin bulunduğu formun impleme ettiği ve o an yaratılmış tüm formlarda bulunan frxDBDataset leri yüklediğiniz raporda kullanabilirisiniz. Benim önerim ana TfrxReport nesnenizin hiç bir property sini değiştirmeyin dataset felan bağlamayın öylece dursun, sadece rapor yükleyin her türlü değişikiği yüklediğiniz rapor dosyası üzerinde yapın. ayrıca siz ğer bir dosyaya kayıt etmezseniz varsayılan olarak frxReport nesnenizde tasarladığınız rapor projeye resource olarak eklenir.

FastReport un export yeteneği şimdiye kadar projelerimizde hep yeterli oldu, birtek excel ole exportu pek hoş değil hem uzun sürüyor hemde karışık raporlarda çok düzgün değil bunun yerine CSV exportu kullanıyoruz çok daha başarılı haricindeki tüm exportları aynen görüldüğü gibi çıktı üretiyor.
Volkan KAMADAN
www.polisoft.com.tr
Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2130
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Re: fast report calisma mantigi ve export yetenegi

Mesaj gönderen sadettinpolat »

cevap icin tesekkur ederim.
fastreportun datasetleri rapora baglama mantigi gercekten cok tuhaf. fr3 uzantili rapor dosyasinda dataseti form adini kullanarak baglamis.

Kod: Tümünü seç

    <TfrxMasterData Name="MasterData1" Height="22,67718" Left="0" Top="18,89765" Width="718,1107" ColumnWidth="0" ColumnGap="0" DataSet="Form4.frxDBDataset1" DataSetName="frxDBDataset1" RowCount="0">
      <TfrxMemoView Name="Memo1" Left="11,33859" Top="3,77953" Width="94,48825" Height="18,89765" ShowHint="False" DataSet="Form4.frxDBDataset1" DataSetName="frxDBDataset1" Text="[frxDBDataset1."ADI"]"/>
    </TfrxMasterData>
calisma zamaninda ben form4 ten bir tane de olusturabilirim , bir kac tanede olusturabilirim.
2. olusturulan form4 ten raporu cagirdigim zaman fastreport gidip 1. olusturulan form4 te ki frxdbDatasete baglanmaya calisiyor. bu da hatali bir rapor olusmasina neden oluyor. bu nedenle raporun tasarim asamasinda rapor sekmesinden her hangi bir dataseti rapora baglayamiyorum.

bu problemi raporun datasetlerini calisma zamaninda delphi icerisinden atayarak (hem masterband hem de rapor uzerindeki frxMemoView bilesenlerine) asabiliyorum ama gercekten hamallik oluyor. hem raporu tasarlarken hem de run time de fazladan zaman kaybettiriyor.

Kod: Tümünü seç

DataSet="Self.frxDBDataset1"
seklinde bir baglama turu olsa ya da datasetin bulundugu formu xml de direkt tutmak yerine datasetin bulundugu formu calisma zamaninda set edebilecegim bir ozelligi olsa sorunum cozulecek gibi ama boyle bir yol da bulamadim.

bu arada frxReportta ki dataset ozelligi ne amacla kullaniliyor ?
"Sevmek, ne zaman vazgececegini bilmektir." dedi, bana.

---
http://sadettinpolat.blogspot.com/
Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2130
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Re: fast report calisma mantigi ve export yetenegi

Mesaj gönderen sadettinpolat »

ben mi yanlis yapiyorum yoksa fast report mu mantiksiz davraniyor anlamadim.
ufak bir proje yaptim.
ana programi calistirinca(form5) child formu ac dugmesi ile yeni child formlar acabiliyorsunuz. (form2)
frxRaport bileseni form2 uzerinde duruyor. form2 uzerindeki dugmeye tikladiginizda ise yeni bir child form daha aciliyor. (form1)
frxDBDataset bileseni bu form uzerinde duruyor ve yazdirma islemide bu formdan yapiliyor.
iki tane form1 actiginizda ve yazdir dugmelerine tikladiginizda sorgulamanin sonucu ne olursa olsun fast report ilk olsuturulan form1 de ki dataseti rapor olarak dokuyor.

eger dogru calisan yazdir dugmesine tiklarsaniz bu sefer olmasi gerektigi gibi rapor olusuyor lakin rapor uzerindeki butun veri bilincli bilesenelere run time de dataset ve datafield degerlerinin atanmasi gerekiyor.

ekran goruntuleri ve projenin kaynak kodu asagidadir.

hatali olan ekran görüntüsü
Resim


olmasi gereken ekran goruntusu
Resim
Dosya ekleri
FastReportMDI.rar
projenin kaynak kodu
dbdemos veritabani ve fast report bilesenlerini kullaniyor.
(32.11 KiB) 263 kere indirildi
"Sevmek, ne zaman vazgececegini bilmektir." dedi, bana.

---
http://sadettinpolat.blogspot.com/
Kullanıcı avatarı
csunguray
Üye
Mesajlar: 855
Kayıt: 09 Ara 2006 05:08
Konum: Adana
İletişim:

Re: fast report calisma mantigi ve export yetenegi

Mesaj gönderen csunguray »

Aşağıdaki kodu inceleyin.

At default FastReport uses grobal Datasets list which are initialized in the module frxClass. After creating copies of TfrxDBDataset, it adds it them this list. In view of this, it’s not possible to use Datasets with the same name (Even in different streams). For using local Datasets , you need to use the following code :

Kod: Tümünü seç

  
  frxReport.EngineOptions.UseGlobalDataSetList := False;
  frxReport.EnabledDataSets.Clear();
  frxReport.EnabledDataSets.Add(frxDataSet);
  frxReport.LoadFromFile(ReportName);
C. Sunguray
csunguray at netbilisim.kom
Net Bilişim Hizmetleri

Sıradan her programcı bilgisayarın anlayabileceği kodlar yazabilir.
Sadece iyi programcılar insanların da anlayabileceği kodlar yazarlar.
Martin Fowler (http://martinfowler.com/)
Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2130
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Re: fast report calisma mantigi ve export yetenegi

Mesaj gönderen sadettinpolat »

csunguray yazdı:Aşağıdaki kodu inceleyin.

At default FastReport uses grobal Datasets list which are initialized in the module frxClass. After creating copies of TfrxDBDataset, it adds it them this list. In view of this, it’s not possible to use Datasets with the same name (Even in different streams). For using local Datasets , you need to use the following code :

Kod: Tümünü seç

  
  frxReport.EngineOptions.UseGlobalDataSetList := False;
  frxReport.EnabledDataSets.Clear();
  frxReport.EnabledDataSets.Add(frxDataSet);
  frxReport.LoadFromFile(ReportName);

csunguray, tesekkur ederim.
fr3 dosyasindan form isimlerini silince bu sekilde calisiyor. bu ozellik 4.6 surumunde eklenmis sanirim. bendeki surum 4.7. bir de 4.8 i indirip deneme yapmam lazim. her defasinda dosya uzerinde elle degisiklik yapmaktan kurtulurum belki.

fastreport bir taraftan isleri cok kolaylastirmisken bir taraftanda berbat edip birakmis.
frxReport bilesenini direkt frxReport1.metodlar seklinde kullanmak ile benimMetodum(frxReport1) seklinde ki bir metodun icinden kullanmak arasinda bile davranis farklari olusuyor.
"Sevmek, ne zaman vazgececegini bilmektir." dedi, bana.

---
http://sadettinpolat.blogspot.com/
Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2130
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Re: fast report calisma mantigi ve export yetenegi

Mesaj gönderen sadettinpolat »

(Owner as TForm2).frxReport1.Clear;
(Owner as TForm2).frxReport1.DataSets.Clear;
(Owner as TForm2).frxReport1.EnabledDataSets.Clear;
(Owner as TForm2).frxReport1.EngineOptions.UseGlobalDataSetList:=false;
(Owner as TForm2).frxReport1.EnabledDataSets.Add(frxDBDataset1);
(Owner as TForm2).frxReport1.LoadFromFile('r1.fr3');
(Owner as TForm2).frxReport1.PrepareReport();
(Owner as TForm2).frxReport1.ShowReport();
fast reportun son surumu ile denedigim yukaridaki kod hala hatali rapor uretmeye devam ediyor.
en iyi cozum sanirim rapor dosyalarindan form on adini silen ufak bir program yazmak ya da quick reporta geri donmek :)
"Sevmek, ne zaman vazgececegini bilmektir." dedi, bana.

---
http://sadettinpolat.blogspot.com/
Kullanıcı avatarı
csunguray
Üye
Mesajlar: 855
Kayıt: 09 Ara 2006 05:08
Konum: Adana
İletişim:

Re: fast report calisma mantigi ve export yetenegi

Mesaj gönderen csunguray »

LoadFromFile satırını işlemlerden önceye almayı deneyin. Yani raporu diskten yükledikten sonra Dataset'leri sıfırlayın. FastReport un verdiği uyarı ile örnek uyuşmuyor.
C. Sunguray
csunguray at netbilisim.kom
Net Bilişim Hizmetleri

Sıradan her programcı bilgisayarın anlayabileceği kodlar yazabilir.
Sadece iyi programcılar insanların da anlayabileceği kodlar yazarlar.
Martin Fowler (http://martinfowler.com/)
Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2130
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Re: fast report calisma mantigi ve export yetenegi

Mesaj gönderen sadettinpolat »

denemedigim olasilik kalmadi gibi :)
boyle

Kod: Tümünü seç

(Owner as TForm2).frxReport1.EngineOptions.UseGlobalDataSetList:=false;
(Owner as TForm2).frxReport1.EnabledDataSets.Clear;
(Owner as TForm2).frxReport1.EnabledDataSets.Add(frxDBDataset1);
(Owner as TForm2).frxReport1.LoadFromFile('r1.fr3');
(Owner as TForm2).frxReport1.PrepareReport();
(Owner as TForm2).frxReport1.ShowReport();
ya da boyle

Kod: Tümünü seç

(Owner as TForm2).frxReport1.LoadFromFile('r1.fr3');
(Owner as TForm2).frxReport1.EngineOptions.UseGlobalDataSetList:=false;
(Owner as TForm2).frxReport1.EnabledDataSets.Clear;
(Owner as TForm2).frxReport1.EnabledDataSets.Add(frxDBDataset1);
(Owner as TForm2).frxReport1.PrepareReport();
(Owner as TForm2).frxReport1.ShowReport();
hicbirsey farketmiyor.

grup vitamin den istek sarki istiyorum fast report icin :)
a acayipsin
b acayipsin
c hiçbiri
d hepsi
"Sevmek, ne zaman vazgececegini bilmektir." dedi, bana.

---
http://sadettinpolat.blogspot.com/
Kullanıcı avatarı
tuna
Üye
Mesajlar: 300
Kayıt: 07 Tem 2008 04:39
Konum: İstanbul

Re: fast report calisma mantigi ve export yetenegi

Mesaj gönderen tuna »

Hocalarım merhaba.
Konu çok eski ama @sadettinpolat hocamın yaşadığı problemin aynısını yaşıyorum.
Herşeyi denememe rağmen hiç bir çözüm bulamadım. Fast report'un lisanslı son sürümünü kullanıyorum.
Acaba sizler bir çözüm bulabildinizmi?
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7586
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Re: fast report calisma mantigi ve export yetenegi

Mesaj gönderen mussimsek »

Fast report'un rapor hazırlamakla alakalı 50-60 sayfalık bir dökümanı var. Biraz ingilizceniz varsa, onu bir inceleyip devam edin. Çok faydası olur.

Kolay gelsin.
Kullanıcı avatarı
tuna
Üye
Mesajlar: 300
Kayıt: 07 Tem 2008 04:39
Konum: İstanbul

Re: fast report calisma mantigi ve export yetenegi

Mesaj gönderen tuna »

Teşekkürler hocam.
Dökümanın Linki sizde varsa verebilirmisiniz.
Cevapla