SQL Server Reporting Service Parametre Kullanımı

Merhaba arkadaşlar,

Bu yazımda SSRS’te parametre kullanarak rapor oluşturmaktan bahsetmek istedim. SSRS’e yeni başlayanlar için faydalı olabileceğini düşündüm :) 

Öncelikle her zamanki gibi AdventureWorks database ini kullandım. Sql serverda çalışanlar bilirler. Bu meşhur database i internetten indirip kurabilirsiniz. Exe yi çalıştırınca birden fazla adventureworks veritabanı lokal server a kurulur. Sonrasında çalışmalarınızda bu databaseleri  kullanabilirsiniz. 

Sql Server 2008 R2 Business Intelligence Development Studio’da yeni bir rapor oluşturarak işe başlayabiliriz. Raporda kullanılacak datasource tanımlanır. Burada aşağıdaki şekilde görüldüğü gibi edit diyerek işimizi kolaylaştırabiliriz.



Datasource tanımlandıktan sonra sGetParameters adında yeni bir dataset oluşturulup, kullanılacak parametrenin name ve value kısmını oluşturmak için text olarak sql sorgusu yazılabilir. Burada Table ya da Stored Procedure gibi query type lar da mevcuttur. Gerekliliğe göre istenilen tercih edilebilir. 


Parametre için kullanılacak datalar sağlandıktan sonra, kullanılacak parametre tanımlanır. Aşağıda görüldüğü gibi name ve prompt name verilir. Burada Prompt kısmına ekranda kullanıcının raporda göreceği şekilde parametre adı yazılır.
 

Parameter kısmında yapılması gereken sadece yukarıdaki gibi name verilmesi değildir. Parametrede görünecek dataların name ve value ları da tanımlanması gerekir. Bunun için de aşağıdaki gibi Available Values kısmında datanın okunacağı query tanımlanır. 



Burada dataset kısmına daha önceden oluşturduğunuz sGetParameters verilir. Bu query de iki tane kolon kullanmıştık. Bu kolonlardan Label field kısmına raporda görünmesi istenilen kolon yazılır. Burada Name verdik. Bu şekilde kullanıcı Product Category isimlerini listeden seçecek. Seçilen name leri datamızı alacağımız queryde kullanabilmemiz için Value field kısmında o kolonun ID sini tutabiliriz. Bu şekilde ID ile datanın geleceği query yi bağlayabiliriz.
Datayı alacağımız query yi de aşağıdaki şekilde yazdım. 

SELECT
PC.Name AS ProductCategoryName,
P.Name AS ProductName,
P.Color,
P.SellStartDate,
P.SellEndDate,
P.Style
FROM Production.Product P
INNER JOIN Production.ProductSubcategory PSC ON PSC.ProductSubcategoryID=P.ProductSubcategoryID
INNER JOIN Production.ProductCategory PC ON PC.ProductCategoryID=PSC.ProductCategoryID
WHERE PC.ProductCategoryID=@ProductCategoryID
ORDER BY 1

Bu query için de dataset tanımlamak gerekli. Bunun için de aşağıdaki şekilde dataset tanımladım.
 
Burada az önceki datasetten farklı olarak parametreyi almamız gerekecek. Bunun için de Parameters kısmından Parameter Name alanına datasette kullandığım parametre adını yazdım. Parameter Value kısmında ise daha önceden tanımlanan parametreler listenir. Buradan da tanımladığım parametreyi seçtim.



Raporda design kısmında da istenilen şekilde toolbox tan table oluşturarak gerekli kolonları sGetData datasetinden aldım.



Artık raporu çalıştırma vakti geldi :) Aşağıdaki şekilde raporun son halini görebilirsiniz.
 

Herkese kolay gelsin :)


0 yorum:

Yorum Gönder