2015-09-03 26 views
5

İki Tablix (tablo) ve bir veri kümem var. Onlar benim raporunda bu veri kümesiRDLC Raporu - Hata Rownumber() filtre kullanılamaz

Serial No. |  Name  
______________|________________ 
    SN0003  |  Beckham 
    SN0005  |  Henry 
    SN0012  |  Rooney 
    SN0119  |  Ji Sung 
    SN0200  |  Gerrard 

ile sınırlama vardır, ben "Buttom kadar" önce Aşağıda gibi görünecektir iki tablix ...

(O yönettiği "Soldan Sağa" bölmek gerekir)

Serial No. |  Name  || Serial No. | Name 
______________|________________ || _______________|______________ 
    SN0003  |  Beckham  ||  SN0005  | Henry   
    SN0012  |  Rooney  ||  SN0119  | Ji Sung 
    SN0200  |  Gerrard  ||    | 

Sol tablo

Bu FilterExpression kullanımını düşünüyorum Tablix1 ve Sağ tablo Tablix2

olduğunu her tablix için.

 = RowNumber(Nothing) mod 2 = 0 
Tablix1 (Sol tablo) Tablix2 için

 = RowNumber(Nothing) mod 2 = 1 

(Sağ tablo)

için

Ama bu mesaj hata var ...

 "A FilterExpression for tablix ‘Tablix1’ uses the RowNumber function. 
     RowNumber cannot be used in filters." 

O kullanamaz oluyor Filtre içinde rownumber. Ne yapmalıyım? Veri kümesini düzenlemediğimde bu mümkün mü?

cevap

5

En sık kullandığınız veri kümesini düzenlemek mümkün mü? Sen Sonra döndü veri kümesi

Serial No. |  Name  | RowNum 
______________|________________|__________ 
    SN0003  |  Beckham | 1 
    SN0005  |  Henry  | 2 
    SN0012  |  Rooney | 3 
    SN0119  |  Ji Sung | 4 
    SN0200  |  Gerrard | 5 

gibi görünecektir

SELECT 
    ..., 
    ROW_NUMBER() OVER(ORDER BY SerialNo ASC) AS RowNum, 
    ... 

kullanarak bu bir ROW_NUMBER alan ekleyebilir Ve sonra RowNum mod 2 = 0

üzerinde filtreyi yapabilirsiniz Düzen

Alternatif olarak, altta yatan veri kümesini değiştiremezseniz, RunningValue kullanarak akıllı olabilirsiniz ve CountDistinct.

CountDistinct her sıranın (böylece, genel olarak 1 varsayarak Seri Numaraları benzersiz)

RunningValue bir her bir satır boyunca sen değerlerinin artan bir toplam verecek için size veri kümesi içinde eşleşen satır sayısını verecektir tablo ... ve bununla birlikte tüm “CountDistincts” ı ekleyebilirsiniz.

tablonuzun Satır Görünürlük Tablix2 için Tablix1

=(RunningValue(CountDistinct(Fields!SerialNo.Value), Sum, "DataSetName") mod 2) = 0 

için

gibi bir şey olması Set

=(RunningValue(CountDistinct(Fields!SerialNo.Value), Sum, "DataSetName") mod 2) = 1 
+0

Yanıtınız için teşekkür ederiz. Size "Üzgünüm" deyin. Ekibim, herhangi bir veri kümesini düzenlemek istemiyor çünkü projenin başka bir bölümünde bir etkisi var. Veritabanını düzenlemeksizin bu sorunu çözersem mümkün olabilir mi? –

+0

Temel SQL – Jonnus

+0

düzenleme değil çözüm vermek için düzenlenmiş Çok teşekkür ederim. Çalışıyor . Yeni bir veritabamı hazırladım ve yeni bir veritabanın eklendiği tüm verileri seq_no sütununa kopyaladım. Teşekkürler. –

0

[Çözüldü] sayesinde Jonas

Bu benim Datatable . Mağaza seq_no için yeni sütun oluşturdum.Sağ tıklama ile > sütun ekleyin ve adı "SEQ_NO" değiştirmek enter image description here

Sonraki adım, ben fi

   Dim dt As dsProductionControl.TL_PRODUCTION_SCHEDULE_DETAILSDataTable = DsProductionControl.TL_PRODUCTION_SCHEDULE_DETAILS 

       For i As Integer = 1 To dt.Rows.Count 
        dt.Rows(i).Item("SEQ_NO") = i 
       Next i 

ile codeing Sütunu SEQ_NO bir değer ayarlamak Ve SEQ_NO tarafından raporun Tablix Filtre set

 =Fields!SEQ_NO.Value Mod 2 = 0 

Teşekkürler, yine Jonas.