Makale Özeti

Windows tabanlı veya web tabanlı uygulamalarımızda reporting services kullanarak geliştirdğimiz raporları kullanıcılara göstermemiz gerekiyor. Bunun için web uygulamalarında reportserver'a adres çubuğundan yapılacak bir istek yeterli olabilirken windows uygulamalarında işler bu kadar kolay olmayabiliyor. İşte bu makalede bize bu işlemde yardımcı olacak olan ReportViewer nesnesini inceleyeceğiz.

Makale

         Merhabalar,

         Windows tabanlı veya web tabanlı uygulamalarımızda reporting services kullanarak geliştirdğimiz raporları kullanıcılara göstermemiz gerekiyor. Bunun için web uygulamalarında reportserver'a adres çubuğundan yapılacak bir istek yeterli olabilirken windows uygulamalarında işler bu kadar kolay olmayabiliyor. İşte bu makalede bize bu işlemde yardımcı olacak olan ReportViewer nesnesini inceleyeceğiz.

         Reportviewer nesnesini uygulamalarımıza toolbardan sürükleyip bırakarak ekleyebiliriz. Bu kısımdan sonra nesnenin bazı propertylerini set ederek ve metodlarını çalıştırarak istediğimiz raporların gözükmesini sağlayabiliriz. Öncelikle bu propertyler ve metodları inceleyelim.

         Server Side Çalışan raporlar ve Client Side çalışan rapor dosyaları vardır. .Net te uygulamanıza ekleyeceğiniz Report rdlc dosyası olacaktır ve client side çalışan bir rapor olacaktır. BusinessIntelligence projeleri grubundaki projelerden ReportServerProject tipindeki bir projeye ekleyeceğiniz raporlar ise Reporting Server'da çalışacak ve server side olacaktır.

LocalReport Bu property içerisinde yapacağınız ayarlamalar ile rdlc dosyası olan yani client da çalışan rapor nesnesinin nasıl kullanılacağını belirleyebilirsiniz. ReportPath ile raporun dosya yolunu verirseniz raporunuz gözükecektir.
ProcessingMode Raporun lokal de mi yoksa uzaktaki bir sunucuda mı üretileceğinin belirlendiği propertydir. Server Side raporlarınız için Remote seçilmelidir.
PromptAreaCollapsed Bu property ise bize raporun parametrelerinin sorulduğu alanın açık mı kapalı mı geleceği bilgisini set etmemiz konusunda yardımcı olur. Bu property nin gizlediği command prompt'u çalışma zamanında açmak isterseniz kontrolünü kullanabilirsiniz.
ServerReport Server tarafında çalışacak bir rapor için ayarları yapmanız gereken özelliktir. Bu özellikte bulunan ReportServerUrl property'sine Report Server'ın url ini ReportPath property'sine ise Raporun Report Server içindeki yolunu yazmanız gerekmektedir. örneğin ReportServer olarak http://localhost/reportserver yazmış iken ReportPath olarak /MyReports/ArticleReport yazmanız gerekmektedir.
ShowBackButton Bu property toolbarda parent rapor'a gitmeyi sağlayan şeklindeki button'un kullanıcıya gösterilip gösterilmeyeceğini belirler.
ShowContextMenu Rapora sağ tıklanıldığında çıka print, export gibi işlemleri yapabileceğiniz menü nün kullanıcı tarafında çıkıp çıkmayacağını belirler.
ShowCredentialPrompts Kullanıcıların raporu görmek için bir credential girmesi gerektiği durumlarda karşılarına bir dialog penceresi çıkıp çıkmayacağını belirler.
ShowExportButton Rapor üzerinde gözüken ve raporu Excel, Pdf, Tiff gibi dosya tiplerine export etmeye yarayan görünümündeki butonun gözüküp gözükmeyeceğinin belirlendiği property'dir.
ShowFindControls görünümünde olan ve rapor içerisinde bir metin aramamıza yarayan butonların gösterilip gösterilmeyeceğinin belirlendiği property'dir.
ShowPageNavigationControls Kullanıcının sayfalar arasında dolaşma yapabilmesi için gerekli olan ve görünüşü şeklinde olan butonlar dizisinin gözüküp gözükmeyeceğinin belirlendiği property'dir.
ShowParameterPrompts Rapor üzerinde parametrelere veri giriş kısmının gösterilip gösterilmeyeceğinin belirlendiği propertydir. Kullanıcının sizin yolladığınız veriler dışında parametre girerek sorgu yapmasını istemiyorsanız false yapmanız yeterli olacaktır.
ShowPrintButton Raporlara yazıcıdan çıktı olarak almanıza yarayan butonunun görünüp görünmeyeceğini belirlediğiniz property'dir.
ShowProgress Rapor oluşturulurken gösterilenyazısının gözüküp gözükmeyeceğinin belirlendiği property'dir.
ShowPromptAreaButton görünüşünde olan ve parametre giriş kısmı gözüken raporlarda bu kısmı çalışma zamanında gizleyip göstermeye yarayan butonun gözüküp gözükmeyeceğinin belirlendiği property'dir
ShowRefreshButton Raporun en güncel verilerle tekrar yüklenmesini sağlayan ve görünümündeki butonun gözüküp gözükmeyeceğinin belirlendiği property'dir.
ShowStopButton Raporun oluşturulması sırasında işlemin iptal edilmesi istenirse işlemi durdurmak için kullanılan ve görünümündeki butonun gözüküp gözükmeyeceğinin belirlendiği property'dir
ShowToolbar Tüm toolbar'ın gözüküp gözükmeyeceğinin belirlendiği property'dir.
ShowZoomControl Raporlarımızda zoom yapmaya yarayan ve toolbarda şeklinde gözüken kontrolün gözüküp gözükmeyeceğinin belirlendiği property'dir.
ZoomMode Zoom Modunun % cinsinden mi yapılacağı yoksa tüm sayfanın mı gözükeceği veya sayfa genişliği tipinden mi belirleneceğinin set edildiği propertydir.
ZoomPercent Yapılacak olan zoom'un % kaç olarak yapılacağının belirlendiği propertydir.

         Reportviewer kontrolünün dizayn zamanındaki propertylerinden bahsettik. Şimdi bu nesnenin metodlarından bahsetmeden önce ReportParameter nesnesinden bahsetmek faydalı olacaktır. ReportParameter nesnesi raporlara parametre geçebilmeniz için tanımlanmış bir nesnedir. Üç basit property den oluşan bu nesnenin 6 tane constructor'u vardır. Şimdi bu nesnenin property'lerini inceleyelim.

         Name : Raporun içinde tanımlanmış parametrenin adıdır.
         Values : Tek veya çoklu değer alan parametreler için parametre değerlerinin yazılması gereken bir propertydir. StringCollection tipinden olduğundan değerlerin bir liste ile verilmesi gerekmektedir.
         Visible : Parametrenin kullanıcı arabiriminde gösterilip gösterilmeyeceğini bu property ile belirleyebilirsiniz.

         ReportViewer nesnesinin uygulamalarımızda genellikle kullanacağımız metodlarını inceleyelim.

RefreshReport Raporun tekrardan oluşturulmasını sağlar.
SetDisplayModeRaporun Normal görüntüde mi yoksa PrintLayout görüntüde mi gözükeceğinin belirlendiği metoddur tip olarak DisplayMode enum u alır.
CancelRenderingVerilen süre içinde rapor oluşturulamazsa raporun render edilmesini yarıda keser.
ServerReport.GetDataSourcesRaporda kullanılan datasource'ları bir collection halinde veren metoddur. Collectiondaki her nesneden DataSource'a ait ismi ve komutu alabilirsiniz.
ServerReport.GetDefaultPageSettingsDefault sayfa ayarlarını geri döndüren metoddur.
ServerReport.GetExecutionIdReporting services tarafından belirlenen executionId yi döndüren metoddur.
ServerReport.GetParametersRapora eklenmiş olan parametreleri bir collection halinde geri döndüren metoddur.
ServerReport.GetServerVersionRaporun çaşılmakta olduğu reporting services'e ait bilgiyi döndüren metoddur.
ServerReport.GetTotalPagesRapordaki toplam sayfa sayısını veren metoddur.
ServerReport.RefreshRaporun yeniden oluşturulmasını sağlayan metoddur
ServerReport.SetDataSourceCredentialsRaporun datasource'a erişebilmesi için gerekli credential'ların tanımlandığı metoddur. Kullanıcının datasource'a erişim izni olmadığı durumlarda bile raporun erişebilmesini istiyorsanız bu metodu kullanabilirsiniz.Bu metod DataSourceCredentials tipinden bir array almaktadır.
ServerReport.SetParametersRaporumuza parametreleri bir collection olarak eklememiz için çalıştırmamız gereken metoddur.

         Şimdi ise raporumuzu nasıl çağıracağımızı inceleyelim.

            ReportParameter param1 = new ReportParameter();

            param1.Name = "CustomerId";

            param1.Values[0] = "1";

            List<ReportParameter> pColl = new List<ReportParameter>();

            pColl.Add(param1);

            rptViewer.ServerReport.SetParameters(pColl);

            rptViewer.RefreshReport();

         Reportviewer nesnesini web uygulamalarında da kullanmanız mümkündür ancak bu bileşenin Global Assembly Cache de yüklü olması iyi olacaktır. Bu bileşeni sunucuya kurmak için http://www.microsoft.com/downloads/details.aspx?FamilyID=8a166cac-758d-45c8-b637-dd7726e61367&DisplayLang=en adresinden indirebilirsiniz.

         Tamer Öz

         oztamer@hotmail.com
         tamer.oz@yazgelistir.com
         oztamer@hotmail.com