Merhabalar,

Bu yazımda hakkında Türkçe kaynak bulmanın zor olduğu FastReport.Net raporlama aracından bahsetmeye çalışacağım.

Geçmişte Delphi tarafında çok kullanılan FastReport, .NET tarafında (en azından şu an için) yeterince başarılı olamamış gibi görünüyor. Bunun sebebi -sanırım- Visual Studio IDE içerisine Crystal Report 'un dahil edilmesi ve okullarda da bu raporlama aracı ile ilgili bilgilerin veriliyor olmasıdır.

Bu sebeple, FastReport.Net'i kullanmaya karar verdiğim zaman zorluklar yaşadığımı ve maalesef Türkçe kaynak bulamadığımı da söylemeliyim.

Bu açılıştan sonra dilerseniz örneğimize geçelim.

FastReport.Net 'in Designer aracını açtıktan sonra, ilk olarak raporumuza veri kaynağı eklememiz gereklidir. Bunun için menü üzerinde Veri > Veri Kaynağı Ekle... yolunu izliyoruz. Açılan pencerede yeni bağlantı düğmesine tıklıyoruz. Karşımıza çıkan pencere, Visual Studio IDE üzerinde kod yazmadan veritabanına bağlamamızı sağlayan pencereyle aynı şekilde dizayn edilmiş durumda. Bu yüzden bu safhada, daha önceden tecübesi olan kişiler zorlanmayacaktır.

Kullanacağımız veritabanı bir Access veritabanı olduğu için burada 'Bağlantı Tipi' kısmından 'MS Access Bağlantısı' seçeneğini seçiyoruz ve Veritabanı dosyamızın adresini belirtiyoruz. Örnekteki veritabanımıza herhangi bir şifre koymadığımız için 'Gelişmiş' düğmesine tıklıyoruz ve 'Persist Security Info' kısmını 'True' olarak işaretliyoruz. Kullanıcı Adı ve Şifre kısmını da boş bırakarak geçiyoruz.

Tamam düğmesine bastıktan sonra 'Bağlantı Metni' kısmından veritabanına bağlanmak için kullanılan kodu görebiliriz.

'Sonraki' düğmesine bastıktan sonra karşımıza gelen ekranda bilgilerine erişmek istediğimiz tabloları seçiyoruz. Erişmek istediğimiz bilgiler gruplandırılmış bilgiler olduğu için bu safhada 'SQL sorgusu ekle' düğmesine tıklayarak yeni bir tablo oluşturuyoruz. Örneğimizde tablomuza 'tblBooksWithTypes' ismini verdik. Yazdığımız sorguda şu şekilde:


SELECT T.Type, W.WriterName, B.BookName
FROM tblBooks B, tblBookTypes T, tblWriters W
WHERE B.BookTypeID = T.ID AND W.ID = B.BookWriterID
ORDER BY T.Type ASC, W.WriterName ASC

Sorgumuzu yazdıktan sonraki safhalarda 'Sonraki' ve 'Son' düğmelerine basarak geçiyoruz. Tablo seçim ekranına döndüğümüzde son oluşturduğumuz tabloyu seçip 'Son' düğmesine tıklıyoruz.

Karşınıza aşağıdaki gibi bir ekranın çıkması gerekiyor.

FastReport.Net Kullanımı Resim_1

Dilerseniz bu safhada ekranın sağ tarafında bulunan 'Sözlük' kısmı içerisinde görünen tabloya sağ tıkladıktan sonra 'Görünüm' ü seçerek tablo içeriğine bakabilirsiniz.

Gâyemiz kitapları gruplar halinde listelemek olduğu için 'Dosya' menüsünün az altında yer alan 'Band Aracı' na tıklıyoruz ve bu kısımda 'Ekle' düğmesine basıp 'Grup Başlığı'nı seçiyoruz.

Sonrasında ekranımızın sol tarafında 'Grup Başlığı' kısmına sağ tıklıyoruz ve 'Düzenle' menüsünü seçiyoruz. Burada gruplandırma yapmak istediğimiz kolonu seçiyoruz. Örneğimizde kitapları tipine göre gruplandırmak istediğimiz için 'Type' kolonunu seçiyoruz ve 'Tamam' düğmesine tıklıyoruz.

Bu safhadan sonra sayfa üzerinde göstereceğimiz veriler kitap tiplerine göre gruplandırılmış olacaktır.

Şimdide grup isimlerinin görüntülenmesi için sözlük kısmından 'Type' sütununu seçip 'Grup Başlığı' kısmına sürüklüyoruz. Kitap isimlerinin ve yazarlarının da görüntülenmesi için 'BookName' ve 'WriterName' sütunlarını 'Veri' sahasına sürükleyip bırakıyoruz. Buraya sürüklenen verilerle ilgili olarak 'Sayfa Başlığı' kısmında otomatik olarak nesneler oluşturulduğu için burada yeni nesneler oluşturmamıza gerek kalmayacaktır.

