Birçok işletmede kullanılan Erp ve muhasebe programlarının kendilerine özgü raporlama araçları vardır. Çoğu Erp programlarında kendi raporumuzu yapacak araçlar mevcuttur. Programa özgü olan bu araçların izin verdiği sınırlar içerisinde raporlar yapılır. Farklı programların farklı veri tabanları ile rapor yapmak istediğimizde ise bu araçların yetersiz kaldığını, sadece kendi veri tabanlarındaki veriler ile rapor yapmamıza müsade ettiğini görmekteyiz. Bu konuyla ilgili farklı firmaların çözümleri mevcuttur. Bu makalemizde Sql Server ile beraber gelen, ek bir maliyet gerektirmeyen Reporting Services konusunu işleyeceğiz.
Makalemin ilk bölümlerine aşağıdaki linklerden ulaşabilirsiniz.
http://www.cozumpark.com/blogs/sql/archive/2014/08/17/sql-server-reporting-services-bolum-1.aspx
http://www.cozumpark.com/blogs/sql/archive/2014/08/17/sql-server-reporting-services-bolum-2.aspx
http://www.cozumpark.com/blogs/sql/archive/2014/08/17/sql-server-reporting-services-bolum-3.aspx
12 – RAPOR BAŞLIK VE ALT BAŞLIKLARI – HEADERS FOOTERS
Raporların daha anlaşılır ve rahat okunabilirliği için başlık ve alt başlıklar kullanılmaktadır. Başlık – Header kısmına genelde raporun adı yazılır, ilave olarak da firma logosu v.b. yerleştirilebilir.. Alt Başlık – Footer kısmına ise, rapor çalışma saati, sayfa numaraları v.b. nesneler yerleştirilebilir.
Report Builder da New – Blank Report oluşturduğunuzda otomatik olarak başlık ve page footer’ı atama yapar. Page header’ı başlığı atama yapmaz. Page footer’da execution time – rapor çalıştırma saatini otomatik olarak getirir.
SSRS-239
Page footer ve header da genellikle Report Data da bulunan “Built-in fields” alanları kullanılır. Bu alanlar;
- Execution Time – Rapor çalıştırma zamanı
- Language – Yerel dil
- Overall Page Number – Toplam sayfalar içindeki sayfa numarası
- Overall Total Pages – Toplam sayfa sayısı
- Page Name – Belirtilinen sayfa adı
- Page Number – Sayfa numarası
- Render format IsInteractive – Rapor görüntüleme formatının interaktif olup olmadığını true-false olarak döndürür.
- Render Format Name – Görüntüleme formatı bilgisini verir
- Report Folder – Raporun sunucu da hangi klasörde tutulduğu bilgisi
- Report Name – Raporun tekil olarak isim bilgisini içerir
- Report Server Url – Rapor sunucusunun web adresi bilgisi
- Total Pages – Toplam rapor sayfası bilgisi
- User ID – Raporu çalıştıran kullanıcının domain ve kullanıcı adının bilgisini verir
SSRS-240
Raporda sayfa numaraları ile ilgili bir örnek yapalım, hangi sayfada olduğumuzu gösteren built-in alanını aşağıdaki yazmamız gerekiyor. Sayfa 5 – 10, toplam 10 sayfa 5. Sayfadasın gibi.
Page footer’a bir textbox ekleyelim.
Textbox’a sağ tıklayıp expression alanına aşağıdaki kodu yazıyoruz.
SSRS-241
Sayfa numaralarını görmek için, report parts’dan daha önce oluşturduğumuz tabloyu raporumuza ekleyelim.
SSRS-242
Home – Run diyerek raporu çalıştırıyoruz.
Raporuın sayfa sonlarına baktığımızda hangi sayfada olduğumuzu ve toplam kaç sayfa olduğunu gösteriyor.
SSRS-243
13 – RAPOR YAZDIRMA – SAYFA YAPISI – DIŞA AKTRAMA (EXPORTING) – RAPOR ÖZELLİKLERİ:
Raporların oluşturduktan sonra, bazı raporların yazıcıdan çıktı alınmadan önce ayarlarının yapılması gerekir, sayfa ayarlarını kontrol etmeden hazırladığınız raporlar yazıcıdan çıkarken birçok sayfaya yazılacaktır. Sayfa ayarları ve dışa aktarma seçenekleri reporting service’te nasıl olur, bunları inceleyelim.
Raporlar dışa aktarıldığında, o andaki ekranda rapor nasıl gözüküyor ise o şekilde aktarılmış olur. Drillthrough raporlarda satırlar genişletilmiş halde export edilse ise, satılar açık gözükür, aktarım yapıldıktan sonra interaktif seçenekler haliyle devre dışı kalmaktadır.
13 – 1 Dışa aktarma (Exporting):
Report manager web site’dan sıralamalı raporu çalıştıralım.
SSRS-244
Raporu çalıştırıyoruz. Raporları report managerdan export etmek için, alt tarafında yeşil ok olan mavi disket ikonuna tıklamamız gerekiyor.
SSRS-245
Pdf seçip export ediyoruz. Pdf dosyasını açtığımızda, interaktif sıralamaların olmadığı ve raporun son hali nasılsa o şekilde aktarildığı gözükmekte.
SSRS-246
Report manager web site üzerinde 7 farklı formatta export işlemleri yapılabilmektedir, bunlar;
- XML file with report data – Rapor verileri ile birlikte xml dosyası
- CSV
- MHTML
- Excel
- TIFF File
- Word
Şekil SSRS-245 te üstteki menülerden mavi disket ikonuna tıklayıp rapor export seçenekleri çıkmaktadır.
13 – 2 Sayfa Yapısı – Rapor Özellikleri:
Raporları yazdırmak istediğimizde, reporting service varsayılan olaran sayfa boşlukları bırakmaktadır. Bu sayfa boşlukları raporun gerekisiz yere bir veya birden fazla sayfaya çıkmasına sebep olmaktadır. Rapor sayfa ayarlarını açmak için, rapor sayfasının dışındaki alanda sağ tıklayarak, “Report Properties” ekranını açıyoruz.
SSRS-247
Report Properties ekranlarını tanıyalım;
- Page Setup: Sayfa ayarları ekranında, ölçü birimleri inç ve cm, sayfa düzeni yatay-dikey, sayfa boyutu, ve kenar boşlukları-margins ayarları bulunmaktadır. Varsayılan olarak sayfa düzeni Portrait ve marginler 2cm olarak gelmektedir. Export edilen raporlar eğer büyük ise ve sayfaya tam oturmuyor ise, bu ekrandan Paper size ve marginler düzenlenerek raporun bir sayfaya veya daha düzgün görüntülenmesini sağlayabiliriz. Bir raporu publish (yayınlamak) etmeden önce mutlaka Page Setup ayarlarını değiştirmemiz gerekmektedir.
SSRS-248
- Code: Reporting service, custom code desteklemektedir, örnek olarak hesaplama yapılan alanlarda genel toplam almak istediğinizde reporting service hata verecektir, bu gibi hataların önüne geçmek için custom-özelleştirilimiş kod kullanmamız gerekmektedir. Custom code konusuna daha sonraki makalelerde değineceğiz.
SSRS-249
- References: Referans olarak assembly dll dosyalarını ve kullanılmak istenen class’ları bu ekrandan ekleyebilmekteyiz. Farklı yazılım çözümlerinin entegresinde kullanılmaktadır.
SSRS-250
- Variables: Değişken atayabileceğimiz bölümdür.
14 – SHARED DATA SOURCES – PAYLAŞILAN VERİ KAYNAKLARI:
Aynı Sql serverdaki veritabanını kullanarak birden fazla rapor yapılmaya başlandığında, her yeni raporu oluştururken mutlaka Data Source – Veri kaynağını tanımalamak zorundayız. Her defasında bu zahmete katlanmak yerine, sürekli kullanacağımız veri kaynağını Shared Data Source yaparsak, bir sonraki raporlarda hazır bir şekilde veri kaynağını seçebiliriz.
Report Builder tarafında data sourcelar shared yapılamamaktadır. Shared data source yapmanın iki yöntemi vardır;
- Report Manager – New Data Source
- VS Data Tools – Datasets – Convert to shared data souce
Report Manager web sitesini açıyoruz. Üst menüde bulunan “New Data Source”a tıklıyoruz.
SSRS-251
Açılan ekranda Data source’a bir isim veriyoruz, açıklama alanına daha sonra hatırlanması kolay bir açıklama yazılabilir.
Data Source Type varsayılan olarak Sql Server olarak gelmektedir.
SSRS-252
Connection string bölümünü elle yazmamız gerekiyor. Hata yapmamak için, daha önce oluşturduğumuz bir data source’daki connection string cümlesini kopyalayıp buraya yapıştırıyoruz.
SSRS-253
Connection string alanına yapıştırıyoruz.
SSRS-254
Data source için yetkilendirmeyi de yaptıktan sonra “Test Connection” ile kontrol ediyoruz.
SSRS-255
Ana ekrana shared data source’umuz geldi. Shared data sourcelar için bir klasör oluşturulup, bu klasörde tutulamaları daha iyi olacaktır.
SSRS-256
Report builder’da Shared Data Source’u nasıl kullanacağız buna bakalım. Report Manager’daki Report Builder kısayoluna tıklıyoruz.
New Report diyerek yeni bir rapor oluşturalım.
Create a new dataset diyerek ilk ekranı geçelim.
Data Source Connections ekranında New diyerek yeni bir data source oluşturuyorduk, şimdi “Browse” diyerek Shared Data Source’umuzu seçeceğiz. Browse butonuna tıklıyoruz.
SSRS-257
OrtakVeriKaynagi adındaki data source’umuzu seçip Ok diyoruz. Shared data source nasıl kullanılır görmüş olduk.
SSRS-258
VS Data Tools tarafında ise, Datasource altındaki veri kaynağının üzerinde sağ tıklayarak Convert To Shared Data Source dediğimizde, dataseti Shared Data Set’e çevirebilmek mümkündür.
SSRS-259
Shared datasource un Solution Explorer’da “Shared Data Sources” klasörüne otomatik olarak eklenmektedir.
SSRS-260
15 – SHARED DATA SETS – PAYLAŞILAN VERİ SETLERİ:
Reporting Service üzerinde veri kaynakları paylaşıldığı gibi, veri setleri de paylaşılabilmektedir. Daha önce oluşturduğunuz bir verisetini, sonradan da kullanmak isteyebilirsiniz, özellikle karmaşık sorgular içeren veri setlerinin tekrar oluşturulması büyük bir vakit kaybına sebep olacaktır. Tekrardan karmaşık bir veriseti hazırlanmasında oluşabilecek hataların önüne Shared Datasets lle geçebilirsiniz.
Shared Datasetler nasıl oluşturulur, nasıl kullanılır inceleyelim.
İlk önce Shared datasetlerimiz için Report Manager’da bir klasör oluştralım, adına da Paylaşılan Verisetleri diyelim. Report Manager üst menüde “New Folder”a tıklıyoruz.
SSRS-261
Paylaşılan Verisetleri diye klasöre isim veriyoruz.
SSRS-262
Klasörü oluşturduktan sonra, Report Manager – Report Builder programını açıyoruz.
New Report’un altında “New Dataset”e tıklıyoruz. Daha önceden oluşturduğumuz Shared Data Source otomatik olarak gelmiş durumda. Create diyerek devam ediyoruz.
SSRS-263
Query ekranında Product ve ProductCategory tablolarından alanları aşağıdaki şekildeki seçtikten sonra, Run Query ile sorguyu çalıştırıp kontrol ediyoruz.
SSRS-264
Sorguyu kontrol ettikten sonra, verisetini Paylaşılan Verisetleri klasörüne kaydediyoruz.
SSRS-265
Kaydettikten sonra Report Builder’ı kapatıyoruz. Shared Dataseti oluşturduk. Şimdi Report Builder’ı açıyoruz, yeni bir rapor oluşturacağız.
New Report – Table or Matrix Wizard
Choose a dataset ekranında “Choose an existing dataset in this report or a shared dataset” seçeneğini işaretleyip “Browse” butonuna tıklıyoruz.
SSRS-266
Açılan pencerede Paylaşılan Verisetleri klasörüne gidiyoruz ve Shared Datasetimiz olan “UrunKategoriVeriseti”ni seçiyoruz.
SSRS-267
Verisetinin ikonunun yanında yukarı doğru bakan bir ok işareti oluştu, bunun anlamı bu verisetinin paylaşılan bir veriseti olduğunu belirtmektedir. Next ile devam ediyoruz.
SSRS-268
Alanları aşağıdaki gibi düzenledikten sonra, Next ile devam ediyoruz.
SSRS-269
Choose a layout kısmını olduğu gibi bırakıyoruz.
Choose a style’den herhangi bir tasarımı seçip Finish ile sihirbazı tamamlıyoruz.
Rapor hazırlandı, Shared Dataset olan UrunKategoriVeriseti geldi. Shared Dataset’in içinde datasource gömülü olduğundan, report data – Datasource kısmına veri kaynağını eklemeye gerek kalmadı.
SSRS-270
VS Data Tools ile Shared Dataset ise Datasets klasöründe ilgili dataset’e sağ tıklayıp, Convert to shared dataset seçeneği ile olmaktadır.
SSRS-271
Shared dataset, Solution Explorer’da Shared Datasets klasöründe otomatik olarak oluştu, projeyi build – deploy ettiğimizde Report manager tarafına da otomatik olarak yüklenmiş olacaktır.
SSRS-272
Bir raporun birden çok versiyonları yapılacak ise Shared Dataset ile ne kadar kolay olacağını görmüş olduk.
16 – REPORT MANAGER WEB SITE YÖNETİMİ:
Reporting Service’in görsel olarak sunulduğu yer Report Manager Web Site’dır. Kurulumda otomatik olarak kurulan, sadece configuration manager’dan linkini öğrenip kullanmaya başlıyoruz. Şekil SSRS-18’de Report Manager Url’sine nasıl bakılır görmüştük. Report Manager nasıl yönetilir, Report Manager’da neler yapabiliriz, şimdi bunlara bakacağız.
16 – 1 Raporların Düzenlenmesi:
Report manager da klasörler açabilir, bu klasörlerin içlerini de istediğiniz kadar klasör açıp düzenleyebilirsiniz. Klasörler halinde çalışmak departmanlar arası görmelerini istemediğiniz bölümlerin raporlarını rahatlıkla yönetebilme imkanı sunar.
New Folder’dan yeni bir klasör oluştuyoruz.
SSRS-273
Departmanlar arasında yetkiler vereceğimden, klasörlere departman isimlerini örnek olarak veriyoruz.
SSRS-274
Pazarlama isminde bir klasör daha açıyoruz.
Mevcut bir raporu bu klasörlere taşıyabiliriz. Bunun için raporun üzerine geldiğimizde Open Menu penceresi aktif olacak. Menüye tıklayarak “Move” diyoruz.
SSRS-275
Gelen ekranda hangi klasöre taşıyacağımı belirtip Ok diyoruz.
SSRS-276
Pazarlama klasörüne gidip kontrol ediyoruz.
SSRS-277
Satış raporu Pazarlama klasörünün altına kopyalanmış oldu.
16 – 2 Report Manager Güvenliği:
Reporting Service’in güzel taraflarından biride Active Directory ve Exchange uyumlu olmasıdır. Microsoft’un kendi programları arasındaki uyumluluk burada da kendini göstermekte. İlk Report Manager’ı açtığınızda lokal bir notebooka kurduğunuzdan sadece BUILTIN\Administrators kullanıcılarını ekler. Site Settings – Securty kısmında sadece bu kullanıcının yani bu grubu görürsünüz.
Hatta ilk Report Manager ana ekranında Report Builder gözükmez, size full yetkiler vermez. Lokal admin olarak kendi kullanıcınıza yetki verebilmeniz için Site settings – Security kısmından lokaldeki kullanıcı adınızı System Administrator olarak eklemelisiniz.
SSRS-278
Raporlara kimlerin erişmesini istiyorsanız, Open Menu seçeneğinden Security kısmından kullanıcıları seçebilirsiniz. Fakat bu zor olan yöntemdir. Her rapor için tek tek uğraşmanız gerekir. Departman bazında klasörler yapmıştık, klasör bazında yetkilendirme verirseniz, daha az zaman harcamış olursunuz. Tek tek her rapor yetkisi uğraşmak yerine bir ana klasörün yetkisiyle uğraşmak daha kolaydır.
Report Manager’ın ana sayfasına kullanıcıların erişmesi için ilk önce Home konumundayken “Folder Settings”e gelip istenen kullanıcıya yetki vermemiz gerekiyor, aksi takdirde kullanıcı Report Manager’a girdiğinde hata alır. Direk ilgili klasöre de yetki verdiğiniz zaman, son kullanıcıya o klasörün linkini tam olarak göndermeniz gerekmektedir.
SSRS-279
Kendi kullanıcımda full yetkiler var, sadece raporları görüntülemesini istediğiniz kullanıcılara “Browser” yetkisi verip kullanıcı açmanız gerekmektedir. “New Role Assignment” ile yeni kullanıcıya yetki veriyoruz. Not: Yeni kullanıcı açmıyoruz, domain veya lokaldeki mevcut kullanıcıya yetki verilmektedir. Reporting Service yeni bir kullanıcı açmaz.
SSRS-280
Role Assigment ekranında ister kullanıcı ister grup ismini verebilirsiniz. Active Directory bulunan bir ortamda, kullanıcı isimlerini ve grupları kendisi algılamaktadır.
Lokal bir pc de, daha önceden oluşturulmuş bir kullanıcı olması gerekmektedir. Rapor isminde bir kullanıcıya Browser yetkisi vererek oluşturmaya çalışalım.
SSRS-281
Ok dediğimizde aşağıdaki hatayı verecektir, çünkü bu pc de böyle bir kullanıcı mevcut değildir.
SSRS-282
Bilgisayarın yönet kısmından, Rapor isminde lokal bir kullanıcı açarak tekrar deniyoruz.
SSRS-283
Lokalde önceden açtığım kullanıcıyı kabul etti. Domain ortamında da varolmayan bir kullanıcı veya grubu kabul etmeyecektir.
16 – 3 Rol Atamaları:
Rol atamaları tüm klasörlerin ve ana klasörün Folder Settings kısmında bulunmaktadır. Ana klasördeki ilk yetkiler ne ise, daha sonra açılan klasördeki yetkilerde aynısı olur. Yani üstten – alta yetki ataması olmaktadır.
Yeni rol ataması dediğimizde karşımıza 5 farklı rol çıkıyor, kısaca bunları tanıyalım;
- Browser: En sık kullanacağınız roldür, sadece raporu görüntüleme yetkisi verir. Bu role sahip bir kullanıcı rapora müdahale edemez.
- Content Manager: En kapsamlı roldür, bu role sahip kullanıcı Report Manager’ı yönetmek yetkisine sahip oluır.
- My Reports: My Reports klasörü altında kendi raporlarını oluşturup ve yönetebilme yetkisine sahip olan bir roldür, departmanlar içinde rapor oluşturmayı öğrenen kullanıcılara verilebilecek bir roldür.
- Publisher: Report serverda raporları yayınlama hakkına sahip olan roldür.
- Report Builder: Rapor oluşturma ve açıklamaları görme yetkisine sahip kullanıcıdır.
SSRS-284
Reporting Service’te yetkilendirme konusuna değindik, özetlersek, istediğimiz bir grubu veya kullanıcıya yetki verebiliyoruz. Raporlara erişecek kişi veya grupları tek tek yönetmek yerine, benzer raporları örnek olarak departman bazlı raporları bir klasörde toplayarak, o klasörün yetkilerini ayarlayarak, tek tek herbir raporun yetkisi ile uğraşmamıza gerek kalmayacak.
17 – BİLDİRİMLER – SUBSCRIPTIONS:
Raporların sunumu için, web arayüzünden görüntüleme, export edebilme ve subscriptions, tam olarak abonelikler olarak çevirisi olsada, bildirimler demek doğru olacaktır. Hazırladığınız bir raporu istenen tarih ve istenen parametlerle, son kullanıcılara mail olarak veya dosya paylaşımı olarak bildirim yapmasına subscription denmektedir.
Mail bildirimi ile gönderim yapabilmek için, öncelikle Reporting Service kurulumunda anlattığımız şekil SSRS-19 daki Configuration Manager – E-mail Settings bölümündeki gibi ayarları tamamlamış olmamız gerekmektedir. Bir smtp sunucusuna ihtiyaç duymaktadır. Reporting Service Microsoft Exchange sürümleri ile sorunsuz çalışmaktadır.
Çoğu zaman periyodik raporlara kullanıcılar bakmayacaktır, sürekli aynı raporu almak zor geleceğinden, belli bir süre sonra Report manager web site arayüzü unutulur. Mail bildirimleri mailin gövde kısmına gömülü olarak geldiğinden, mail açan kişinin maili görmeme gibi bir şansı yoktur. Bu yüzden mail bildirimleri çok kullanacağınız bir özellik olacaktır.
Bir rapor mail olarak nasıl gönderilir, şimdi buna bakalım.
Raporun menü kısmından Subscription bölümüne giriyoruz.
SSRS-285
Karşımıza mail sayfası gibi bir ekran geliyor. Delivered by kısmında bu raporu mail mi yoksa File Share – Dosya paylaşımı olarak gönderilmesini belirttiğimiz alan.
To – Cc –Bcc, mail programlarından bildiğiniz alanlar. Kime ve bilgi alanlarını dolduruyoruz.
Reply-To – gelen bu maili reply dediğimizde hangi adreslere reply edilmesini istiyorsak ilgili mail adreslerini bu alana yazıyoruz.
Subject – Konu kısmında @ReportName – Rapor adını otomatik olarak getiri ve @ExecutionTime – Rapor alınma saatini konu başlığına varsayılan olarak getirmektedir. Konu kısmı isteğe değiştirilebilir ve parametre alabilmektedir.
Piority – Raporun önceliği var ise, önemli bir rapor ise piority high yapılabilir.
Comment – Bu kısma yazacağınız açıklamalar, raporun üzerinde blgi olarak gelecektir.
SSRS-286
Mailin ne zaman ve hangi periyodlarla gideceğini belirlemek için Select Schedule butonuna tıklıyoruz.
Report Manager Home sayfasında bir shared schedule oluştursaydık, On a shared schedule olarak seçilebilecekti.
Schedule Details ekranında, Saatlik, günlük, haftalık, aylık ve bir kereliğine mail gönderimi için takvimleme oluşturabilirsiniz.
Haftanın her günü saat 08:00’de raporu mail olarak göndermesini ayarlayarak, Ok’e basıyoruz.
SSRS-287
Tekrardan Report Delivery Options’a geldiğimizde, eğer raporda bir veya birden fazla parametre var ise, mailin hangi parametreye göre gideceğini belirtmemiz gerekmektedir.
SSRS-288
Parametreyide belirttikten sonra Ok ile aboneliği kaydediyoruz. Kayıt edilen bildirimler, Report Manager ana sayfasında “My Subscriptions” bölümünde tutulmaktadır. Buraya giderek, mail bildirimlerininb son durumuna bakabilir ve bildirimleri tekrardan düzenleyebilirsiniz.
SSRS-289
Mail gidecek olan raporlar listelenmiş durumda.
SSRS-290
Not: Subscriptionlar kullanıcı bazlıdır. Hangi kullanıcı yeni bir tanım yaptı ise sadece onun “My Subscription” kısmında görülür. Subscribe yetkisi olan kullanıcılar mail tanımları yaptıkları zaman, bu tanımlar diğer kullanıcılar etkilemez.
Bu makalede Reporting Service’in kurulum aşamalarından, raporların hazırlanması, görüntülenmesi ve daha birçok konuyu incelemiş olduk. Genel olarak raporlamalar excel programınd yapılmakta ve raporların hazırlanması saatler sürmektedir, ham veriyi excelde işlemek ciddi anlamda işçilik gerektirdiğinden, her defasında aynı işlemler yapılmaktadır. Reporting Service ile rapor hazırlama süreci biraz uzun sürsede, daha sonra size sağlayacağı fayda çok daha fazladır.
Makale biraz uzun sürdüğünden bazı konulara değinemedik, daha sonraki Reporting Service makalelerinde; Custom kod kullanımı, grafikler, sparklinelar, databarlar, indikatörler ve göstergeleri işleyeceğiz. Sorularınız olması durumunda benimle irtibata geçebilirsiniz.