Forum

Reporting Service -...
 
Bildirimler
Hepsini Temizle

Reporting Service - Rapor Dizaynında Sıralama Yapma

3 Yazılar
1 Üyeler
0 Reactions
1,822 Görüntüleme
(@MetehanOzdogan)
Gönderiler: 26
Eminent Member
Konu başlatıcı
 

Merhabalar,

Yazılan makaleler araştırmalar ile Reporting service'e basit birşekilde giriş yaptım. Şimdilik herşey yolunda gidiyor ama rapor dizaynında sıralama yaptıramıyorum. Sorgum şu şekilde;

------------------------------------------- 

SELECT     trInvoiceHeader.StoreCode AS MagazaKodu, cdCurrAccDesc.CurrAccDescription AS Magaza, trInvoiceHeader.InvoiceNumber AS FaturaNo,
            trInvoiceHeader.InvoiceDate AS FaturaTarihi
                     
                      FROM         trInvoiceHeader INNER JOIN
                      cdCurrAccDesc ON trInvoiceHeader.StoreCode = cdCurrAccDesc.CurrAccCode
WHERE cdCurrAccDesc.CurrAccTypeCode = 5
GROUP BY cdCurrAccDesc.CurrAccDescription, trInvoiceHeader.StoreCode,trInvoiceHeader.InvoiceDate,
                      trInvoiceHeader.InvoiceDate,  trInvoiceHeader.InvoiceNumber,
                      trInvoiceHeader.ProcessCode, trInvoiceHeader.DocCurrencyCode,cdCurrAccDesc.LangCode
HAVING      (cdCurrAccDesc.LangCode = N'TR')  
                      AND (CONVERT(DATE, trInvoiceHeader.InvoiceDate) = CONVERT(Date, GETDATE()))  AND
                      (cdCurrAccDesc.LangCode = N'tr')  AND (trInvoiceHeader.ProcessCode IN ('WS', 'R'))

 

---------------------

 

Bu sorgu ile günün kesilen toptan ve perakende faturaları karşıma management studioda şu şekilde geliyor. (başlıkta ki SAY(FaturaNo) değil tabi ki sadece örnekleme için ekledim.)

 

 

 Yapacağım raporda gün içerisinde lokasyonun kestiği fatura sayısını saydırmam gerekiyor. Bunu da COUNT ile Reporting de yaptırıyorum.

Tablix de eğer hiçbirşeyi ellemezsem standart şekilde tablo oluşturursam (yukarıda ki sorgu ile) Mağaza adlarına  (kodu tablix de kullanmıyorum) göre sıralıyor DEĞER kısmına attığım FaturaNo kısmını  da ise COUNT / SAY yaptırdığımda

Sonuç şu oluyor:

 

 

İş buraya kadar basit ve sıkıntısız. Ta ki sıralamayı FaturaNo sütununda Azalan yapmak istediğimde işler karışıyor.  Yani benim istediğim sıralama;

 


 

 

 Tablix özelliklerinde SIRALAMA da şunu yapıyorum olmuyor;

 

Mutlaka kaçırdığım bir nokta var ve yardımlarınızı bekliyorum.

Not: Sıralamayı SQL olarak da yapabilirsem olur. Ama aynı lokasyona ait ft numaralrını toplayıp nasıl ORDER edebilirim bilmiyorum.

 

 
Gönderildi : 21/03/2014 18:24

(@MetehanOzdogan)
Gönderiler: 26
Eminent Member
Konu başlatıcı
 

Cevabınız için teşekkürler,

Ama şöyle bir durum var, sql içerisinde ORDER dersem neye göre sıralayacak? Fatura No alanını rapor dizaynından COUNT ettiriyorum. Yani lokasyon adı altında kaçtane fatura varsa adetini say mantığında.

Şöyle özetlersem daha doğru olacak; A1 lokasyon 1-10,1-11,1-15 numaralı faturaları kesmiş B1 lokasyon 1-12,1-17, C1 lokasyon 4-R-122,4-R-127 numaralı faturaları kesmiş. Şimdi ben bunu direkt olarak sırala dersem komutlarda mantık hatası olacak. Benim için mühim olan X lokasyon kaç fatura kesmiş yani faturanın sayısı.

Eklediğim imajda gördüğünüz gibi Z > A istiyorum yani en fazla değere sahip olandan küçüğe doğru sıralanmalı. Excelde pivot kullanıyorsanız eğer bu bahsettiğim işlem çok ama çok basit. Ama SSRS de ki rapor dizaynında bunu yapamıyorum. Bulabildiğim ayarlar zaten bunlar, onlar da olmuyor.

 
Gönderildi : 22/03/2014 00:47