Eklememiz gereken verileri ekledikten sonraki kısım tamamen yerleşimle ilgili. Bu yerleşimi kendi tercihlerinize göre yapabilir ve gerekli gördüğünüz nesnelerin metinlerini değiştirebilirsiniz. Ancak burada dikkat edilmesi gereken, tablo içerisinden gelen verilerin gösterilebilmesi için bu metinlerdeki köşeli parantezler içerisinde kalan kısımların silinmemesidir. Ayrıca görünümü özelleştirmek için sol taraftaki menüden istediğiniz nesneleri forma ekleyebilir ve 'Özellikler' başlığından istediğiniz değişiklikleri yapabilirsiniz.

Yaptığım değişiklikler sonrasında dizaynın ve raporun son hâli aşağıdaki gibi oldu.

FastReport.Net Kullanımı Resim_2

FastReport.Net Kullanımı Resim_3

FastReport.Net ile ilgili bugünkü yazım bu kadar. Daha sonraki yazılarımda FastReport.Net Designer üzerinde 'Raporlama Sihirbazı' nı kullanarak rapor oluşturma ve Visual Studio IDE üzerinde FastReport.Net kullanımından bahsetmeye çalışacağım.

Yaptığımız örnekle ilgili kodları buradan indirebilirsiniz.

Not: Örnek kodun doğru bir şekilde çalışması için zip dosyasının içeriğini C:\ adresine çıkartın.


Tekrar görüşünceye kadar hoşçakalın...

 

Etiketler : FastReport.Net
Kategoriler : Access FastReport.Net
Yorumlar : 45 Yorum Yorum Yaz

Yorumlar

Bilal AFŞAR 25.12.2016 14:36
Merhaba Ömer Faruk Bey,

Raporu, kod kısmında istediğiniz bir event ile design moda alıp, üzerinde değişiklik yapabilirsiniz.
Bunun için yazmanız gereken kod şöyle olmalıdır:

report1.Design();
Ömer Faruk 25.12.2016 13:44
FasteReport.dll ile gelen designercontrol componenti ni nasıl kullanabiliriz. Yada kullanılabiliniyor mu? :)
Bilal AFŞAR 28.11.2016 13:48
Merhaba Hayri Bey,

Daha evvel, istediğiniz türde bir rapor oluşturmadığım -ya da en azından yaptığımı hatırlamadığım- için net bir cevap veremiyorum. Hazırlamaya çalıştığınız bir rapor varsa, takıldığınız yeri de göstererek gönderirseniz, net şekilde cevap vermeye çalışayım.
hayri 28.11.2016 13:21
merhabalar bilal bey fastreportta cari ekstre tutar+bakiye-alacak raporunu nasıl oluşturmalıyız
Bilal AFŞAR 11.9.2016 15:15
Merhaba Rana Hanım,

İstediğiniz işi nasıl yapacağınızı izah etmeye çalışayım.

İstediğiniz mantıkta, sıra numarasının veritabanından gelmek yerine, tarafınızdan sunulması gerekiyor. Bunun için subreport içinde, veriyi ihtiva eden her bir satırda, bir sıra numarası göstermeniz gerek.

(Alttaki kodlar içinde RN (RowNumber) ismiyle göreceğiniz nesnenin, bu işi yapmak üzere subreport üzerine yerleştirdiğiniz TextObject olduğunu farzediyorum.)

Yapmanız gereken, subreport'a ait DataBand'in AfterData event'ini aşağıdaki methoda bağlamaktır.

(Bir karışıklık olmaması için Code sekmesi içindeki class'ın tamamını buraya ekliyorum)



public class ReportScript
{
private int standardLimit = 25;
private int limit = 7;
private int startNumber = 1;
private int counter = 1;

private void SubReport1_DataBand_AfterData(object sender, EventArgs e)
{

if (SubReport1_DataBand.StartNewPage)
{
SubReport1_DataBand.StartNewPage = false;
counter = startNumber;
limit = standardLimit;
}

if (counter == limit)
SubReport1_DataBand.StartNewPage = true;

RN.Text = (counter++).ToString();
}
}



Şimdi de, kodun nasıl çalıştığını anlatayım.

Temel mantık, subreport içindeki her RN nesnesine, birbirini takip eden yeni bir sayı eklemek üzerine kurulu.
Bununla beraber, istenilen sayıya ulaştığı zaman, DataBand'i, (StartNewPage = true ifadesi ile) yeni bir sayfada başlatıp, sayaç (counter) nesnemizi de sıfırlıyoruz. Bu sayede her yeni sayfa başlangıcında, bu sayı 1 oluyor.

Ancak, StartNewPage değeri true olduğu zaman, her yeni gelen satır, yeni bir sayfada çalışacak şekilde ayarlandığı için, bunu bir kez çalıştırdıktan sonra tekrar false olarak ayarlamamız gerek.

İlk if bloğunun yaptığı iş budur. İlaveten bu blok, ilk sayfa haricinde olması gereken kayıt sınırını da ayarlıyor. Böylece ilk sayfada sizin istediğiniz gibi 7 satır gelirken, diğer sayfalarda bu sayı 25 oluyor.

İkinci if bloğunun yaptığı da, istediğiniz sınıra geldiğinde yeni bir sayfa oluşturmaktır.

Son satır da, net olarak anlaşılacağı üzere, her bir satıra ait sıra numarasını yazdırıyor.

Buradaki SubReport1_DataBand'in, isminden de anlaşılacağı gibi, subreport'a ait DataBand olduğunu da hatırlatmak isterim.

Tek satırlık bir subreport içinde yapmanız gereken bundan ibaret. Eğer daha karmaşık birşeyler varsa, işlemlerin de karmaşık hâle gelme riski var.

Gerisi size kalmış. Ancak, yine de takıldığınız bir nokta olursa, tekrar yardımcı olmaya çalışırım.
rana 8.9.2016 16:02
Merhaba Bilal bey,
subreport'ta verileri sıralarken 1.sayfada ilk 7 kaydın,ikinci sayfada ise tekrar numaralandırmanın 1'den başlayarak 25 kayıt getirmesini istiyorum bunu nasıl yapabilirim yardımcı olabilirseniz sevinirim
Bilal AFŞAR 17.2.2016 21:18
Tekrar merhaba Kürşat Bey,

FastReport'un .NET sürümü ile VLC sürümü arasında farklar olmasına rağmen, temel yapının aynı olmasını beklediğim için önceki cevabın işinize yarayacağını ümid ediyordum. StackOverFlow üzerinde kayıtlı mezkûr cevabın ise sizin bulduğunuza yakın bir çözüm tavsiyesi ortaya koyması sebebiyle, işinize yarayacağına neredeyse kesin gözüyle bakıyordum :)

Benim için işin şaşırtıcı yanı ise çok fazla sayıda sayfaya tek RichText nesnesi ile bilgiyi yüklemiş olmanız. RichText nesnesi kullanan başka bir programda daha tecrûbe ettiğimde, onda da, evvelki mesajımda bahsettiğim kısıtlama ile karşılaşmıştım. Bu sebeple buna, Windows'un RichText nesnesi üzerine yerleştirdiği bir kısıtlama olarak bakmıştım. Ancak belli ki burada farklı bir vaziyet mevcut.

Netice olarak sıkıntınızı çözmüş olmanıza memnun oldum. Nasıl çözdüğünüzü yazdığınız için ayrıca teşekkür ederim. Sitemde, her ne kadar .NET versiyonu üzerine makaleler ve yorumlar olsa da bir ihtimal ki birilerinin işine yarayabilir.
Kürşad TIRAŞ 17.2.2016 17:36
Hocam yardımların için teşekkür ederim. Ben durumu çözdüm.

çözüm şöyle; TfrxRichView alanı eklediğimden ben hep bu alanı yönetme üzerine yoğunlaşmıştım fakat buradan çözüm alamadım. Daha sonra alanı yönetemiyorsam bu alanı içerisinde kullandığım MasterData'yı yönetebilirim fikri ile hareket ettim. Burada RowCount değerine 50 verip Stretched değerini 'True' yapınca istediğim sonucu elde ettim. Veri değeri ne kadar uzun olursa olsun veri kesintiye uğramadan bir sonraki sayfaya ilerliyor ve sayfa başlığı ile sayfa sonunu koruyarak 46 sayfa bir denemede başarı elde ettim.
Bilal AFŞAR 17.2.2016 14:17
Merhaba Kürşad Bey,

Siz sorana kadar bu mevzû hususunda maalesef bilgim yoktu. Ancak kısa bir araştırmadan sonra çözüme ulaştım.

Fakat yine de kullandığınız versiyona göre bir farklılık olur mu bilemiyorum. Bunu sizin tecrûbe etmeniz gerek.

Cevaba gelirsek, yapmanız gereken iki şey var. Evvela eklediğiniz RichObject'in CanGrow property'sinin değerini true olarak ayarlamanız gerek. Bu sayede eklediğiniz nesne içindeki bilgi büyüdüğü zaman, otomatik olarak nesnenin kendisi de büyüyecektir. Ancak burada da bir sıkıntı mevcut. Nesne çok büyüyüp, sayfa dışına taştığında, yeni sayfa oluşturulup taşan kısım gösterilmiyor. Bunun için de Databand nesnesinin (Türkçe FastReport Designer arayüzünde ilk açılışta üzerinde veri yazan kısım) CanGrow property'sine ait değerin de true olarak ayarlanması gerek. Bunu yaptığınız zaman istediğiniz şekilde çalışacaktır.

Yine de bir ekleme daha yapmam gerek.

Yaptığım tecrûbelerde WordPad üzerinde yazdığım bir yazının tamamını alıp RichObject nesnesinin Text property'sine yapıştırdığım zaman ilk paragraftan sonraki kısmın gösterilmediğini, paragrafsız halde ise azamî 35486 karakter gösterilebildiğini müşâhede ettim. Bu da düz yazı olarak yaklaşık 3.25 sayfaya denk geliyor. Muhtemelen bunun sebebi, bu nesneye konan sınırlamadır. Bu yüzden bir kaç sayfa sürecek olan nesnelerde yine sıkıntı yaşamanız muhtemeldir.

Düzeltme:

Üstteki cevabı ekledikten sonra farkettim ki kullandığınız versiyon Delphi için geliştirilen VCL sürümüne ait. Muhtemelen yukarıdaki açıklama işinize yarayacak olsa da, doğrudan Delphi tarafına hitab eden, StackOverFlow üzerinde kayıtlı bir cevap mevcut. Dilerseniz aşağıdaki linkten ona da göz atabilirsiniz:

http://stackoverflow.com/questions/19765020/how-to-make-a-richedits-text-continue-on-the-next-page-with-fast-report-in-delp
Kürşad TIRAŞ 17.2.2016 12:38
FastReport Version 5.2.8 kullanıyorum Zengin metin nesnesi ekliyorum DataField olarak databaseden gelmesini istediğim alanı seçiyorum. Veriyi çağırmada bir sorunum yok fakat bir sayfadan uzun bir veri gelebiliyor bu alana, bu durumda sayfaya sığdığı kada yazıyor bir yerde kesiliyor. Benim sorum gelen veri uzun ise ikinci sayfaya nasıl devam ettirebilirim. Şimdiden teşekkür ediyor ve yardımlarınızı bekliyorum.
Bilal AFŞAR 30.12.2015 20:53
Duygu Hanım merhaba,

Eklediğiniz adreste gösterilen hata form üzerine eklediğiniz bir kontrolün örneğinin oluşturulmamış olması sebebiyle formun designer üzerinde gösterilememesinden kaynaklanıyor. Verdiğiniz adreste, en alttaki mesajlardan birinde fastreport.dll dosyasını kendi key (.snk) dosyası ile derlemekten bahsetmiş ancak şahsen fastreport'a ait dll dosyasını kendim derlemeye çalışmadığım için böyle bir hata ile karşılaşmadım. Eğer sizde fastreport dosyasını doğrudan aldığınız kaynaktaki hali ile kullanıyorsanız, bu ihtimali gözardı edebilirsiniz.

Bunun haricinde, son mesajda GAC içindeki dll dosyalarının değiştirilmiş olmasından bahsediyor ki bu da kırılmış versiyonlarda karşınıza çıkması muhtemel bir hatadır. Eğer elinizdeki sürüm kırılmış sürüm ise - ki kimse kullanımını teşvik etmez :) - buna göre gerekli kontrolleri yapmanız gerektiğini söyleyebilirim.

Ancak yine de şahsi kanâatim başka bir nesnenin null olarak bırakılmış olmasından kaynaklanan bir hata olduğu yönündedir. Evvela formun InitializeComponent methodu içinde ve designer sayfasının en altında yer alan, eklediğiniz rapor kontrolüne ait nesneye işaret eden bütün satırları silip projeyi yeniden derleyin. Sonrasında formun designer arayüzüne bakın. Eğer yine aynı hatayı veriyorsa null olarak bıraktığınız nesneyi bulup düzeltmeniz gerekecektir. Eğer form designer arayüzü hata vermiyorsa, form üzerine PreviewControl nesnesini sürükleyip işinize devam edebilirsiniz. Ancak yine de hata ile karşılaşırsanız, hatayı gösteren ekran resmi ve 'Show Call Stack' linki içindeki bilgiyi gönderirseniz hatayı çözmek için daha doğru bir teşhiş koyma imkânımız olacaktır.

Son not: Verdiğiniz adresteki mesajda DesignerControl nesnesinin forma eklendiğini farkettim. Bu tavsiye edebileceğim bir yol olmayacaktır. Eğer kullanıcının form üzerinde değişiklik yapmasına müsaade etmek istiyorsanız bir button ekleyerek reportFile.Design() kodundaki gibi bir çağrıda bulunabilir ve form düzenleme penceresinin açılmasını sağlayabilirsiniz.
duygu 30.12.2015 14:29
Merhaba Hocam,
Visual Studioya Fastreport dll lerini eklediğimde forma report designer tool unu ekleyemiyorum,hata alıyorum.Bu konuda yardımcı olabilirseniz çok sevinirim.
https://www.fast-report.com/en/forum/index.php?showtopic=8443 bu linkteki aynı hatayı alıyorum
Bilal AFŞAR 19.12.2015 02:58
Merhaba Sevda Hanım,

Şu ana kadar kullandığım hiçbir VS sürümünde FastReport.NET'in önceden dahil edildiğini görmedim. Bu yüzden sizin eklemeniz gerekiyor.

FastReport.NET, kurulumu esnasında kendiliğinden toolbox'a entegre olma teklifi sunabilir. Eğer bu şekilde olursa kabul etmeniz yetecektir. Kurulumunu uzun zaman evvel yaptığım için maalesef bu teklifi sunup sunmadığını hatırlayamıyorum. Eğer bu şekilde olmazsa ikinci yol olarak dll dosyasını göstermeyi tercih edebilirsiniz. Bunun için yapmanız gereken VS içerisinde toolbox'a sağ tıklayıp 'Choose Items...' ı seçmek, sonrasında da '.NET Framework Components' sekmesinde browse düğmesine tıklamak ve bilâhire FastReport.NET'in kurulu olduğu dizinde FastReport.dll dosyasını yüklemek olacaktır. Bu dll içerisinde ihtiyacınız olan kontrolleri bulacaksınız. Bu işlemden sonra tek yapmanız gereken OK düğmesine basmaktır. Dll dosyasını seçtikten sonra içerisinde bulduğu bütün kontrolleri otomatik seçtiği için bu pencere kapandıktan sonra ihtiyacınız olan kontroller toolbox üzerine yüklenmiş olacaktır.

Bahsi geçen dll yüklemesiyle alâkalı ufak bir ipucu!

FastReport.dll dosyasının olduğu dizinde bazı başka dll dosyaları da göreceksiniz. Bunları da seçip yüklerseniz 1-2 tanesi hata verecek olmakla beraber; bu dosyalardan gelen DevComponents firmasına ait bazı kontrolleri kullanma imkânına sahip olabilirsiniz :)
sevda 17.12.2015 12:20
visual studio 2015 te FastReport yoknasıl eklemem lazım anlamdım yardımcı olurmusunuz ?
Bilal AFŞAR 14.12.2015 13:27
Merhaba Damla Hanım,

Bahsettiğiniz türde bir hata ile daha evvel karşılaşmadım. Makale içindeki örneği de böyle bir hata verecek mi diye denedim ancak yine de bir şey çıkmadı. Dilerseniz, örnek göndermeniz halinde inceleyip hatayı bulmaya çalışalım.
damla 14.12.2015 12:35
Merhabalar,
Sorunum şu ki C# ile hazırladığım Raporu excele aktardığımda satırları birleştiriyor.Örneğin 1.satırda gösterilmesi gereken veriyi hem 1 hem de 2.satırda ortak olarak gösteriyor.Bu konuda yardımcı olursanız çok sevinirim.
Bilal AFŞAR 30.5.2015 03:07
Merhaba Cesur Bey,


RTF dosyasını yazdırmak için rapor üzerine bir RichObject ekleyip dosyanızın içeriğini oraya bağlamanız gerekiyor. Eklediğiniz RichObject'e 'richTextObject' ismini vermiş olursanız aşağıdaki kodu Report nesnesinin StartReport event'i içerisine yazarak istediğiniz RTF dosyasını yükleyebilirsiniz.


      using(OpenFileDialog ofd = new OpenFileDialog())

      {

        ofd.Filter = "Zengin Metin Dosyası|*.rtf";

        DialogResult r = ofd.ShowDialog();

        

        if (r == DialogResult.OK)

        {

          richTextObj.Text = System.IO.File.ReadAllText(ofd.FileName);

        }

      }


Örnek dosyayı alttaki adresten indirebilirsiniz.




Eğer link silinmişse, haber verdiğiniz takdirde düzeltilecektir.


Ayrıca son bir hatırlatma yapmakta fayda var. Rapor içerisine eklediğiniz RichObject tipindeki nesneler, rapor; -misâlen- Word dosyası olarak kaydedilirken resim suretine çevriliyor. Sıkıntıya mahall vermemek için buna dikkat etmenizi tavsiye ederim.
Cesur Kaya 29.5.2015 15:27
Bilal Bey FastReporta rtf dosyasını nasıl yazdıra bilirim
Bilal AFŞAR 15.4.2015 14:41
Merhaba Furkan Bey,

Şu an için hazırladığım bir video yok. İmkân bulursam hazırlamak isterim ancak şu ara işlerimin kesîfliği sebebiyle buna vakit ayırmam mümkün görünmüyor. Ama youtube üzerinde az da olsa video mevcut. Dilerseniz onları da inceleyebilirsiniz.
FURKAN 15.4.2015 09:15
ben fastreport öğrenmeye çalışıyorum en basitten anlaşılır bir video var mı acaba yada bununla ilgili bana bir link gönderebilirmisiniz?
Bilal AFŞAR 27.10.2014 17:02
Merhaba Ali Bey,

Maalesef FastReport'un böyle bir desteği yok. Resim üzerinde yerleşim ile ilgili olarak yapabilecekleriniz SizeMode ile sınırlı. Bunun haricinde padding ile kenarlarındaki boşluğu ayarlayabilir ya da Style tanımlayarak resme style uygulayabilirsiniz. Ancak burda da yapabileceğiniz çok fazla birşey yok. Bu sebeple eğer resmi program aracılığıyla gönderiyorsanız program üzerinde istediğiniz işi yapmanızı önerebilirim.
ali 27.10.2014 13:27
iyi günler
Fastreport ile resmin belirli bir alanını nasıl gösterebilirim.(diyelim ki resmin sadece orta kısmında bir alanı gibi )
Bilal AFŞAR 19.6.2013 17:43
Merhaba Erdinç Bey,

Visual Studio üzerinde eklediğiniz PreviewControl nesnesinin düzenleme modunu aktif yapar ve rapor dosyalarını da doğrudan programa gömmek yerine bir dizinde tutarsanız bu problemi çözebilirsiniz. Böyle bir durumda yapmanız gereken PreviewControl içinde gösterilecek olan rapor dosyasının adresini vermek ve gösterilen rapor üzerinde düzenleme yaptıktan sonra orjinal dosya ile değiştirmek olacaktır.
erdinc 19.6.2013 16:41
Hocam merhaba kolay gelsin.
Fastreport ile form üzerinde rapor üzerinde değişiklik yaparak kaydedip sonraki raporlarında aynı düzenle gelmesini nasıl sağlayabiliriz.
Bilal AFŞAR 12.6.2013 19:35
Kod sayfasında -misalen- Page nesnesinin StartPage event'i içinde

Picture1.ImageLocation = @"C:\resim.jpg";
ya da
Picture1.ImageLocation = System.IO.Directory.GetCurrentDirectory() + "\\resim.jpg";

şeklinde kod yazarak belli bir resmi belli bir picturebox nesnesinde gösterebilirsiniz.

Eğer maksadınız veritabanından ekleme yapmak ise byte[] olarak saklanan veriyi eklemek için, ilgili tabloyu rapora bağladıktan sonra PictureBox nesnesinin DataColumn özelliğine tablodaki ilgili sütunu bağlayabilirsiniz.
Mehmet Ali YILMAZ 12.6.2013 17:59
Fast report da kullanılan image nesnesinin resmini nasıl ekliyorsunuz ..
Bilal AFŞAR 9.5.2013 14:41
Merhaba Ferhat Bey,

Dinamikten kastınız eğer belli sütunları olan ve kullanılan DataTable'a bağlı olarak bazı sütunların gösterilip gösterilmemesi ise DataTable'ı program üzerinden bağladıktan sonra; rapor yüklenirken kendisine değer bağlanmamış olan label'ı gizleyerek bu problemi çözebilirsiniz.

Ancak daha önce böylesi bir durum ile karşılaşmadığım için bunun işe yarayıp yaramayacağından emin değilim. Eğer mevzû bu ise evvelki mesajlarda bu usûlle ilgili bir açıklama görebilirsiniz. Değilse ve daha net olarak probleminizi anlatabilirseniz bir neticeye varmaya çalışırız.
Ferhat Kabaoğlu 9.5.2013 14:15
Merhaba,
Yeni tanımlanacak rapor dosyasında dinamik olarak oluşturulacak datatable kullanacaksanız, veri kaynağını nasıl tanımlıyorsunuz?
Hoşçakalın.
Bilal AFŞAR 1.4.2013 19:19
Merhaba,

Yaptığınız işlemlerde hata görünmüyor, yalnızca eksikler mevcut.

Datayı Data1 isimli DataBand üzerine bağlamışsınız ancak datanın görünmesini sağlayacak olan nesnelere bağlamamışsınız. FastReport Documentation içerisinde de, eğer DB i doğrudan rapor içerisine bağladıysanız tabloya ait sütunu DataBand üzerine sürükleyip bırakmanın bunun en basit yolu olduğu belirtiliyor. Aynı mantığı sizin projeniz üzerine uyarlamak için yapmanız gereken DataBand üzerine gerekli nesneleri ekleyip datayı oraya bağlamak olacaktır.

Kısaca örnek vermek gerekirse; DataBand üzerine Text1 isminde bir Text nesnesi ekledikten sonra FastReport.NET içindeki koda aşağıdaki kırmızı satırı eklemeniz yetecektir.

private void Page1_StartPage(object sender, EventArgs e)
{
   TableDataSource table = Report.GetDataSource("d") as TableDataSource;
   table.SelectCommand = "select distinct(d.rayon) from d";
   Data1.DataSource = table;
   Text1.Text= "[d.rayon]";
}
Natiq 1.4.2013 10:11
Selam. Fastreport.net-de bir problemi çözemedim, yardımçı olsanız sevinirim. TableDataSource SelectCommand fastreporta visual bağlandıkda çalışıyor, ama C#-dan datatable göndersem çalışmıyor.

C#

DataTable dt = null;
private void Form1_Load(object sender, EventArgs e)
{
string conn = "provider=microsoft.jet.oledb.4.0;data source=c:\\mybase.mdb";
OleDbDataAdapter da = new OleDbDataAdapter("select rayon from mytable", conn);
dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt;
}

private void button1_Click(object sender, EventArgs e)
{
FastReport.Report r = new FastReport.Report();
r.RegisterData(dt, "d");
r.GetDataSource("d").Enabled = true;
r.Load(@"c:\test.frx");
r.Show();
}


Fast Report.NET

private void Page1_StartPage(object sender, EventArgs e)
{
TableDataSource table = Report.GetDataSource("d") as TableDataSource;
table.SelectCommand = "select distinct(d.rayon) from d";
Data1.DataSource = table;
}

nevin 14.8.2012 15:00
Yardımlarınız için teşekkürler küçük bir detayı görmemi sagladınız...
Bilal AFŞAR 14.8.2012 00:56
Nevin Hanım merhaba,

İstediğiniz işlemi yapabilmeniz için gerekli işlemleri sırasıyla yazıyorun.

Öncelikle her sayfada o ana kadar olan toplamın gösterilebilmesi için Rapor menüsünden Kolon Toplamını rapora eklemelisiniz.

Sonrasında Sözlük alanı içerisinde Toplamlar başlığına yeni bir toplam eklemeli ve bu toplama sağ tıklayarak düzenlemelisiniz. Burada yapmanız gereken ayarlar için yazının sonundaki adresten resmi görüntüleyebilirsiniz.

Sonrasında oluşturduğunuz bu toplamı sayfa üzerinde Kolon Toplamı olarak belirtilen alana sürükleyerek kullanabilirsiniz.

Örnek resim http://www.bilalafsar.com/Upload/Images/KolonToplami.png
nevin 13.8.2012 10:29
Merhaba Bilal Bey,
FastReportta bir sıkıntım var. Üst toplam almaya calisiyorum.Yani her seferinde bir önceki sayfanın toplamıyla birlikte bir sonraki sayfaya genel toplamı yazdırmak istiyorum. Yardımcı olursanız sevinirim.Şimdiden Teşekkürler...
Bilal AFŞAR 19.1.2012 21:02
Tekrar Merhaba Fatih Bey,
İlk olarak belirttiğiniz gibi ilk mesajınızın gelmediğini söyleyeyim. Bu yüzden gelen mesajınıza göre cevap yazmıştım.
Sonrasında yazdığınız duruma göre cevap vermeye çalışayım.
Öncelikle VS üzerinde kodlama yaptığınızı farzederek cevap vermem gerektiğini belirteyim. Zira aksi durumda yazdığınız sorgu gibi dinamik içeriğe sahip bir sorguyu çalıştırabilmeniz için elinizde FastReport .NET 'e ait Designer programının olması gerekir.
Kod arayüzünde sorgu yazarken de
"SELECT mahalleadi, malikadi, yuzolcumu FROM tapu WHERE adano='" + AdaTextBox.Text + "' AND parsel = '" + parselTextbox.Text + '"
biçiminde bir sorgu yazmanız gerekir. Kod arayüzünde nasıl sorgu yazabileceğinizle ilgili olarak 'FastReport .NET Kullanımı - Visual Studio Integration' isimli yazıma bakabilirsiniz.
Diğer yandan yapmak istediğiniz Designer üzerinde dinamik içerikli bir sorgu oluşturmak ise parametre kullanmanız gerekir. Bunun için örnek olarak sorgu tasarım ekranında
SELECT mahalleadi, malikadi, yuzolcumu FROM tapu WHERE adano= @AdaTextBox and parsel = @parselTextbox
biçiminde bir sorgu yazar ve sonraki ekranda da @AdaTextBox ve @parselTextbox isimli parametreleri tanımlarsınız. Bu parametrelerin değerlerini de rapora ekleyeceğiniz bir dialog penceresi üzerindeki NumericUpDown kontrolü ya da TextBox kontrolünden alacaklarını belirtirseniz dialog penceresi açıldıktan sonra dinamik olarak istediğiniz değeri girip raporu oluşturabilirsiniz.
Yine eksik kalan birşey söz konusu olursa durumu ayrıntılı olarak anlatmanızı rica ediyorum. Bu şekilde probleminize daha kolay bir çözüm bulabiliriz.
Ayrıca fırsat bulduğum bir zamanda bu konuyla ilgili olarak yeni bir yazı da eklemeye çalışırım.
Fatih Demir 19.1.2012 12:56
Sanırım ilk yazım size ulaşmamış. Benim yapmak istediğim şu kurum olarak kullandığımız programın içinde rapor tasarlayıcısı olarak fastreport kullanılmış, her pc de bu program zaten kurulu olduğu için fastreportu hepsine oto olarak kurmuş oluyorum zaten; amacım bir tablodan " select mahalleadi,malikadi,yuzolcumu from tapu where adano='+AdaTextBox.Text+' and parsel = '+parselTextbox.Text+' " sorgusunda olduğu gibi şartlı olarak dialog penceresinde girdirdiğim ada ve parsel nolarına göre rapor oluşturmak.
Bilal AFŞAR 19.1.2012 12:15
Merhabalar Fatih Bey,
Bildiğim kadarıyla fr3 formatı FastReport Studio tarafından kullanılan bir dosya biçimi ve .NET tarafında desteklenmiyor. Bu format için Delphi tarafında kodlama yapılması gerekiyor. Ayrıca rapor dosyasının doğrudan çalışması için kullanıcı bilgisayarında FastReport Studio'nun kurulu olması gerekir ki bu da programcılar için genelde gereksiz bir durumdur. Ancak bunu yapmak istemenizdeki amaç rapor dosyası üzerinde değişiklik yapabilmek ise bunu .NET ortamında kullanılan PreviewControl nesnesinin ilgili özelliğini aktifleştirerek program kullanılırken de yapabilirsiniz. Muhtemelen Delphi tarafında FastReport Studio kullanırken de benzeri bir özellikle karşılaşacaksınız.
Fatih Demir 19.1.2012 10:49
Bu arada visual studio veya herhangi bir programla değil direkt olarak fr3 formatında fastreportun kendi exesinde bunu yapmak istiyorum..
Bilal AFŞAR 17.1.2012 14:08
Merhaba Birgül Hanım,
Öncelikle yazdığınız sorguda bir hata olduğunu belirteyim ve onu düzeltelim. Join ifadesi kullanmak istediğiniz sorgu içerisinde ikinci tablo adını, sonrasında ON kelimesini ve sonrasında da şartı ekleyerek tabloları birleştirmeniz gerek. Bu durumda olması muhtemel sorgunuz şu şekilde oluşacaktır.
SELECT * FROM Urunler INNER JOIN Cins ON uruncins = cinsadi
Bu işlem SQL üzerinde iki tabloyu eşleşen satırlar bazında birleştirir. Diğer bir deyişle bir tabloda bulunan kaydın diğer tablo üzerinde karşılığı yoksa bu satır gösterilmez. Eğer ne olursa olsun tablolardan birindeki tüm verileri görmek isterseniz LEFT JOIN ya da RIGHT JOIN kullanabilirsiniz.
Sorunuzun diğer kısmına gelirsek orada yapmanız gerekeni de şu şekilde ifade edebiliriz.
C# kullandığınızı ve sorguyu da doğrudan kod içerisine gömdüğünüzü farzedersek
string _sorgu = "SELECT * FROM Urunler INNER JOIN Cins ON uruncins = cinsadi WHERE urunId ='%" + textbox1.text + "%'";
ya da
string _sorgu = string.Format("SELECT * FROM Urunler INNER JOIN Cins ON uruncins = cinsadi WHERE urunId ='%{0}%', textbox1.text);
şeklinde yazabiliriz.
Burada şunu hatırlatmayı faydalı buluyorum. İlk yazdığım _sorgu stringi ile ikincisi arasında herhangi bir fark yok. İkisi de aynı şekilde çalışıyor. Tek fark kodlama biçimidir.
Sorgu içerisindeki ifadelere gelecek olursak, sizin aradığınız cevabın % işaretinde gizli olduğunu belirtmem gerek. Karşılaştırma ifadeleri içerisinde bu ifade kullanıldığında 'yerinde ne olursa olsun' anlamı ortaya çıkar. Bu duruma göre WHERE urunAdi = '%a%' gibi bir ifadeye karşılık olarak içerisinde a harfi geçen tüm kayıtlar döndürülür. İfade WHERE urunAdi = 'a%' şeklinde olsaydı a harfi ile başlayan tüm kayıtlar döndürülecekti.
Son olarak bunu sorgu içerisinde nasıl kullanmanız gerektiği konusunu da 'FastReport .NET Kullanımı - Visual Studio Integration' isimli yazımda anlattığımı belirteyim. Bu yazı içerisinde aradığınız bilgilere ulaşabilirsiniz. Takıldığınız ya da eksik belirttiğimi düşündüğünüz bir kısım olursa tekrar yardımcı olmaya çalışırım.
Kolay gelsin.
Birgul 17.1.2012 02:17
merhaba acaba formda bir textboxta girilen değeri veritabanından arayarak sonucu nasıl raporda gösteririz.
Basit bi sorgu örnek gösterirsek;
select * from Urunler inner join uruncins=cinsadi where urunId=textbox1.text;

Yardımlarınızı bekliyorum;
Bilal AFŞAR 4.10.2011 14:08
Merhabalar Meltem Hanım;
Bu konuyla ilgili olarak yaptığım iki örnek daha mevcut. Ancak yine de sonuca ulaşamıyorsanız probleminizi belirtmenizi rica ediyorum. Bir çözüm bulmaya çalışalım.
meltem 3.10.2011 15:53
merhabalar öncelikle,
ya bu fastreport benım basıma bela oldu cıddı anlamda bir örnek uzerınde bastan sona kısa bır sekılde ustunden gecer mısınız?
tesekkurler,
Bilal AFŞAR 18.9.2011 00:31
Merhaba Hakan Bey;
Şu ana kadar bu şekilde bir kullanımı hiç denemedim ancak bahsettiğiniz örnek ile ilgili adresi verirseniz inceleyip en kısa süre içerisinde bir örnek sunmaya çalışırım. Bu arada stream olarak kaydetmek istediğiniz veri sanırım oluşturduğunuz FastReport.Net dosyası. Bir yanlış anlama söz konusu ise düzeltmenizi rica ediyorum ki sonuca net olarak ulaşabilelim.
hakan özak 17.9.2011 23:47
Merhaba;
FastReport.Net de tasarımı Stream olarak database kaydetme ve database den geri yükeleyen bir örnek yazabilirmisiniz. Çok uğraşmama ragmen beceremedim.
Heryerde gösterdikleri örnek var ama o işime yaramadı.
İyi çalışmalar.
Bilal AFŞAR 27.6.2011 11:24
@anıl
Visual Studio ortamında kullanımıyla ilgili bir yazı da koyacaktım ama bir süredir pek ilgilenemiyordum. Madem ilginiz var, en kısa zamanda eklemeye çalışırım :)
Ancak maalesef ekleyeceğim yazı içerisindeki kodlar C#.NET taraflı olacak. Uygun bir dönüştürücü bulursam VB.NET olarak da eklerim.
anıl 9.6.2011 15:13
Oncelikle tesekkurler cok iyi anlatmışsınız peki bu olusturdugumuz raporu vb.net içinde formla nasıl ilişkilendiricez?

Yorum Yaz

Adınız: *
E-Mail Adresiniz: *
Web Sitesi:
Yorum: *
Güvenlik Kodu: *
 
Tavsiye
Bağlantılar
Tavsiye Ettiğimiz Sunucu Hizmeti
Domain Hizmetleri