Makale Özeti

Reporting services, özellikle SQL Server 2005 ile birlikte çok daha önem kazanan, özellikleri ve yetenekleri ile bir çok yazılım geliştiricinin dikkatini çeken ve artık bir çok kurumsal şirket tarafından aktif olarak kullanılan bir araçtır. Uzun zamandır RS ile ilgili birseyler yazmamıştım. Bu ve sonrasında gelecek makaleler ile daha canlı ve dinamik raporları nasıl yapabileceğimizi görelim.

Makale

Chart Çizimi

    RS'te chart çizimi oldukça kolaydır. Yalnızca hangi bilgiden nasıl, ne şekilde bir chart elde edebileceğimizi bilmeliyiz. Örneğin, zamansal kırılımlar, zamana gore degişim izleyen seriler söz konusu ise, line (çizgi) tipinde, bazı değerlerin büyüklüklerini karşılaştıracak isek, pie, bar gibi bir çok seçimiz mevcuttur.

     Biz Northwind veritabanından Categorylerin averaj fiyatlarını hesaplayalım ve bu averaj fiyatlara göre, categorylerin büyüklüklerine bakalım. Sorgumuz kolay bir sorgu olacak:

select categoryName,avg(UnitPrice) avgPrice
from categories inner join products
on categories.CategoryID = Products.CategoryID
group by categoryName

Bu sorgunun sonucu şu şekildedir:

Beverages 37.9791
Condiments 23.0625
Confections 25.1600
Dairy Products 28.7300
Grains/Cereals 20.2500
Meat/Poultry 54.0066
Produce 32.3700
Seafood 20.6825

Şimdi gelin bu sonucu bir chart'a ekleyelim. Öncelikle yapmanız gereken raporumuzda yeni bir dataset yaratıp bu datasete yukarıdaki query'i yazın. Bir kez çalıştırdığımızda fieldlar otomatik olarak eklenecektir. Raporu layout olarak açın ve bir chart ekleyin.

Chart'ı ekledikten sonra, ilgili fieldları gerekli yerlere koyun. Bizim örneğimizde categoryName "category fields" ve avgPrice "data fields" alanlarına gitmelidir. Bu durumda görüntümüz şu şekilde olacaktır.

Şimdi istediğiniz rapor stilini (şeklini seçin) ben örneğimde pie chart'ı seçerek görünümünü biraz degiştirdim ve aşağıdaki sonucu elde ettim.

 

Chart'ınıza biraz daha özellik katalım. Örnegin dilimlerimizin üzerlerine tutarlarını yazalım. Bunun için layout görünümünde chart'ı sağ tıklayın ve özellikler ekranını açın. Oradan  "Data" tabına geçin. "Values" kısmını editleyerek "Point Labels" tabına geçin ve "Show" u tickleyin. Aşagıdaki figür burdan alınmış bir screen-shot'ı göstermektedir.

    Bu işlemden sonra, dilimleriniz üzerinde değerleriniz de görüntülenecektir.

    Chart Üzerinden Alt Raporlara Dallanmak

    Beverages'ı gösteren dilimin değerini, görsel olarak büyüklüğünü görebiliyoruz degil mi? Ama detaylarında neler var acaba? Yani, beverages categorisindeki ürünlerin ayrıntıları neler? Bunun için elbette farklı bir rapor yapacağız ve bu rapora chartımız üzerinden erişeceğiz. Öncelikle, CategoryName adında parametre alan bir rapor yapalım. Bunun sorgusu şu şekilde olsun:

select productName,UnitPrice from categories inner join products
on categories.CategoryID = Products.CategoryID
where categoryName = @CategoryName

(paramere alan raporlar hakkında daha detaylı bilgi için daha önceki makalelerime buradan ve buradan bakabilirsiniz)

Rapora aşağıdaki gibi bir layout hazırlayalım.

Bu raporu tek başına çalıştırdığınızda sizden CategoryName parametresini isteyecektir. Buraya CategoryName yazarak elbette çalıştırabiliriz. Ama amacımız bir önceki raporda, chart dilimlerinden birine tıklandığında ilgili detayı açması. Öyleyse raporun çalıştığından emin olup bu raporu kaydedip kapatın. (adı SubReport.rdl olsun). Yukarıda yaptığımız pie charta geri dönelim. Tekrar sağ tık, "properties", "data","Values" kısmına edit ve oradan "Action" tabını seçin. Dilimlerden birine tıklandığında bir raporun açılmasını istediğimize göre, öyleyse yapmamız gereken "Jump To Report" secneğini secmek ve hangi rapor olduğunu belirlemek.

    Artık dilimlerden birini tıkladığımızda, az önce yaptığımız subreport.rdl açılacak. Peki ama CategoryName parametresine hangi değer gidecek? "Jump To Report" seçeneğinin yanında bulunan "parameters" butonuna tıklayın ve CategoryName parametresini aşağıdaki gibi set edin.

 Tüm pencerelerinizi onaylayarak kapatın.

 Dilimlerden Condiments'e tıklanarak ulaşılan detay raporumuzun son görüntüsü de şu şekilde:

Artık dinamik olarak bir rapordan baska bir rapora geçebileceğiniz, Chart'ın dilimleri üzerinden master-detay ilişkisi kurabileceğiniz bir rapor örneğiniz var. Dilerseniz raporları download edip inceleyebilirsiniz.

Bu bol resimli, oldukça açık anlatımlı bir makale oldu. Bir çok forumda ve mail listte karşılaştığım genel bir soru idi.

İyi çalışmalar.

Kivanc OZUOLMEZ

Örnek Raporlar