(@MetehanOzdogan)
Gönderiler: 26
Eminent Member
Konu başlatıcı
 

FaturaNo kısmını SUM diyemiyorum çünkü fatura numaralarım sayısal değil. 1-R-4-251 veya 1-WS-5411 gibi rakamlar olabiliyor. Topla dediğim zaman doğal olarak hata veriyor.

mevcut alanın ifadesi şu: =count(Fields!FaturaNo.Value)

Management Studio ve SQL ingilizce ama rapor dizaynı yaptığım ekran Türkçe (Report Builder v 3)

 Sizin yaptığınız sorguyu kendime şu şekilde uyarladım;

 

 
SELECT     trInvoiceHeader.StoreCode AS MagazaKodu, cdCurrAccDesc.CurrAccDescription AS Magaza, ROW_NUMBER() OVER (ORDER BY trInvoiceHeader.InvoiceNumber desc) AS SiraNo,             trInvoiceHeader.InvoiceDate AS FaturaTarihi
                     
                      FROM         trInvoiceHeader INNER JOIN
                      cdCurrAccDesc ON trInvoiceHeader.StoreCode = cdCurrAccDesc.CurrAccCode
WHERE cdCurrAccDesc.CurrAccTypeCode = 5
GROUP BY cdCurrAccDesc.CurrAccDescription, trInvoiceHeader.StoreCode,trInvoiceHeader.InvoiceDate,
                      trInvoiceHeader.InvoiceDate,  trInvoiceHeader.InvoiceNumber,
                      trInvoiceHeader.ProcessCode, trInvoiceHeader.DocCurrencyCode,cdCurrAccDesc.LangCode
HAVING      (cdCurrAccDesc.LangCode = N'TR')  
                      AND (CONVERT(DATE, trInvoiceHeader.InvoiceDate) = CONVERT(Date, GETDATE()))  AND
                      (cdCurrAccDesc.LangCode = N'tr')  AND (trInvoiceHeader.ProcessCode IN ('WS', 'R'))
                      
ORDER BY SiraNo desc
SELECT     trInvoiceHeader.StoreCode AS MagazaKodu, cdCurrAccDesc.CurrAccDescription AS Magaza, ROW_NUMBER() OVER (ORDER BY trInvoiceHeader.InvoiceNumber desc) AS SiraNo,             trInvoiceHeader.InvoiceDate AS FaturaTarihi
                     
                      FROM         trInvoiceHeader INNER JOIN
                      cdCurrAccDesc ON trInvoiceHeader.StoreCode = cdCurrAccDesc.CurrAccCode
WHERE cdCurrAccDesc.CurrAccTypeCode = 5
GROUP BY cdCurrAccDesc.CurrAccDescription, trInvoiceHeader.StoreCode,trInvoiceHeader.InvoiceDate,
                      trInvoiceHeader.InvoiceDate,  trInvoiceHeader.InvoiceNumber,
                      trInvoiceHeader.ProcessCode, trInvoiceHeader.DocCurrencyCode,cdCurrAccDesc.LangCode
HAVING      (cdCurrAccDesc.LangCode = N'TR')  
                      AND (CONVERT(DATE, trInvoiceHeader.InvoiceDate) = CONVERT(Date, GETDATE()))  AND
                      (cdCurrAccDesc.LangCode = N'tr')  AND (trInvoiceHeader.ProcessCode IN ('WS', 'R'))
                      
ORDER BY SiraNo desc

 

 

Bu sorgunun çıktısı ise;

 MagazaKodu    Magaza          SiraNo    FaturaTarihi
MAG1              Magaza Adı 1     4         2014-03-22
MAG1              Magaza Adı 1     3         2014-03-22
MAG1              Magaza Adı 1     2         2014-03-22
MAG1              Magaza Adı 1     1         2014-03-22

 

22 Mart tarihinde ilgili mağazanın 4 adet farklı fatura numarası olduğu için hepsine satır numarası verip sıralıyor. Bunu eğer SUM dersem 10 gösterecek yanlış. Report builder içinde MAX dersem 4 gösterecek ama zaten sıralayamıyorum. Yukarıda ki sorguyu sadece tek satır mağaza kodu ve 4 yazacak hale getirebilir miyiz? Belki işin içinden o şekilde çıkılabilir.

 
Gönderildi : 22/03/2014 12:26

Paylaş: