Visiual Studio 2010 ile MS Report Kullanımı

        

         Herkese merhaba,

         Bu makalede Visiual Studio ‘da kullanılan raporlama araçlarından olan MS Report ‘dan bahsedecek ve   C# diliyle bir uygulama yapacağız.

Öncelikle Microsoft Report Viewer komponentini tanıyalım.

        1.Microsoft Report Viewer Nedir?

Microsoft Report Viewer Visual Studio ile sunulan  Crystal Report ve MS Report  araçlarıyla oluşturulan rapor dosyalarını görüntülemek  için oluşturulmuş bir komponentdir.   Bu komponenti kullanarak hem masaüstü uygulamalarında hem de web uygulamalarında rapor oluşturmak mümkün.

Visiual Studio ile  bir web (aspx) projesinde raporumuzu oluşturalım. Raporu kullanacağımız  bir aspx sayfasına Report Viewer komponentini yerleştiriyoruz. Bu ToolBox penceresindeki Reporting bölümündeki Report Viewer i aspx sayfamıza ekliyoruz.

raporlama1

          2.Projeye Microsoft Report Dosyası Ekleme

          Raporumuzu eklemek için  Solution Explorer penceresinden projemize sağ tıklayıp Add> New Item ‘e tıklıyoruz.

raporlama2

Ardından  Reporting sekmesine tıklıyoruz. Karşımıza çıkan raporlama araçlarından  Report Wizard (Rapor Sihirbazı) nı seçiyoruz. Burada boş bir rapor olarak Report da seçilebilir. Ama sihirbazı kullanırsak, görüntülemek isteyeceğimiz sql  tablosu  alanlarını otomatik olarak raporumuza  eklemiş olacağız.

raporlama3

Bu aşamada New butonuna basıp  Sql bağlantısını yapıyor ve  veritabanınan  kullanacağımız tabloyu seçiyoruz.  Sql Connection (Sql Bağlanması) işleminden sonra sağ taraftaki tabloda seçtiğimiz tablonun alanlarını görüyoruz.Ve  Next butonuna basıyoruz.

raporlama4

Karşımıza  Available Fields ( Mevcut alanlar),  Row Group  (satır grubu), Column Group(kolon grubu) ve Value (Değerler) pencereleri karşımıza çıkmaktadır. Available Group penceresindeki alanlara tıklayarak raporumuza uygun satır grubu ve ya kolon grubu oluşturabiliriz. Satır grubuna bir  örnek olarak her sayfanın sonunda sayısal bir alanın toplamı yazılabilir. Kolon grubu için de kayıtlarımızı belli bir değere göre (örneğin soyadına  göre) sınıflandırma yapılabilir. Satır ve kolon grubu oluşturmak isteğe bağlıdır. Fakat  rapor sihirbazında Values (değerler)   penceresi boş kalmamalıdır.

raporlama5

  Ve alanlarımız aşagıda beliriyor.

raporlama6

  Raporumuzda oluşacak tablomuz kayıtlar için bir stil seçiyoruz.

raporlama7

  Ve mutlu son. Artık rapor dosyamız oluşmuş durumda.

raporlama8

Burada rapor  dosyasını düzenlemek için Report Data penceresinden bahsetmek istiyorum.  Önce üst menüden  View > Report Data sekmesine tıklayarak Report Data penceresini açıyoruz.

raporlama9Report Data penceresinde Built -in Fields, Parameters, Images, Ve Eklemiş olduğumuz DataSete ait sekmeleri görmekteyiz.

  • Built -in Fields (Alanlarda Oluştur) sekmesinde sayfa numarası, dil , toplam sayfa gibi alanları raporumuza sürükleyip bırakarak ekleyebilmeteyiz.
  • Parameters sekmesinin üzerine sağ tıklayarak Add Parameters’ı seçerek raporumuza dışardan bir değer gönderebilmekteyiz.
  • Images sekmesine sağ tıklayarak istediğimiz bir resmi rapora eklemek mümkündür.
  • DataSet sekmesinde ise sihirbazla eklediğimiz datasete ait alanlara ulaşmak mümkündür.

raporlama10

Şu ana kadar rapor dosyamızı oluşturduk.Bir de bir başlık raporumuza bir parametre ekleyelim. Bu başlık parametresi olsun. Report Data penceresindeki Parameters sekmesinde Add Parameters diğerek parameteremizi adını girip tipini belirliyor ve Ok butonuna basıyoruz.

raporlama11

Ardından Parameter sekmesi altında görülen Baslik isimli paramtereyi sürükle bırak yöntemiyle raporumuza ekiyoruz.

raporlama12

Raporumuzda tablomuzu oluşturduk. Şimdi bu tabloya birde Image nesnesi ekleyelim. Öncelikle tablomuzdaki son alanımıza bir kolon ekliyoruz. Bu nun için tabloda herhangi bir kolonun üzerine sağ tıklayıp Insert Column>Left(sol) veya Right(sağ) ‘ı tıklıyoruz.
raporlama13

Bu işlemden sonra ToolBox (Toolbox penceresi açık değilse üst menüden View > ToolBox ı tıklıyarak açıyoruz)penceresindeki Image nesnesini o tablonun üzerine sürükle bırak  yaparak tablomuzun data alanına ekliyoruz.  Ardından açılan pencerede  Select The Image  Source   açılır penceresini External seçiyoruz (Böylece url’ sini verdiğimiz her yerden resim çekme işlemi yapabileceğiz ). Use This Image  açılır penceresinin Expression alanına ise   (başına ‘=’ (Eşittir) koyarak)  ifademizi yazıyoruz. (Bu projede veritabanındaki kullanıcı adlı tablonun T.C. kimlik nosuna göre url ‘den resim görüntüleme işlemi yaptık. Siz de kendinize uyarlayabilirsiniz)      =”http://mydomain/Foto/” + Fields!TC_KIMLIK_NO.Value+”.jpg” Expression’ı  ekliyoruz.  (Siz bu alana sabit bir url de ekleyebilirsiniz.

Örneğin    =”http://mydomain/Foto/Resim1.jpg” gibi)
Rapor14

          3. Rapor Dosyasını Çağırma Ve Dosyaya Verileri Yükleme

          Raporu görüntüleyeceğimiz aspx sayfasına Report Viewer eklemiştik. Bu raporu PDF formatında çıktı verecek hale getirelim. Raporu görüntüleyeceğimiz  sayfanın  .aspx.cs uzantılı dosyasına (kod tarafına)  C# kodlarımızı yazıyoruz.

    //Pageload fonkisyonundan Raporla isimli fonksiyonumuzu çağırıyoruz.

protected void Page_Load(object sender, EventArgs e)

{
if (!IsPostBack)
{

Raporla(“Kullanıcı Listesi”);

}

}

private void Raporla(string Baslik)
        {

               // Report Viewer fonksiyonunun dışarıya veri aktarmak için kullandığı  bos parametreleri tanımlıyoruz.
                Warning[] warnings=new  Warning[10];
                string[] streamIds=new string[10];
                string mimeType = string.Empty;
                string encoding = string.Empty;
                string extension = string.Empty;
             // ReportParameter dizisi oluşturuyoruz. Report dosyamızda kaç parametre varsa okadar ReportParameter dizisi                    //oluşturulmalıdır.
                ReportParameter[] parameters = new ReportParameter[1];
                parameters[0] = new ReportParameter(“Baslik”,Baslik);

//Uyarı bu fonksiyona gönderilen paramtere boş olmamalıdır.

// Raporumuza ait parametremizi set ediyoruz
                this.ReportViewer1.LocalReport.SetParameters(parameters);

// Raporun veri kaynağı olan  ReportDataSource nesnesini oluşturuyoruz.
                ReportDataSource rds = new ReportDataSource();

//Projemize eklediğimiz Dataset nesnesinden bir instance alıyoruz.
               KullanicDataSet ds = new KullanicDataSet ();

// Oluşturduğumuz ReportDataSource nesnesinin Name ve Value değerlerini giriyoruz
                rds.Name = “DataSet1”;
                rds.Value = ds.Tables[0];

// Ve ReportDataSource  nesnesini DataSurce olarak ReportViewer nesnemize ekliyoruz
                ReportViewer1.LocalReport.DataSources.Add(rds);
                try
                {

//Dışardan resim görüntüleyebilmemiz için bu satırı ekliyoruz.

ReportViewer1.LocalReport.EnableExternalImages = true;
                   //Burada Render fonksiyonu parametreleri giriyoruz.  Bu raporu PDF formatında alacağız.
                    byte[] bytes = ReportViewer1.LocalReport.Render(“PDF”, null, out mimeType, out encoding, out extension, out streamIds, out warnings);
                    Response.Buffer = true;
                    Response.Clear();
                    Response.ContentType = mimeType;
                    Response.AddHeader(“content-disposition”, “attachment; filename=” + “AtamaRaporu” + “.” + extension);
                    try
                    {
                        Response.BinaryWrite(bytes);
                    }
                    catch (Exception ex)
                    {
                        Page.ClientScript.RegisterStartupScript(this.GetType(), “ErrorAlert”, “alert(‘Error while generating PDF.’);”, true);
                        Console.WriteLine(ex.StackTrace);
                    }
                    Response.Flush();
                    ReportViewer1.LocalReport.Refresh();
                }
                catch(Exception ex)
                { }
        }

Herkese teşekkür eder, mutlu günler dilerim.

8 Responses

  1. Coşkuner 16 Ekim 2015 / 18:49

    Coc Hile biliyormusunuz Adminefendi ?

  2. Cihangir 16 Ekim 2015 / 18:50

    Visiual Studio 2010 ile MS Report Kullanımı bu yazınızı önceden yazmışmıydınız ?

  3. Übeyd 16 Ekim 2015 / 18:50

    Çok Güzel anlatım olmuş. Bende Buna Baktıydım Sağolun Ömer Ali Güven Bey.

    • ÖMER ALİ ÖMER ALİ 18 Ekim 2015 / 15:55

      Teşekkürler

  4. Hazal 16 Ekim 2015 / 18:51

    mail attım bakarmısınız ?

  5. Mahmud 3 Aralık 2015 / 05:36

    mail attım bakarmısınız ?

  6. Elveda 13 Aralık 2015 / 21:03

    seo çalışmalarınız var mı ?

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Güvenlik kodu * Time limit is exhausted. Please reload the CAPTCHA.